Запрос Curl, не работающий на реальном сервере

Может ли кто-нибудь сказать мне, почему этот код CURL работает только на моем локальном сервере, а не на реальном сервере? Пробовал на 3 разных хостинга и ничего не работает.

Проверено все на живом 1) Curl enabled 2) Версия PHP в порядке 3) Curl выполняется без какой-либо ошибки, но результата нет

Его было 3 дня, и я не смогу найти какое-либо решение, пожалуйста, помогите.

error_reporting(1); set_time_limit(1500); $fname=time().'_myfile.flv'; header('Content-type: video/x-flv'); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"$fname\""); define('USERAGENT', "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"); $url='http://v3.lscache5.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=914010%2C907605&algorithm=throttle-factor&itag=34&ip=112.0.0.0&burst=40&sver=3&signature=D51A660BDF83B54B3584425DBE8930D5D0F805E1.B3FB21D0CAF625D36A17B558A0A653F20788B49F&expire=1313503200&key=yt1&ipbits=8&factor=1.25&id=1cacd26a9913e4ec'; $ch = curl_init() or die("Error"); curl_setopt($ch, CURLOPT_USERAGENT, USERAGENT); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); if(curl_exec($ch) === FALSE) { die("Curl failed: " . curl_error($ch)); // Never goes here } curl_close($ch); 

?>

Сделайте curl_getinfo($ch) после exec, чтобы увидеть код ответа, возвращенный сервером.

У меня была эта проблема в течение нескольких дней, она не смогла найти никаких ошибок в PHP, и ответ cURL, казалось, полностью вернулся к нулю. Наконец нашел предложенный код для ввода запроса cURL

 if (curl_exec($curl) === FALSE) { die("Curl Failed: " . curl_error($curl)); } else { return curl_exec($curl); } 

Добавление этого, наконец, дало мне ошибку в PHP, которая была:

Curl Failed: проблема с сертификатом SSL, убедитесь, что сертификат CA в порядке. Подробности: ошибка: 14090086: SSL-процедуры: SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не выполнена

Поиск этой ошибки на SO дал мне это: HTTPS и SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не выполнена, CA в порядке

Это побудило меня добавить код в мой запрос cURL, который по существу отключает проверку SSL.

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

Я не работаю с администратором сервера, чтобы найти лучшее решение, потому что я не знаю, хорошо ли это обходное решение, но пока это работает.

Протестируйте его

 error_reporting(E_ALL); 

Некоторые вещи, чтобы проверить:

  1. Ваше значение для error_reporting () довольно странно: 1 равно E_ERROR и подразумевает, что вы игнорируете почти все, включая предупреждения. Я бы не рекомендовал это даже в производстве, не говоря уже о развитии.

  2. Вы определяете $header_list и никогда не используете его.

  3. Убедитесь, что вы проверяете реальный вывод, а не вывод, отображаемый браузером.