在中国,如果引用文件路径的 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