如何在laravel 5.4刀片中找到准确的错误线?

时间:2017-09-22 10:05:46

标签: php debugging laravel-5 blade

我知道laravel会缓存刀片文件,当刀片服务器出现错误时,版本5.3中的错误会是这样的:

[DisplayFormat(DataFormatString = "{0:yyyy/dd/MM}")]

然后我可以转到缓存文件并找到确切的行

但是在版本5.4 laravel中引用了确切的刀片文件(不是缓存文件)但没有行号!像这样:

Undefined offset: 0 (View:b5c0ef4df49585eadd7fc1fa15b2d8a03e8c3bdd.php) line: 47

现在如何找到错误?

更新

我知道问题出在哪里,以及如何解决这个问题,但我希望Laravel自动告诉我这是否必须手动查找。如果刀片文件很大怎么办?

4 个答案:

答案 0 :(得分:1)

您可以使用Laravel Debugbar。这很容易使用。按照以下链接,您将得到您想要的。

https://github.com/barryvdh/laravel-debugbar

答案 1 :(得分:1)

这不是查找在缓存视图文件中引发的错误的简便方法。 但是如果您关闭了调试模式,并且很快就会发现它, 我建议这样: 我知道这不整洁。

1-在./storage/laravel/log/today.log中发现错误:  (b5c0ef4df49585eadd7fc1fa15b2d8a03e8c3bdd.php)(第47行)

2- cat ./storage/framework/view/b5c0ef4df49585eadd7fc1fa15b2d8a03e8c3bdd.php(错误日志中的文件名)

3-将内容从终端复制到编辑器(从第一行到最后)

4-您可以找到越野车线。

答案 2 :(得分:0)

  

未定义的偏移量:0

通常,当您尝试访问不存在的数组索引时会发生此错误。在您的情况下,它是0索引。要删除此错误,只需检查数组是否具有指定的索引:

isset( $m->translations[0]->role ) ? $m->translations[0]->role : ''

或在刀片中,您可以尝试:

{{ $m->translations[0]->role or '' }}

答案 3 :(得分:0)

从Laravel 5.7开始,输出在左侧显示堆栈帧,在右侧显示所选帧的详细信息。如果您浏览堆栈,您会发现其中的条目之一是刀片文件的解析版本(通常位于堆栈底部的(main)框架附近)。单击此框架会将您带到导致该异常的刀片文件的确切行。

enter image description here