【问题标题】:ini_set not workingini_set 不工作
【发布时间】:2012-09-27 09:40:32
【问题描述】:

事情是这样的:

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

【问题讨论】:

    标签: php


    【解决方案1】:

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

    【讨论】:

    • php5.3中ini_set()的替代品是什么?如果您无权访问 apache 配置文件。您唯一的选择是包含在您的代码中。
    • 哥们,你是个传奇,非常感谢,困扰了我一整天。
    【解决方案2】:

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

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

    你可以尝试在.htaccess中设置:

    php_value  allow_url_include 1
    

    【讨论】:

    • 但这里他们说相反,它是一个 ini_set_all 指令! php.net/manual/en/ini.list.php
    • 不,不是!他们说 allow_url_fopen 是 PHP_INI_SYSTEM
    • 哦,你的意思是第一个:但是那个变量已经打开了。如您所见,它设置为 true,不是吗...?
    • 好的:除了 allow_url_include 指令还有什么?这是我真正的意思。
    • 你可以尝试在 php.ini 或 .htaccess 中设置它吗?
    【解决方案3】:

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

    【讨论】:

    • 不:这里可用的 ini set 指令,没有被指定为唯一的 php.ini 指令! php.net/manual/en/ini.list.php
    • 什么?我现在正在阅读:allow_url_include "0" PHP_INI_ALL PHP_INI_SYSTEM in PHP 5。自 PHP 5.2.0 起可用。我在 php.net 文件中缺少什么? :(
    • 哦不,我明白了,sorryyyyyyyyyy!第二列表示 php 版本的变化!!对不起;(
    【解决方案4】:

    您是否尝试过使用布尔值代替 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');
    

    【讨论】:

      【解决方案5】:

      我的回答可能跑题了,但当我的ini_set 呼叫不起作用时,我几乎总是通过 Google 回到这个问题。分享我的案例可能会帮助其他人更快地解决ini_set 的问题。

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

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

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

      【讨论】:

        【解决方案6】:

        如果在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 & zabbix-server daemons ,然后尝试..就这样!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-19
          • 1970-01-01
          • 2017-02-06
          相关资源
          最近更新 更多