2010-06-28 2 views
5

Внимание: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION не может быть активируется, когда в safe_mode или open_basedir устанавливается в /главная/путь/завитка .php on line 594ошибка СКРУЧИВАЕМОСТИ (CURLOPT_FOLLOWLOCATION не может быть активирована)

У меня нет доступа к php.ini. Может ли это быть исправлено без редактирования php.ini?

ответ

3

См. this comment в руководстве. Это обеспечивает уродливое обходное решение. Я считаю, что это ограничение действует из-за ошибки в библиотеке curl, где она будет следовать перенаправлениям на локальные ресурсы, но это должно быть исправлено к настоящему времени, поэтому я не вижу причин для этого ограничения.

+0

Ну, это уродливый взломать, но он работает - в основном, вы будете разбирать заголовки ответов и перенаправлять вручную. – Piskvor

0

safe_mode принадлежит к PHP_INI_SYSTEM - так что если это проблема, вам не повезло, эти элементы могут быть установлены только в конфигурациях php.ini и vhost.

open_basedir принадлежит к PHP_INI_ALL, поэтому вы можете установить его в .htaccess, используя php_value.

+0

Возможно, я ошибаюсь, но думаю, что php_admin_value не может быть помещен в файлы .htaccess. Возможно, вы имеете в виду php_value? – Artefacto

+0

@Artefacto: Вы правы, исправлены. "php_admin_value (...) Это невозможно использовать в файлах .htaccess." http://php.net/manual/en/configuration.changes.php – Piskvor

0

Это работает для меня!

 $ch = curl_init(); 

     $header=array(
      'User-Agent: Mozilla/5.0 (Windows NT 5.2; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0', 
      'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
      'Accept-Language: en-us,en;q=0.5', 
      'Accept-Encoding: gzip,deflate', 
      'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 
      'Keep-Alive: 115', 
      'Connection: keep-alive', 
     ); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_REFERER, $url); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 5.2; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0"); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //Set curl to return the data instead of printing it to the browser. 
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'curl_cookies.txt'); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'curl_cookies.txt'); 
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 

    $data = curl_exec($ch); 


    curl_close($ch); 

    $status = curl_getinfo($curl); 

if ($status['http_code'] == 200) { 
    return $data;  
} else { 
    echo $url; 
    return @file_get_contents($url); 
} 
Смежные вопросы