2010-06-28 7 views
5

Attention: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION ne peut pas être activé lorsque safe_mode ou un open_basedir est situé dans /home/chemin/boucle .php sur la ligne 594erreur CURL (CURLOPT_FOLLOWLOCATION ne peut pas être activé)

Je n'ai pas accès à php.ini. Cela peut-il être corrigé sans modifier php.ini?

Répondre

3

Voir this comment dans le manuel. Il fournit une solution de contournement laide. Je crois que cette restriction est effective à cause d'un bug dans la bibliothèque curl où il faudrait suivre les redirections vers les ressources locales, mais cela devrait être corrigé maintenant, donc je ne vois aucune raison pour cette restriction.

+0

Eh bien c'est un bidouillage moche, c'est sûr, mais cela fonctionne - fondamentalement, vous allez analyser les en-têtes de réponse et rediriger manuellement. – Piskvor

0

safe_mode appartient à PHP_INI_SYSTEM - donc si c'est le problème, vous n'avez pas de chance, ces éléments ne peuvent être définis dans php.ini et vhost config.

open_basedir appartient à PHP_INI_ALL, pour que vous puissiez le mettre en .htaccess en utilisant php_value.

+0

Je peux me tromper, mais je pense que php_admin_value ne peut pas être mis dans les fichiers .htaccess. Peut-être que vous voulez dire php_value? – Artefacto

+0

@Artefacto: Vous avez raison, corrigé. "php_admin_value (...) Ceci ne peut pas être utilisé dans les fichiers .htaccess." http://php.net/manual/en/configuration.changes.php – Piskvor

0

Cela a fonctionné pour moi!

 $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); 
} 
Questions connexes