19

事情是这样的:

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

我得到:

大批(
    [allow_url_fopen] => 数组
        (
            [全局值] => 1
            [本地值] => 1
            [访问] => 4
        )

    [allow_url_include] => 数组
        (
            [全局值] =>
            [本地值] =>
            [访问] => 4
        )

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

4

6 回答 6

16

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()

于 2012-09-27T09:47:15.023 回答
8

这些变量不能在用户脚本中更改。该access值意味着:

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

您可以尝试将其设置为.htaccess

php_value  allow_url_include 1
于 2012-09-27T09:43:41.163 回答
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');
于 2012-09-27T09:42:35.277 回答
0

allow_url_fopen 不能被 ini_set 修改。这是因为某些 ini 语句只能在 ini 文件中声明。

于 2012-09-27T09:42:56.433 回答
0

我的回答可能跑题了,但当我的ini_set电话打不通时,我几乎总是通过谷歌回到这个问题。分享我的案例可能会帮助其他人ini_set更快地解决问题。

因此,在我的情况下display_errors被禁用,但 PHP 无论如何都会在浏览器中显示错误,尽管我启用log_errors并设置error_logC:\Windows\Temp\PHP_error.log.

第一印象始终是ini_set 无法正常工作,但它可能是权限问题。如果 PHP 无法访问日志文件,那么它只会将错误发送到浏览器。

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

于 2019-06-25T21:27:05.097 回答
-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');"

重新启动httpdzabbix-server守护进程,然后尝试..就是这样。!

于 2014-10-18T20:45:23.443 回答