Я пытаюсь загрузить zip-файл с сервера, который я размещаю, и сохранить его на другом сервере, используя PHP и cURL. Мой PHP выглядит так:
set_time_limit( 0 );
$ci = curl_init();
curl_setopt_array( $ci, array(
CURLOPT_FILE => '/directory/images.zip', // File Destination
CURLOPT_TIMEOUT => 3600, // Timeout
CURLOPT_URL => 'http://example.com/images/images.zip' // File Location
) );
curl_exec( $ci );
curl_close( $ci );
Всякий раз, когда я запускаю это, я получаю следующую ошибку на CURLOPT_URL
линия:
Предупреждение: curl_setopt_array (): предоставленный аргумент не является допустимым ресурсом File-Handle в …
Если я посещу Расположение файла прямо в моем браузере, он загружает. Нужно ли передавать какую-то информацию заголовка, чтобы он знал, что это zip-файл? Есть ли какой-то способ, которым я могу отладить это?
Ваша проблема в том, что вы должны передать файловый дескриптор CURLOPT_FILE
, а не путь к файлу. Вот рабочий пример
$ci = curl_init();
$url = "http://domain.com/images/images.zip"; // Source file
$fp = fopen("/directory/images.zip", "w"); // Destination location
curl_setopt_array( $ci, array(
CURLOPT_URL => $url,
CURLOPT_TIMEOUT => 3600,
CURLOPT_FILE => $fp
));
$contents = curl_exec($ci); // Returns '1' if successful
curl_close($ci);
fclose($fp);
Других решений пока нет …