在浏览器中显示致命/通知错误

MKr*_*ers 8 hhvm

好吧,我刚开始使用hhvm/hack.但是我想向浏览器显示错误,但没有让它工作.

我按照以下方式设置了ini设置

error_reporting(E_ALL);
ini_set('display_errors', '1');
Run Code Online (Sandbox Code Playgroud)

根据var_dump ini_get的值设置为

string(5) "32767"
string(1) "1"
Run Code Online (Sandbox Code Playgroud)

但是当我这样做的时候

<?hh

error_reporting(E_ALL);
ini_set('display_errors', '1');

throw new InvalidArgumentException('test');
Run Code Online (Sandbox Code Playgroud)

当我通过浏览器访问页面时,我会得到一个白色屏幕和一个500 http头.所以没有解释致命/异常错误.

然而,我会通过终端hhvm index.php它会显示;

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'test' in /var/www/public/index.php:3
Stack trace:
#0 {main}
Run Code Online (Sandbox Code Playgroud)

所以现在问题.怎么来我在浏览器中没有收到任何消息,但在cli中做什么?第二个是,我如何让它在浏览器中工作以显示消息.

我遇到了这个问题这个问题.但第一个,好的是相同的,但是没有答案.第二个是关于静态检查的说法.IE给出了一个int等,至少这是我认为他的意思.

我来的其他问题,看起来像我的,但又没有答案.

根据文档,它应该工作,我猜.

阅读更多关于我遇到的文档

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

所以我认为异常是一个致命的错误,所以我就这么做了 $test = $bar + 1;

这让cli来了

Notice: Undefined variable: bar in /var/www/public/index.php on line 8
int(1)
Run Code Online (Sandbox Code Playgroud)

再次在浏览器中

int(1) 
Run Code Online (Sandbox Code Playgroud)

所以我也没有收到通知.

当我重新启动hhvm时,service hhvm restart我也收到错误消息Log file not specified under daemon mode.,不知道它是否与它有任何关系

MKr*_*ers 6

好吧,它花了我一些搜索,但终于找到答案,看到这个github帖子.但它不能显示致命错误.但会显示通知

所以我写了自己的错误处理程序; 它不完整,但现在完成工作.

警告,没有检查ini display_errors

set_error_handler(function ($errorNumber, $message, $errfile, $errline) {
    switch ($errorNumber) {
        case E_ERROR :
            $errorLevel = 'Error';
            break;

        case E_WARNING :
            $errorLevel = 'Warning';
            break;

        case E_NOTICE :
            $errorLevel = 'Notice';
            break;

        default :
            $errorLevel = 'Undefined';
    }

    echo '<br/><b>' . $errorLevel . '</b>: ' . $message . ' in <b>'.$errfile . '</b> on line <b>' . $errline . '</b><br/>';
});
Run Code Online (Sandbox Code Playgroud)