我有一个非常奇怪的情况:下面显示的代码在PHP中不会出错。
try {
throw new Exception('foo');
} catch(Exception $e) {
// here could be some custom functions to handle errors
die();
}
在我的电脑上打印
( ! ) SCREAM: Error suppression ignored for
( ! ) Exception: foo. in D:\wamp\www\index.php on line 4
为什么呢?哪个php ini选项可以做到这一点?
答案 0 :(得分:5)
Scream扩展是针对开发人员的扩展,因此即使通常会被抑制,他们也可以从代码中看到错误消息。
xDebug是另一个开发人员扩展,它也包含相同的功能。
如果您有这些扩展中的任何一个,则可以在PHP配置中禁用Scream功能。
但是这些扩展都不应该在生产系统上使用 - 它们仅用于开发人员的系统。如果它在您的实际网站上,则应完全禁用该扩展程序。
答案 1 :(得分:1)
http://www.php.net/manual/en/scream.examples-simple.php
通常,scream用于覆盖静默运算符(@),但如果它用于try catch,那么...你可以尝试使用内联ini_set将其关闭并查看是否修复了它
答案 2 :(得分:1)
谢谢大家的回答。是的,问题是xdebug,更准确:xdebug.show_exception_trace
选项。,已转为on
。
我们从xdebug documentation读到:
xdebug.show_exception_trace
类型:整数,默认值:0
当此设置设置为1时,Xdebug将在引发异常时显示堆栈跟踪 - 即使实际捕获到此异常。