在中国,如果引用文件路径的 PHP 发生错误(PHP5.6 和 PHP7 的区别?php.ini 的区别?)
如果在getimagesize()函数的参数中传入的路径以/开头,例如/wp-content/uploads/2017/12/example-400×300.jpg,之前是可以通过的,但现在不再通过了。
以下是发生错误的环境
示例服务器
Php 7.0.18
应对方式
如果按照以下方式进行更改,问题将得到解决。
// 获取图片尺寸
list($width, $height, $type, $attr) = getimagesize($srcval[1]);
↓
// 去掉第一个斜杠
$img_path = ltrim($srcval[1], ‘/’);
// 获取图片尺寸
list($width, $height, $type, $attr) = getimagesize($img_path);
在example服务器2上,以下也是可以的。
/wp-content/uploads/2017/12/example400x300.jpg
Php5.6.32的CGI模式
对原因的推测
可能原因是由于PHP版本差异导致函数行为发生变化。
http://php.net/manual/ja/function.getimagesize.php
http://php.net/manual/ja/migration70.php
我大致查看了上述链接,但没有找到相关描述。
根据所提到的,可能是由于服务器配置的差异导致了不同的路径解释。
以下是调查结果:
例子服务器
包含路径 .:/opt/php-7.0.18/data/pear .:/opt/php-7.0.18/data/pear
示例2服务器 本地值 主值
包含路径 .:/usr/local/php/5.6/lib/php .:/usr/local/php/5.6/lib/php