【问题标题】:Setting display_errors=0 and log_errors=1 without php.ini在没有 php.ini 的情况下设置 display_errors=0 和 log_errors=1
【发布时间】:2012-03-15 22:15:09
【问题描述】:

由于我无法控制的原因,我无法在生产服务器的 php.ini 中设置 display_errors=0 和 log_errors=1。我知道我可以设置 error_reporting(0); 以完全抑制所有错误消息,但这会影响日志错误和显示的错误。我希望在运行时设置 display_errors=0 和 log_errors=1 等效。这可能吗?谢谢。

【问题讨论】:

  • 您可能希望在 .htaccess 中执行此操作,因此这些指令在脚本开始解析之前就已经生效。这也可以避免致命错误。
  • 这只能通过 Apache 作为模块来完成。

标签: php error-handling


【解决方案1】:

两者都是PHP_INI_ALL,所以你可以在运行时使用ini_set

ini_set('display_errors', 0);
ini_set('log_errors', 1);

http://php.net/manual/en/ini.list.php

【讨论】:

  • 意思是只需要为该会话设置一次,而不是在每个页面上?
  • @keybored 不,这意味着它在执行这两行代码时设置,然后在脚本处于活动状态时保持活动状态,例如对于那个单一的请求。与会话无关。
【解决方案2】:

试试这个:

ini_set('display_errors', 0);
ini_set('log_errors', 1);

【讨论】:

    【解决方案3】:

    如果您使用 PHP 作为模块并且无法使用 php.ini 主指令或覆盖所需文件夹上的 php.ini,并且您不会在 php 文件上启用它,您可以尝试使用 .htaccess habilities。

    在包含您的应用的文件夹顶部,放置一个 .htaccess 文件,其中包含: php_flag display_errors 0

    应该只适用于 php 输出显示而不是日志。

    无论如何,提供的有关 ini_set() 的解决方案将仅适用于包含它的页面。 注意:如果您有包含,则解析时 display_error 值将起作用。但是如果你直接访问它是行不通的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      • 2018-02-04
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 2013-01-31
      相关资源
      最近更新 更多