2012-10-04 63 views
1

一個重要的GET參數正在被suhosin過濾。 如何在下列不起作用時重寫suhosin?如何覆蓋suhosin最大值?

的public_html/php.ini中:

[suhosin] 
suhosin.get.max_value_length = 2048 

集suhosin.get.max_value_length等爲NULL,崩潰用戶會話。

-

的public_html /的.htaccess:

<IfModule mod_php5.c> 
    php_value suhosin.get.max_value_length 2048 
</IfModule> 

沒有影響

-

(系統默認設置爲:)

suhosin.get.max_value_length = 512 
suhosin.get.max_value_length = 100000 

正在過濾的GET參數長度爲576個字符。

+0

你確定php.ini中屬於中'public_html'?如果mod_php5不存在,你如何提供PHP? – wroniasty

+0

林不知道本地php.ini覆蓋文件是允許的。它確實有效果,因爲512變成NULL。 – tim

+0

你能編輯全局'php.ini'嗎?嘗試使用'ini_get' /'ini_set'? – wroniasty

回答

8

我們可以通過重新建設的$ _GET

// Override suhosin $_GET limitation 
    $_GET = array(); 
    $params = explode('&', $_SERVER['QUERY_STRING']); 
    foreach ($params as $pair) { 
    list($key, $value) = explode('=', $pair); 
    $_GET[urldecode($key)] = urldecode($value); 
    } 
+0

這只是保存了我的培根大時間哥們,你的搖滾! – IzzEps

1

在Debian繞過了Suhosin | Ubuntu的系統,你可以設置suhosin參數在全球範圍內:

/etc/php5/conf.d/suhosin.ini 
+0

問題在於何時ini設置由於權限而不起作用。 – tim