2013-03-07 62 views
3

在我目前的項目中,我有一個security.php,它包含一些函數和一些ini_set()語句。ini_set()總是返回false

ini_set('session.use_trans_sid', 0); 
ini_set('session.use_only_cookies', 1); 
ini_set('session.cookie_secure', 1); 
ini_set('session.hash_function', 'whirlpool'); 
ini_set('session.cookie_httponly', 1); 
ini_set('session.hash_bits_per_character', '5'); 

所以這是我的問題。如果我把某種檢查...

if(ini_set('session.use_trans_sid', 0) === false) 
    echo "Foo!"; 

它總是返回false,無論我試圖設置哪一個。 我認爲問題與security.php權限有關,但我錯了。

編輯

var_dump(ini_set('display_errors', '0')); 

返回字符串(0) 「」

任何其他的想法?

感謝,塞巴斯蒂安

+0

從if語句中刪除逗號和0。你在那裏分配了價值 – Shridhar 2013-03-07 21:35:22

+0

你不應該使用'ini_get'嗎? – j08691 2013-03-07 21:35:53

+1

@塞巴斯蒂安,有趣的問題。你能檢查ini_set是否可以與其他ini值一起工作嗎?例如:var_dump(ini_set('display_errors','0'));'? – hek2mgl 2013-03-07 21:37:34

回答

0

ini_set總是返回一個字符串,所以這種嚴格的比較將始終是假的:

ini_set('session.use_trans_sid', 0) === false 

如果你想在不改變它來檢查值,使用ini_get

if (ini_get('session.use_trans_sid') == 0) ... 

if (!ini_get('session.use_trans_sid')) ... 

ini_set將設置值返回以前的值。

+2

當出現故障時,ini_set'返回false,根據文檔(http://php.net/manual/en/function.ini-set.php#refsect1-function的.ini - 組 - returnvalues)。 – 2016-10-31 18:24:50