Zend Framework - 并非显示所有错误

时间:2010-10-15 11:41:09

标签: php zend-framework

在动作方法中,我有以下代码摘录:

error_reporting(E_ALL);
ini_set('display_errors', '1');
Logger::log('test');

Logger类以这种方式定义:

class Logger {
    public static function log() {
        echo "test";
}

我故意忘记了函数的右大括号来演示这个问题。调用操作时,屏幕上绝不会呈现任何内容。这是什么类型的错误,为什么它没有显示,即使我配置PHP显示所有错误,如上所示?

当然,如果我添加缺失的大括号,一切都还可以。

2 个答案:

答案 0 :(得分:3)

您还必须启用display_startup_errors才能显示致命错误:

  

即使启用display_errors,也不会显示PHP启动序列期间发生的错误。除调试外,强烈建议关闭display_startup_errors

另请参阅display_errors的注释:

  

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

您可以在Zend Framework的application.ini中设置这两个值。在旁注中:如果您设置error_reporting(-1),它将报告(!显示)所有错误,包括E_STRICT以及将来的任何添加。

答案 1 :(得分:2)

我有完全相同的问题 - 我没有完全解决它,但我发现所有错误都正确记录到文件中,即使它们没有显示。

将这些行放在.htaccess / server config中:

php_value       log_errors                      On
php_value       error_log                       "/path_to_logs/errors.log"