ini_set() 总是返回 false

Posted

技术标签:

【中文标题】ini_set() 总是返回 false【英文标题】:ini_set() always returning false 【发布时间】:2013-02-23 07:05:13 【问题描述】:

在我当前的项目中,我有一个 security.php,其中包含一些函数和一些 ini_set() 语句。

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)“”

还有什么想法吗?

谢谢,塞巴斯蒂安

【问题讨论】:

从 if 语句中删除逗号和 0。你在那里赋值 你不应该使用ini_get吗? @Sebastian,有趣的问题。你能检查一下 ini_set 是否适用于其他 ini 值吗?...例如:var_dump(ini_set('display_errors', '0')); @Sebastjan .. 这意味着 ini_set() 基本上可以工作 您知道ini_set 返回旧值吗? 【参考方案1】:

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 将设置值返回之前的值。

【讨论】:

ini_set 在失败时返回 false,根据文档 (php.net/manual/en/…)。

以上是关于ini_set() 总是返回 false的主要内容,如果未能解决你的问题,请参考以下文章

ini_set() 作用范围?

ini_set()

php的ini_set函数

关于使用 ini_set('max_execution_time', 0);

php [ini_set]#电影业务

error_reporting() 和 ini_set('error_reporting') 的区别?