curl не возвращает заголовок длины содержимого - PullRequest
2 голосов
/ 02 мая 2010

Попытка получить размер файла изображения с помощью curl, но заголовок длины содержимого не возвращается:

$url ="http://www.collegefashion.net/wp-content/plugins/feed-comments-number/image.php?1263";
$fp = curl_init();
curl_setopt($fp, CURLOPT_NOBODY, true);
curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($fp, CURLOPT_FAILONERROR,1);
curl_setopt($fp, CURLOPT_REFERER,'');
curl_setopt($fp, CURLOPT_URL, $url);
curl_setopt($fp, CURLOPT_HEADER,1);
curl_setopt($fp, CURLOPT_USERAGENT,'Mozilla/5.0');
$body = curl_exec($fp);

var_dump ($ тела):

HTTP/1.1 200 OK
Date: Sun, 02 May 2010 02:50:20 GMT
Server: Apache/2.0.63 (CentOS)
X-Powered-By: W3 Total Cache/0.8.5.2
X-Pingback: http://www.collegefashion.net/xmlrpc.php
Cache-Control: no-cache, must-revalidate
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Content-Type: image/png

Это работает через SSH, хотя:

curl -i http://www.collegefashion.net/wp-content/plugins/feed-comments-number/image.php?1263
HTTP/1.1 200 OK
Date: Sun, 02 May 2010 03:38:43 GMT
Server: Apache/2.0.63 (CentOS)
X-Powered-By: W3 Total Cache/0.8.5.2
X-Pingback: http://www.collegefashion.net/xmlrpc.php
Cache-Control: no-cache, must-revalidate
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Content-Length: 347
Content-Type: image/png

Ответы [ 2 ]

1 голос
/ 03 мая 2010

CURLOPT_NOBODY делает запрос HEAD, в то время как ваша командная строка с -i является запросом GET ...

Если бы вы использовали -I с вашей версией командной строки, они были бы более похожи.

0 голосов
/ 02 мая 2010

Чек curl_getinfo():

$size = curl_getinfo($fp, CURLINFO_CONTENT_LENGTH_DOWNLOAD);

Выполнить после curl_exec().

Еще один вариант - установить CURLOPT_HEADER на false и просто сделать strlen($body) - игнорируйте это, я не заметил, что вы используете CURLOPT_NOBODY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...