Summary
令人惊讶的是我在谷歌或SO上找不到任何关于此的信息。当我在 PHP 中引发异常时,它会在我的控制台中出现两次,并包含错误消息和堆栈跟踪。第一次打印时显示“PHP Fatal error: ...”,第二次打印时仅显示“Fatal error: ...”。我没有测试过这是 Apache 插件版本。
Example
为了安全起见,一些命名空间和路径用“...”缩短:
$ php code/com/.../tabular_data.php
PHP Fatal error: Uncaught exception 'Exception' with message 'File type not supported' in /home/codemonkey/.../tabular_data.php:56
Stack trace:
#0 /home/codemonkey/.../tabular_data.php(88): com\...\Tabular_Data->loadFromFile('/home/codemonke...', false)
#1 /home/codemonkey/.../tabular_data.php(95): com\...\Tabular_Data::fromFile('/home/codemonke...')
#2 {main}
thrown in /home/codemonkey/.../tabular_data.php on line 56
Fatal error: Uncaught exception 'Exception' with message 'File type not supported' in /home/codemonkey/.../tabular_data.php:56
Stack trace:
#0 /home/codemonkey/.../tabular_data.php(88): com\...\Tabular_Data->loadFromFile('/home/codemonke...', false)
#1 /home/codemonkey/.../tabular_data.php(95): com\...\Tabular_Data::fromFile('/home/codemonke...')
#2 {main}
thrown in /home/codemonkey/.../tabular_data.php on line 56
Question
我认为这与 stderr 和 stdout 都打印错误有关。无论如何,我如何让 PHP 只打印一次,最好打印到 stderr?
版本输出
PHP 5.3.9 (cli)(构建时间:2012 年 1 月 11 日 17:09:48)
版权所有 (c) 1997-2012 PHP 集团
Zend Engine v2.3.0,版权所有 (c) 1998-2012 Zend Technologies
The code
http://pastebin.com/iBUGJ2eY http://pastebin.com/iBUGJ2eY
这是为我显示双重异常的确切代码,其中名称空间和路径编辑为 foos。请注意,在此安装中,我总是在命令行中遇到双重异常。我几乎可以肯定问题出在 PHP 配置上。
已经转载了。第一条错误消息的结果是log_errors
设置并转到STDERR
.
第二个结果是display_errors
并前往STDOUT
.
这两个设置都可以在运行时更改。因此,为了“好好地询问 PHP”,这就足够了:
ini_set('log_errors', 1);
ini_set('display_errors', 0);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)