getimagesize()在PHP 7.1中不起作用

getimagesize()在PHP 7.1中不起作用,php,php-7.1,getimagesize,Php,Php 7.1,Getimagesize,我有一个代码,可以获取imgur链接,并使用简单的 list($width, $height) = getimagesize($link); 我运行的是PHP7.1,在使用getimagesize之前,一切都很好。调用函数时,每次都返回false。然后我返回到PHP5.3,代码立即运行 我只是想问getimagesize在7.1中停止工作是否有原因?文档中说的是php7,所以我想我只是有点困惑。最佳猜测,$link是一个url,这意味着它需要PHP.ini设置allow_url_fopen为t

我有一个代码,可以获取imgur链接,并使用简单的

list($width, $height) = getimagesize($link);
我运行的是PHP7.1,在使用getimagesize之前,一切都很好。调用函数时,每次都返回false。然后我返回到PHP5.3,代码立即运行


我只是想问getimagesize在7.1中停止工作是否有原因?文档中说的是php7,所以我想我只是有点困惑。

最佳猜测,$link是一个url,这意味着它需要PHP.ini设置allow_url_fopen为true才能让getimagesize检查它,而在php5的PHP.ini中为true,在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所指出的,最初提出的解决方案代码将给出错误的结果。更新后的代码应给出正确的结果


编辑:修复了变量名中的一些代码错误

您确定列表没有失败吗?说明:警告在PHP5中,列表指定从最右边的参数开始的值。在PHP7中,列表以最左边的参数开始。所以这也适用于7.1。还可以看到变更日志。这很奇怪。。。它应该有用!哈哈,我马上就要测试了,是的,列表会更有意义哈哈,很高兴找到弗雷德!这是可能的,但是我尝试只转储getimagesize$链接,它返回NULL。这是正常的反应吗?那么检查$link。这也可能失败@Mac可能是路径问题和/或权限问题。也可以使用错误报告,但一定要检查列表手册,然后重试。OP不需要维度吗?您正在回答以字节为单位的大小?PHP函数名有点误导…@marekful holy**是的,你说得对,谢谢。暂时删除了提议的解决方法。OP的擅离职守或在评论和/或答案中未提及任何内容解决了此问题。“你一定喜欢沉默型吧?”弗雷德二世-给他点时间哈哈。据我们所知,他可能遇到紧急情况,然后回来tomorrow@hanshenrik我有,而且我相信有足够的时间重新测试/调试,让我们了解到底发生了什么。我看不到他们的互动,因为,更不用说你的答案被接受或他们以任何方式评论。时间只能告诉我猜测。