Ваш пустой аргумент CURLOPT_ENCODING вызывает проблему. Если вы не хотите использовать gzip / deflate, просто опустите заголовок.
Я также вижу, что вы определяете кодировку как в вашем curl_setopt (), так и в массиве HTTP_HEADER
.
Вы должны использовать собственные команды curl_setopt()
, когда это возможно. CURLOPT_USERAGENT
- это тот, который вы можете переместить из массива HTTP_HEADER
.
Но, как упоминал Эндрю Маршалл, вы не должны заниматься очисткой экрана; тем более что у них есть API.
EDIT
Вот пример сценария, который я использую:
<?php
$v = Array(
'Proxy-Connection: Close',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1017.2 Safari/535.19',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: en-US,en;q=0.8',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Cookie: __qca=blabla',
'Connection: Close'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, trim("http://stackoverflow.com/questions/tagged/java"));
//curl_setopt($ch, CURLOPT_PORT, 80); //ignore explicit setting of port 80
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
//curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_HTTPHEADER, $v);
curl_setopt($ch, CURLOPT_VERBOSE, true);
echo curl_exec($ch);
?>
Теперь я запускаю это через командную строку, но чистый эффект тот же. Я удалил Accept-Encoding в массиве $v
просто, чтобы получить несжатый вывод.
Единственное, что мы не установили, это ваши версии PHP и libcurl. Для меня это PHP 5.3.2 с libcurl 7.12.1. Это может быть важно. Вы можете найти свою версию libcurl либо с помощью php -i | grep -i curl
в командной строке, либо с помощью phpinfo()
через веб-скрипт на вашем сервере.