问题:getimagesize()不适用于某些网址,尤其是重定向的网址。
我用Google搜索并检查了stackoverflow,但无济于事。
这是我在本地机器上看到的内容:
var_dump(getimagesize('http://gan.doubleclick.net/gan_impression?lid=41000000015155731&pubid=21000000000506299&lsrc=17'));
> Array
(
[0] => 120
[1] => 90
[2] => 2
[3] => width="120" height="90"
[bits] => 8
[channels] => 3
[mime] => image/jpeg
)
并在我的服务器上:
var_dump(getimagesize('http://gan.doubleclick.net/gan_impression?lid=41000000015155731&pubid=21000000000506299&lsrc=17'));
> bool(false)
我尝试过其他图片和网址,但效果很好。这个URL给了我一个问题。我也尝试了以下(在我的服务器上),这个 工作:
echo strlen(file_get_contents('http://gan.doubleclick.net/gan_impression?lid=41000000015155731&pubid=21000000000506299&lsrc=17'));
> 4829 // This number means it works
错误日志没有任何内容,我也没有其他提示。我猜它是需要在php.ini
中改变的东西答案 0 :(得分:3)
您的allow_url_fopen
文件中是否禁用PHP.ini
?
您可以修改PHP.ini
文件或改为使用cUrl
。
示例:
<?php
//Download content
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://gan.doubleclick.net/gan_impression?lid=41000000015155731&pubid=21000000000506299&lsrc=17');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$file_contents = curl_exec($ch);
curl_close($ch);
file_put_contents('file', $file_contents); //Put content in ./file
var_dump(getimagesize('file')); //Get image size
unlink('file'); //Remove the file
?>
答案 1 :(得分:2)
如果file_get_contents
有效,那么肯定fopen
可以正常工作
由于您有权限问题,Curl可能是最佳选择,但您也可以使用FastImage ..来阅读图片标题并获取信息而不是 < em>必须在本地保存整个文件
示例
$img = new FastImage("http://gan.doubleclick.net/gan_impression?lid=41000000015155731&pubid=21000000000506299&lsrc=17");
var_dump($img->getSize(),$img->getType());
输出
array (size=2)
0 => int 120
1 => int 90
string 'jpeg' (length=4)
答案 2 :(得分:1)
// fetch content to local
$content = file_get_contents($file_path);
$fetch_from_remote = file_put_contents($to_local_path, $content);
if($fetch_from_flag === FALSE){
// error
}
// defining vars to resize photo
$file_info = getimagesize($to_local_path);
答案 3 :(得分:1)
我有两个我能想到的选择:
1)将文件存入您的计算机(使用cURL或file_get_contents)并在那里应用您想要的任何处理
2)调用header(cURL库),检查status = 200,如果是,直接在那里应用该函数,如果其他http状态代码则遵循重定向或忽略该文件。