在动作方法中,我有以下代码摘录:
error_reporting(E_ALL);
ini_set('display_errors', '1');
Logger::log('test');
Logger类以这种方式定义:
class Logger {
public static function log() {
echo "test";
}
我故意忘记了函数的右大括号来演示这个问题。调用操作时,屏幕上绝不会呈现任何内容。这是什么类型的错误,为什么它没有显示,即使我配置PHP显示所有错误,如上所示?
当然,如果我添加缺失的大括号,一切都还可以。
答案 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"