2

我有一个非常奇怪的情况:下面显示的代码在 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 选项可以做到这一点?

4

3 回答 3

5

Scream 扩展是针对开发人员的扩展,因此即使通常会被抑制,他们也可以从代码中看到错误消息。

xDebug 是另一个开发者扩展,也包含相同的功能。

如果您有这些扩展中的任何一个,则可以在您的 PHP 配置中禁用 Scream 功能。

但是这些扩展都不应该在生产系统上使用——它们只打算在开发人员的系统上使用。如果它在您的实时站点上,则应完全禁用该扩展程序。

于 2013-02-05T17:33:11.990 回答
1

http://www.php.net/manual/en/scream.examples-simple.php

通常,scream 用于覆盖静默运算符 (@),但如果它也是为了 try catch 执行此操作...您可以尝试使用内联 ini_set 将其关闭,看看是否可以修复它。

于 2013-02-05T17:25:21.883 回答
1

谢谢大家的回答。是的,问题出在 xdebug 上,更准确地说是:xdebug.show_exception_traceoption.,它变成了on.

正如我们从xdebug 文档中读到的:

xdebug.show_exception_trace
类型:整数,默认值:0
当此设置设置为 1 时,无论何时引发异常,Xdebug 都会显示堆栈跟踪——即使该异常实际上已被捕获。

于 2013-02-05T17:41:25.520 回答