ini_set无法正常工作

时间:2012-09-27 09:40:32

标签: php

问题在于:

ini_set('display_errors', '1');
ini_set('safe_mode', '0');
ini_set('allow_url_fopen', '1');
ini_set('allow_url_include', '1');
print_r(ini_get_all());

我得到了:

Array(
    [allow_url_fopen] => Array
        (
            [global_value] => 1
            [local_value] => 1
            [access] => 4
        )

    [allow_url_include] => Array
        (
            [global_value] => 
            [local_value] => 
            [access] => 4
        )

为什么我不能在php ini_set函数中设置该变量?该指令被指定为PHP_INI_ALL,然后它可以在ini_set()函数中定义! http://php.net/manual/en/ini.list.php

6 个答案:

答案 0 :(得分:14)

<强> display_errors

可以在运行时设置(使用ini_set()),但如果脚本有致命错误则不会产生任何影响。这是因为没有执行所需的运行时操作。

使用ini_set('display_errors','Off');

<强> safe_mode

自PHP 5.3.0开始,此功能已被弃用,自PHP 5.4.0起已被删除。该指令属于PHP_INI_SYSTEM,无法通过ini_set()

设置

<强> allow_url_include

使用ini_set('allow_url_include', 'On');

<强> allow_url_fopen

此指令属于PHP_INI_SYSTEM,无法通过ini_set()

设置

答案 1 :(得分:6)

无法在用户脚本中更改这些变量。 access值表示:

PHP_INI_SYSTEM    4          Entry can be set in php.ini or httpd.conf  

您可以尝试在.htaccess中设置它:

php_value  allow_url_include 1

答案 2 :(得分:0)

您是否尝试过布尔值而不是0或1?

ini_set('display_errors', true);
ini_set('safe_mode', false);
ini_set('allow_url_fopen', true);
ini_set('allow_url_include', true);
print_r(ini_get_all());

或试试这个:

ini_set('allow_url_include', 'on');

答案 3 :(得分:0)

in__set无法修改allow_url_fopen。这是因为一些ini语句只能在ini文件中声明。

答案 4 :(得分:0)

我的回答可能不合时宜,但是当我的ini_set通话不起作用时,我几乎总是通过Google再次回到这个问题。分享我的案例可能有助于其他人更快地解决ini_set的问题。

因此,在我的情况下,display_errors被禁用,但是PHP仍然在浏览器中显示了错误,尽管我启用了log_errors并将error_log设置为C:\Windows\Temp\PHP_error.log

第一印象总是 ini_set不起作用,但是这可能是权限问题。如果PHP无法访问日志文件,则它将简单地将错误发送到浏览器。

解决方案::确保PHP具有访问和写入日志文件的权限。

答案 5 :(得分:-1)

如果您在zabbix界面"ini_set(): Use of mbstring.internal_encoding is deprecated"

中收到此消息

只需转到文件vi /usr/local/share/zabbix/include/locales.inc.php并告知该行

#       ini_set('mbstring.internal_encoding', 'UTF-8');"

重新启动httpd&amp; zabbix-server守护进程,然后尝试..就是这样。!