【问题标题】:Laravel 4.2 doesn't catch the "PHP Parse errors" when they happen in Controllers or routes.php?Laravel 4.2 在 Controller 或 routes.php 中发生“PHP Parse 错误”时没有捕获它们?
【发布时间】:2015-01-27 02:47:47
【问题描述】:

Laravel 4.2 中,错误被捕获并显示在“漂亮”的页面上,这要感谢 Whoops。该错误也记录在配置的日志文件中(默认情况下:storage/log/...)。

您可以成为一名非常优秀的开发人员,但有时会发生这种情况,您忘记了;,您在代码中拼错了 PHP 命令、函数名(或其他任何内容),这将引发 “PHP 解析错误” 。如果它发生在“routes.php”或 Laravel 4 的任何控制器中,则不会显示漂亮的 Whoops 页面,并且 Laravel 不会记录错误。您必须找到记录在服务器默认 PHP 日志文件中的错误。

要重现错误,请在您的 routes.php 中创建一个新行,仅使用“let it bug”,然后保存文件,然后加载页面。什么都没有显示,对吧?这个错误只在你服务器默认的PHP日志文件中报错吧?

这种行为是否正常,您是否也会发生这种情况?有没有办法让它在 Laravel 中被 Whoops 捕获?

【问题讨论】:

  • 我得到了显示语法错误的 whoops 异常处理程序。
  • 真的是滞后?!你试过什么?编写无法在 routes.php 中解析的内容?你在 Laravel conf 中改变了什么吗?

标签: php laravel try-catch php-parse-error


【解决方案1】:

以下错误类型无法用用户定义的方式处理 功能:E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、 E_COMPILE_ERROR、E_COMPILE_WARNING 和大部分 E_STRICT 在 调用 set_error_handler() 的文件。

查看此处了解更多详情https://stackoverflow.com/a/1900224

【讨论】:

  • 我不太同意...如果我将这 4 行放在我的应用程序的开头:` ini_set('display_errors', 1); ` error_reporting(E_ALL); ini_set("log_errors" , "1"); ini_set("error_log" , dirname( __FILE__ )."/dev.log" ); 我的日志文件中包含所有错误(甚至是 E_PARSE 等)!
猜你喜欢
  • 2015-04-07
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 2011-09-03
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 2019-03-09
相关资源
最近更新 更多