2010-07-19 2 views
0

Я проверяю, существуют ли определенные mp3. Хотя иногда нет проблем, некоторые допустимые mp3-файлы отображаются как 404, а не найдены. Вот код, я использую:cURL возвращает 404 в файл, который существует (удаленный сервер). Зачем?

$ch = @curl_init($file_path); 
@curl_setopt($ch, CURLOPT_HEADER, true); 
@curl_setopt($ch, CURLOPT_NOBODY, true); 
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

@curl_exec($ch); 
$header = curl_getinfo($ch); 
curl_close($ch); 
echo "<pre>"; 
print_r($header); 
echo "<pre>"; 

Я думал, что проблема была, потому что сайты используют редирект, но установка «CURLOPT_FOLLOWLOCATION» в TRUE, не решает проблему.

http-код показывает 404 на следующих mp3. Вы можете пойти к ним в своем браузере и посмотреть, что они работают. Это всего лишь несколько случайных примеров много, что эта проблема:

http://audio.arjlover.net/audio/pesni/Babies_go_series/Babies%20Go%20Beatles/01%20Hey%20Jude%20Beatles.mp3

http://www.dagatinha.com.br/musicas/Lady%20Gaga%20%20-%20Just%20Dance.mp3

+2

Что касается несвязанной ноты, вы случайно владеете авторскими правами на эти музыкальные файлы? – DevSolar

+0

@DevSolar: Вы спрашиваете, действительно ли user371699 Lady Gaga? – webbiedave

+2

Lady Gaga будет использовать Ruby – stimms

ответ

1

В основном:

@curl_exec($ch); 

Вы предполагаете локон exec'd правильно, и выбросить его возвращаемое значение. Если возникла проблема с выполнением запроса, exec возвращает false и curl_error, а curl_errno будет содержать диагностическую информацию о том, что взорвалось и как. Никогда не предполагайте, что локон преуспел. Слишком много причин для неудачи, но только один способ добиться успеха. Как минимум, измените свой код на:

if (curl_exec($ch) === FALSE) { 
    die("Curl error: " . curl_error($ch)); 
} 

, чтобы узнать, почему все погибло. В противном случае вы просто останетесь с нечетными результатами и выбросите любой шанс увидеть, почему они произошли.

Смежные вопросы