我有得到一个imgur链接,并获取使用简单的图像的高度和宽度代码:和getimagesize()在PHP中不工作7.1
list($width, $height) = getimagesize($link);
我运行PHP 7.1和一切工作很好,直到我使用了getimagesize()。当函数被调用时,它每次都返回false。然后我恢复到PHP 5.3并且代码立即工作。
我只是想问是否有一个原因getimagesize()在7.1停止工作?文档说PHP 7,所以我想我只是困惑。
我有得到一个imgur链接,并获取使用简单的图像的高度和宽度代码:和getimagesize()在PHP中不工作7.1
list($width, $height) = getimagesize($link);
我运行PHP 7.1和一切工作很好,直到我使用了getimagesize()。当函数被调用时,它每次都返回false。然后我恢复到PHP 5.3并且代码立即工作。
我只是想问是否有一个原因getimagesize()在7.1停止工作?文档说PHP 7,所以我想我只是困惑。
最好的猜测,$链接是一个网址,这意味着它需要php.ini中allow_url_fopen
是true
的和getimagesize检查它,你拥有它true
在PHP5的php.ini文件,并在false
PHP7的PHP .ini - 这会导致你描述的问题。替代方案,既PHP版本和两个php.ini设置兼容,应该是:
$tmp=tmpfile();
$file=stream_get_meta_data($tmp)['uri'];
$ch=curl_init($link);
curl_setopt_array($ch,array(
CURLOPT_FILE=>$file,
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指出,原来提出的解决办法的代码会给出错误的结果。更新的代码应该给出正确的结果。
编辑:修正了一些密码破译的拼写错误(在变量名)
OP是否需要维度,并且以字节为单位给出了大小的答案? (PHP函数名称有点误导......) – marekful
@marekful圣洁**是的,你是对的,谢谢。现在删除了建议的解决方法。 – hanshenrik
更新了新的解决方法。 – hanshenrik
你确定它不是'名单()'是不是失败? http://php.net/manual/en/function.list.php说:*“**警告**在PHP 5中,list()指定从最右边参数开始的值。在PHP 7中,list( )以最左边的参数开始。“*所以这也适用于7.1。也请参阅更新日志。 –
这很奇怪...它应该工作!哈哈我是戈纳测试,马上 –
啊是的列表()会更有意义哈哈很不错的发现弗雷德! –