Я столкнулся с действительно странным поведением (ошибка?) При использовании curl для загрузки сжатого gzip XML-файла из PHP. Сообщение об ошибке гласит:
Ошибка при обработке кодирования контента: задана неверная длина кода
Странная вещь, это происходит только на моей локальной машине при использовании curl из PHP. Запуск точно такого же сценария на моем сервере будет успешным, так же как и запуск curl.exe автономно на моем локальном компьютере (подробнее об используемых системах см. Ниже).
Это наводит меня на мысль, что это может быть ошибка в php_curl.dll (curl версия 7.36.0).
Может кто-то с подобной настройкой может подтвердить эту проблему?
Локальная настройка PHP (ошибка):
Удаленная настройка PHP (работает)
Локальный автономный локон (работы):
Из PHP
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://www.tchibo.de/sitemap-pv-pa.xml");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_ENCODING, "gzip");
if(curl_exec($curl) === false) {
echo 'Error: ' . curl_error($curl);
}
else {
echo 'Success!';
}
curl_close ($curl);
будет выводить что-то вроде этого (при ошибке):
* Hostname was NOT found in DNS cache
* Trying 212.116.1.40...
* Connected to www.tchibo.de (212.116.1.40) port 80 (#0)
> GET /sitemap-pv-pa.xml HTTP/1.1
Host: www.tchibo.de
Accept: */*
Accept-Encoding: gzip
< HTTP/1.1 200 OK
* Server Apache-Coyote/1.1 is not blacklisted
< Server: Apache-Coyote/1.1
< Content-Disposition: attachment; filename="sitemap-pv-pa.xml"< Content-Type: text/xml;charset=UTF-8
< Transfer-Encoding: chunked
< Content-Encoding: gzip
< Vary: Accept-Encoding
< Date: Thu, 02 Oct 2014 09:10:58 GMT
<
* Error while processing content unencoding: invalid code lengths set
* Failed writing data
* Closing connection 0
Error: Error while processing content unencoding: invalid code lengths set
Из командной строки
[путь к curl.exe] —compress -v «http://www.tchibo.de/sitemap-pv-pa.xml«> tmp.txt
Выход (успешно)
C:\curl-versions\7.36\bin>curl.exe --compress -v "http://www.tchibo.de/sitemap-pv-pa.xml" > tmp.txt
* Hostname was NOT found in DNS cache
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 212.116.1.40...
* Connected to www.tchibo.de (212.116.1.40) port 80 (#0)
> GET /sitemap-pv-pa.xml HTTP/1.1
> User-Agent: curl/7.36.0
> Host: www.tchibo.de
> Accept: */*
> Accept-Encoding: deflate, gzip
>
< HTTP/1.1 200 OK
* Server Apache-Coyote/1.1 is not blacklisted
< Server: Apache-Coyote/1.1
< Content-Disposition: attachment; filename="sitemap-pv-pa.xml"< Content-Type: text/xml;charset=UTF-8
< Transfer-Encoding: chunked
< Content-Encoding: gzip
< Vary: Accept-Encoding
< Date: Thu, 02 Oct 2014 09:34:18 GMT
<
{ [data not shown]
100 814k 0 814k 0 0 791k 0 --:--:-- 0:00:01 --:--:-- 803k
* Connection #0 to host www.tchibo.de left intact
Задача ещё не решена.
Других решений пока нет …