safe_mode open_basedir. помогите

Тема в разделе "PHP", создана пользователем ManCuniAn, 28 июл 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ManCuniAn

    ManCuniAn

    Регистр.:
    5 фев 2009
    Сообщения:
    269
    Симпатии:
    32
    Есть сайт.есть граббер новостей..( rss grabber 3.6.5)..при граббинге новости выскакивают ошибки:
    Warning: curl_setopt(:( CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /home/h10271/data/www/Сайт.ru/engine/inc/plugins/rss.classes.php on line 301

    в техподдержке сказали что курл активен..и дали:

    upload_tmp_dir="/home/h10271/data/tmp"
    open_basedir = "/home/h10271:/tmp:/var/tmp:/usr/bin:/usr/local/bin:/usr/local/share/pear"

    что мне с этим делать? как прописать?
     
  2. jo0o00nyy

    jo0o00nyy Постоялец

    Регистр.:
    12 май 2010
    Сообщения:
    65
    Симпатии:
    27
    Ничего не делать, а просто внимательнее прочитать сообщение от курла, скорей всего в нем говорится, что у вас включен SAFE_MODE и что при включенном этом режиме, курл не может принять параметр CURLOPT_FOLLOWLOCATION, который отвечает за автоматический переход по Location: url.
    И как всегда есть несколько выходов.
    Выключить safe_mode
    Донастроить rss grabber 3.6.5 прочитать описание настроек сего грабера или в коде самого грабера найти строку c CURLOPT_FOLLOWLOCATION и поставить значение false, или добавить строку вида
    Код:
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
    ну или выключить вывод сообщений уровня warning
    :)
     
  3. sw04

    sw04 seoplayer

    Регистр.:
    1 дек 2007
    Сообщения:
    601
    Симпатии:
    193
    сегодня только решал такую проблему.
    если обязаельно нужен CURLOPT_FOLLOWLOCATION используй функцию:
    PHP:
    function curl_redir_exec($ch)
        {
            static 
    $curl_loops 0;
            static 
    $curl_max_loops 20;
            if (
    $curl_loops++ >= $curl_max_loops)
            {
                
    $curl_loops 0;
                return 
    FALSE;
            }
            
    curl_setopt($chCURLOPT_HEADERtrue);
            
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
            
    $data curl_exec($ch);
            
    //list($header, $data) = explode("\n\n", $data, 2);
            
    $http_code curl_getinfo($chCURLINFO_HTTP_CODE);
            if (
    $http_code == 301 || $http_code == 302)
            {
                
    $matches = array();
                
    //preg_match('/Location:(.*?)\n/', $header, $matches);
                
    preg_match('/Location:(.*?)\n/'$data$matches);
                
    $url = @parse_url(trim(array_pop($matches)));
                if (!
    $url)
                {
                    
    //couldn't process the url to redirect to
                    
    $curl_loops 0;
                    return 
    $data;
                }
                
    $last_url parse_url(curl_getinfo($chCURLINFO_EFFECTIVE_URL));
                if (!
    $url['scheme'])
                    
    $url['scheme'] = $last_url['scheme'];
                if (!
    $url['host'])
                    
    $url['host'] = $last_url['host'];
                if (!
    $url['path'])
                    
    $url['path'] = $last_url['path'];
                
    $new_url $url['scheme'] . '://' $url['host'] . $url['path'] . ($url['query']?'?'.$url['query']:'');
                
    curl_setopt($chCURLOPT_URL$new_url);
                
    debug('Redirecting to'$new_url);
                return 
    curl_redir_exec($ch);
            } else {
                
    $curl_loops=0;
                return 
    $data;
            }
        }
    вызывай вместе curl_exec()
     
Статус темы:
Закрыта.