如何从laravel获得有用的调试或错误消息

时间:2017-07-29 13:49:06

标签: laravel laravel-5.4

我对laravel有点新意,但我在Php中经验丰富。 在以前的作品中,我设置了一种机制,可以让我在服务器上几乎发生任何问题时得到通知:

  • 我得到了全栈
  • 精确的PHP错误消息
  • 几乎所有错误之王
  • 发给我的邮件

所以,当我开始使用laravel时,我尝试做同样的事情,并实现了:

  • 全栈
  • 发给我的邮件

但在所有情况下我都不会有有意义的错误。一个例子:

$store = Store::create(...)

在这一行中,我忘记指定命名空间(\ App \ Store :: create),我收到这些错误消息:
第一:

FatalThrowableError ; Type error: Argument 1 passed to App\Http\Controllers\User::create() must be an instance of Illuminate\Http\Request, array given, called in /var/www/html/laravel/blog/app/Http/Controllers/User.php on line 94  

第二:

ErrorException ; Trying to get property of non-object in VerifyCsrfToken.php (line 156)   
第三:

FatalThrowableError ; Type error: Argument 1 passed to Illuminate\Session\Middleware\StartSession::addCookieToResponse() must be an instance of Symfony\Component\HttpFoundation\Response, array given, called in /var/www/html/laravel/blog/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php on line 72

我理解laravel是一个复杂的框架,但我无法弄清楚为什么它会产生这些错误,以及我如何能够产生更多有用的错误(因为我只能知道“有些东西不好”)。

有人有想法吗?

¹Pep优先保留自己的错误(在日志中):-)

2 个答案:

答案 0 :(得分:0)

  

当您启动一个新的Laravel项目时,错误和异常处理就是   已经为您配置。 App \ Exceptions \ Handler类就在哪里   记录您的应用程序触发的所有异常   回复给用户。

https://laravel.com/docs/5.4/errors

我建议您深入了解官方文档并进入App\Exceptions\Handler

也许您正在寻找该课程中的reportrender方法。

答案 1 :(得分:0)

我终于把问题弄成了问题而且我学到了很多东西 我感谢他们的仁慈@Don&#tt Panic和@Vitalmax!

错误是我忘了PHP命名空间不区分大小写:在我的帖子中我清理了一些代码,因为我知道它并没有遵守代码的约定(控制器'名称必须以大写字母开头)。最初我的控制器名称是用户,错误的代码是:

$user = User::create(...)

你可以猜到PHP认为我想调用 user :: create (因为我在我的控制器中有这样的方法)而不是 User :: create (我想要的)。

我学到了什么:

  • 在寻求帮助时不要更改代码
  • Laravel使用可能妨碍调试的缓存系统(请参阅我在laracast's forum上提出的问题)
  • 花更多时间阅读错误信息;我知道这个规则,但我一直在做其他事情