wget -O file «url» --username=user --password=pass удачно скачивает zip файл размером 267478 байт. Файл нормально распаковывается с помощью unzip.
В то же время код на PHP/curl скачивает файл размером 402099 байт который не поддаётся распаковке. Чувствую тут какая то проблема с долбаным ftp binary/text transfer. Файл не распаковывается:
root@import:/var/www/lib/tmp/hui# unzip hui
Archive: hui
error [hui]: missing 68051554 bytes in zipfile
(attempting to process anyway)
error [hui]: start of central directory not found;
zipfile corrupt.
(please check that you have transferred or created the zipfile in the
appropriate BINARY mode and that you have compiled UnZip properly)
root@import:/var/www/lib/tmp/hui#
Вот код на PHP/curl:
while (true) {
$fh = fopen($this->location, 'wb');
if ($fh === false) {
$this->errorType = '';
$this->error = "Failed to create file {$this->location}";
return false;
}
$ch = curl_init();
if ($this->username !== '') {
curl_setopt($ch, CURLOPT_USERPWD, urlencode($this->username).":".urlencode($this->password));
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 100);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
if (curl_exec($ch) === false) {
$this->errorType = 'url';
$this->error = "Failed to fetch file: ".curl_error($ch);
return false;
}
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 202) {
fclose($fh);
unlink($this->location);
e("Received HTTP/202, waiting to retry...\n");
sleep(5);
} else {
break;
}
}
//e($url."\n");
fclose($fh);
Подскажите какую опцию добавить что бы всё работало как надо?
PHP 5.4.41