我收到以下错误:
getimagesize(https://static1.squarespace.com/static/570d03d02b8dde8b2642afca/570f74e87c65e4819dec6812/57272dbfb6aa606f78a5d8b5/1470397291105/4XTRYCK3.jpg):无法打开流:HTTP请求失败! HTTP / 1.1 400错误请求
我的浏览器中的图片打开没有问题。
有谁知道为什么会失败?
答案 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() 的调用成功。