Может ли кто-нибудь сказать мне, почему этот код 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);
Некоторые вещи, чтобы проверить:
Ваше значение для error_reporting () довольно странно: 1
равно E_ERROR
и подразумевает, что вы игнорируете почти все, включая предупреждения. Я бы не рекомендовал это даже в производстве, не говоря уже о развитии.
Вы определяете $header_list
и никогда не используете его.
Убедитесь, что вы проверяете реальный вывод, а не вывод, отображаемый браузером.