PHP';s getimagesize未从URL检测图像

PHP';s getimagesize未从URL检测图像,php,getimagesize,Php,Getimagesize,我正在使用以下代码快速验证链接是否为图像 if (getimagesize($imageLink)) { } else { echo "notImage"; exit(); } 它几乎适用于所有情况(即,如果浏览器返回图像,则getimagesize将返回某些内容),但我发现有些情况下它不起作用-例如,对于此链接 这通常适用于路透社网站,我肯定还有一些其他网站,但我真的很难理解为什么会出现这个问题,因为浏览器会返回图像。我最初认为getimagesize需要明确说明文件的路径

我正在使用以下代码快速验证链接是否为图像

if (getimagesize($imageLink)) {
} else {
    echo "notImage";
    exit();
}
它几乎适用于所有情况(即,如果浏览器返回图像,则getimagesize将返回某些内容),但我发现有些情况下它不起作用-例如,对于此链接

这通常适用于路透社网站,我肯定还有一些其他网站,但我真的很难理解为什么会出现这个问题,因为浏览器会返回图像。我最初认为getimagesize需要明确说明文件的路径(例如,以.jpg、.png等结尾),但类似这样的链接也很好

如果您对getimagesize在第一个示例中不返回图像而在第二个示例中返回图像有任何想法,我将不胜感激。如果您对如何调整代码以解释reuters示例有任何建议,那将是非常棒的

按原样使用

<?php 
list($width, $height) = getimagesize("http://s4.reutersmedia.net/resources/r/?m=02&d=20160330&t=2&i=1128905435&w=&fh=545px&fw=&ll=&pl=&sq=&r=LYNXNPEC2T0YW"); 
$arr = array('h' => $height, 'w' => $width );
print_r($arr); //output - Array ( [h] => 545 [w] => 968 ) 
?>

使用它

 list($width, $height) = getimagesize('path_to_image');
确保:

  • 您可以在那里指定正确的映像路径
  • 该映像具有读取权限
  • Chmod图像定向至755
  • 还可以尝试使用
    $\u SERVER[“DOCUMENT\u ROOT”]
    作为path的前缀,这在您无法读取文件时有时会有所帮助


    参考:

    可能的副本:感谢链接Vedant。通读一遍,我想你是建议我在运行getimagesize之前先在本地下载图像?但出于安全原因,我希望在知道这是一张图片之前不要下载任何东西——这有意义吗?如果我没有正确理解这一点,请告诉我,但这不会为路透社链接返回任何内容?抱歉,这确实非常有效-非常感谢-我不知道为什么,但是对于这个URL,我传递给PHP的值在?m=02之后被修剪了。嗯