【问题标题】:Problem with turning off display_errors (PHP)关闭 display_errors (PHP) 的问题
【发布时间】:2010-12-27 08:59:58
【问题描述】:

我通过this method 的 htaccess 将 display_errors 设置为 Off,当我运行 phpinfo() 时它显示为 Off(本地值和主值列中的 display_errors 为 Off)。此外,当我在测试脚本中echo ini_get('display_errors'); 时,我得到 0 返回。

但是,当我在我的一个脚本中触发如下错误时:

trigger_error("An error", E_USER_WARNING);

但是,我在运行此脚本时不会收到错误,而是写入日志:

$foo = array();
$bar = $foo['does_not_exist'];

我希望它只写入错误日志,而不是按原样显示。有什么关系?

添加背景:我在 Rackspace 云站点托管,他们不允许您编辑 php ini,但您可以通过 .htaccess 中的 php_flags 设置基本上所有内容。

【问题讨论】:

  • 再次检查您的设置。它“开启”了。
  • Col -- 不,phpinfo() 表示关闭。我将添加一些我遗漏的背景信息。如果一切都失败了,我会尝试编写一个错误处理程序
  • 我看过一篇关于在 apache 文件(如 .haccess)中设置的这些布尔值的好帖子,没人知道它是 true、0 还是 on。好吧,事实上有时它会起作用,有时它不会:-) makina-corpus.org/blog/…
  • 我遇到了同样的问题。 trigger_error 似乎忽略了 display_errors 指令。将display_errors设置为0并调用不存在的函数触发错误,并没有按预期显示任何错误。

标签: apache .htaccess php


【解决方案1】:

我的错.. 意识到我没有在测试页面上使用的包含之一是 display_errors 被动态设置为 1 的原因。上校 Shrapnel 被写为持怀疑态度(赞成他的 cmets)

【讨论】:

    【解决方案2】:

    首先,使用 ini_get('display_errors'); 验证 display_errors 在 trigger_error() 之前是否真的关闭

    它可能在运行时被覆盖。

    那么,也许trigger_error() 本身就是一个问题。尝试做一些通常会触发错误的事情。示例:

    $foo = array();
    $bar = $foo['does_not_exist'];
    

    如果按预期工作,那么这个问题肯定是trigger_error()

    请改用error_log()

    http://us2.php.net/manual/en/function.error-log.php

    【讨论】:

    • trigger_error() 本身不是问题。和error_log在这里无关。
    • 我运行了 ini_get('display_errors') 得到了 0。而且你的脚本没有给出错误
    • 所以,我做ini_get('display_errors') 的第一条评论是正确的做法。请不要投反对票,因为这是正确的做法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    相关资源
    最近更新 更多