【问题标题】:Display fatal/notice errors in browser在浏览器中显示致命/通知错误
【发布时间】:2016-02-17 16:02:59
【问题描述】:

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

我将ini设置如下

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

根据ini_get 的var_dump,值被设置为

string(5) "32767"
string(1) "1"

但是当我这样做时

<?hh

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

throw new InvalidArgumentException('test');

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

但是我会通过终端hhvm index.php 它会显示吗?

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'test' in /var/www/public/index.php:3
Stack trace:
#0 {main}

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

我遇到了这个question 和this one。但第一个,好吧是一样的,但没有答案。第二个是关于静态检查的内容。 IE 给出了一个 int 等,至少我认为他是这个意思。

其他question我过来了,看起来像我的,但又无人回答。

根据docs,我猜它应该可以工作。

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

虽然 display_errors 可以在运行时设置(使用函数 ini_set()),但如果脚本出现致命错误,它不会有任何影响。这是因为没有执行所需的运行时操作。

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

这让 cli 到

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

再次在浏览器中

int(1) 

所以我也没有收到通知。

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

【问题讨论】:

    标签: hhvm


    【解决方案1】:

    好吧,我花了一些时间搜索,但最终找到了答案,see this github post。但是,它不能显示致命错误。但是会显示通知

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

    警告,不检查 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/>';
    });
    

    【讨论】:

    • 感谢非常有帮助。帮助我获得了在 HHVM 中显示的 PHP 通知。
    【解决方案2】:

    当 hhvm 失败时,可以回退到 php。这样做很简单 - https://bjornjohansen.no/hhvm-with-fallback-to-php。我了解您可以为每个错误代码(如 404)附加 php 后备。那么是否可以退回到显示加载hhvm错误日志的页面的php服务器?

    【讨论】:

      猜你喜欢
      • 2014-01-22
      • 2017-05-06
      • 1970-01-01
      • 2015-02-17
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      相关资源
      最近更新 更多