2010-06-28 37 views
5

警告:curl_setopt() [function.curl-SETOPT]: CURLOPT_FOLLOWLOCATION不能 激活safe_mode設置時或 的open_basedir在 /家/路徑/捲曲設置.php on line 594CURL誤差(CURLOPT_FOLLOWLOCATION不能被激活)

我沒有訪問php.ini的權限。這可以修改而不編輯php.ini?

回答

3

參見手冊中的this comment。它提供了一個醜陋的解決方法。我相信這個限制是有效的,因爲curl庫中的一個bug會影響到重定向到本地資源,但是現在應該修復這個問題,所以我認爲沒有理由限制這個限制。

+0

那麼這是一個醜陋的黑客肯定,但它的工作原理 - 基本上,你會解析響應標題和手動重定向。 – Piskvor 2010-06-28 14:19:02

0

safe_mode 0123p屬於PHP_INI_SYSTEM - 所以如果這是問題,你運氣不好,這些項目只能在php.ini和vhost配置中設置。

open_basedir屬於PHP_INI_ALL,因此你可以使用php_value設置在.htaccess

+0

我可能會誤解,但我認爲php_admin_value不能放在.htaccess文件中。也許你的意思是php_value? – Artefacto 2010-06-28 14:17:52

+0

@藝術:你是對的,修好了。 「php_admin_value(...)這不能在.htaccess文件中使用。」 http://php.net/manual/en/configuration.changes.php – Piskvor 2010-06-28 14:20:29

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); 
}