2017-07-22 29 views
-1

我有得到一个imgur链接,并获取使用简单的图像的高度和宽度代码:和getimagesize()在PHP中不工作7.1

list($width, $height) = getimagesize($link); 

我运行PHP 7.1和一切工作很好,直到我使用了getimagesize()。当函数被调用时,它每次都返回false。然后我恢复到PHP 5.3并且代码立即工作。

我只是想问是否有一个原因getimagesize()在7.1停止工作?文档说PHP 7,所以我想我只是困惑。

+0

你确定它不是'名单()'是不是失败? http://php.net/manual/en/function.list.php说:*“**警告**在PHP 5中,list()指定从最右边参数开始的值。在PHP 7中,list( )以最左边的参数开始。“*所以这也适用于7.1。也请参阅更新日志。 –

+0

这很奇怪...它应该工作!哈哈我是戈纳测试,马上 –

+1

啊是的列表()会更有意义哈哈很不错的发现弗雷德! –

回答

1

最好的猜测,$链接是一个网址,这意味着它需要php.ini中allow_url_fopentrue的和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指出,原来提出的解决办法的代码会给出错误的结果。更新的代码应该给出正确的结果。

编辑:修正了一些密码破译的拼写错误(在变量名)

+0

OP是否需要维度,并且以字节为单位给出了大小的答案? (PHP函数名称有点误导......) – marekful

+0

@marekful圣洁**是的,你是对的,谢谢。现在删除了建议的解决方法。 – hanshenrik

+0

更新了新的解决方法。 – hanshenrik