Ошибка CURL (невозможно активировать CURLOPT_FOLLOWLOCATION) - PullRequest
5 голосов
/ 28 июня 2010

Предупреждение: curl_setopt () [Function.curl-setopt]: CURLOPT_FOLLOWLOCATION не может быть активируется, когда в safe_mode или open_basedir установлен в /home/path/curl.php в строке 594

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

Ответы [ 3 ]

3 голосов
/ 28 июня 2010

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

0 голосов
/ 25 июля 2016

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

        $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);
}
0 голосов
/ 28 июня 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...