我有一个代码可以获得一个imgur链接并使用简单的方法获取图像的高度和宽度:
list($width, $height) = getimagesize($link);
我运行的是PHP 7.1,一切正常,直到我使用getimagesize()。调用该函数时,它每次都返回false。然后我恢复到PHP 5.3并且代码立即工作。
我只是想问一下getimagesize()是否有理由在7.1中停止工作?文档说PHP 7所以我想我只是困惑。
答案 0 :(得分:2)
最佳猜测,$ link是一个网址,这意味着它需要php.ini设置allow_url_fopen
为true
,以便getimagesize对其进行检查,然后您将其设为true
在php5的php.ini中,以及php7的php.ini中的false
- 这将导致你所描述的问题。另一种兼容php版本和php.ini设置的替代方案是:
$tmp=tmpfile();
$file=stream_get_meta_data($tmp)['uri'];
$ch=curl_init($link);
curl_setopt_array($ch,array(
CURLOPT_FILE=>$tmp,
CURLOPT_ENCODING=>''
));
curl_exec($ch);
curl_close($ch);
list($width, $height) = getimagesize($file);
fclose($tmp); // << explicitly deletes the file, freeing up disk space etc~ - though php would do this automatically at the end of script execution anyway.
编辑:正如@marekful所指出的那样,原始提出的解决方法代码会给出错误的结果。更新的代码应该给出正确的结果。
编辑:修复了一些代码破坏错别字(在变量名中)