PHP getimagesize - 无法打开流。错误的请求

时间:2016-12-22 21:19:17

标签: php gd getimagesize

我收到以下错误:

  

getimagesize(https://static1.squarespace.com/static/570d03d02b8dde8b2642afca/570f74e87c65e4819dec6812/57272dbfb6aa606f78a5d8b5/1470397291105/4XTRYCK3.jpg):无法打开流:HTTP请求失败! HTTP / 1.1 400错误请求

我的浏览器中的图片打开没有问题。

有谁知道为什么会失败?

2 个答案:

答案 0 :(得分:4)

Squarespace拒绝用户代理标头不是网络浏览器的任何连接。这包括CURL和getimagesize。

您可以通过将此代码插入代码来设置用户代理标头:

ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)');

答案 1 :(得分:0)

就我而言(显然与基于其 URL 的 OP 不同)有两个问题。

第一个是我得到的 URL 是 HTTP,但浏览器会成功重定向到 HTTPS,而我的 getimagesize() 会因给定的错误而失败。我不得不将 URL 中的“http”替换为“https”。

$url = "http://test.com/file name.jpg";
$url = preg_replace('/^http:/', 'https:', $url);

第二个是我得到的 URL 中有一个空格。我必须将空格编码为 %20。

$url = (dirname($url) . '/'. rawurlencode(basename($url)));
Final URL: https://test.com/file%20name.jpg

通过这两个替换,对 getimagesize() 的调用成功。