Php 什么会导致错误在Laravel中没有消息

Php 什么会导致错误在Laravel中没有消息,php,laravel,Php,Laravel,所以这个问题更多的是基于为什么一个错误中只有一部分显示了错误本身(尽管如果有人也能解决这个错误那就太好了) 不过,我在Laravel中有一个日志功能,它可以通过电子邮件发送错误通知并记录错误。(不可否认,这可能不是最佳实践,尽管它倾向于达到目的)。我发送错误电子邮件的代码如下所示 Message: File: C:\api\vendor\laravel\framework\src\Illuminate\Routing\RouteCollection.php Trace: #0 C:\

所以这个问题更多的是基于为什么一个错误中只有一部分显示了错误本身(尽管如果有人也能解决这个错误那就太好了)

不过,我在Laravel中有一个日志功能,它可以通过电子邮件发送错误通知并记录错误。(不可否认,这可能不是最佳实践,尽管它倾向于达到目的)。我发送错误电子邮件的代码如下所示

Message: 
File: C:\api\vendor\laravel\framework\src\Illuminate\Routing\RouteCollection.php
Trace: 
    #0 C:\api\vendor\laravel\framework\src\Illuminate\Routing\Router.php(823): Illuminate\Routing\RouteCollection->match(Object(Illuminate\Http\Request)) 
    #1 C:\api\vendor\laravel\framework\src\Illuminate\Routing\Router.php(691): Illuminate\Routing\Router->findRoute(Object(Illuminate\Http\Request)) 
    #2 C:\api\vendor\laravel\framework\src\Illuminate\Routing\Router.php(675): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) 
    #3 C:\api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(246): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) 
    #4 [internal function]: Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request)) 
    #5 C:\api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(52): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
    #6 C:\api\vendor\barryvdh\laravel-cors\src\HandleCors.php(34): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) 
    #7 [internal function]: Barryvdh\Cors\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure)) 
    #8 C:\api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(124): call_user_func_array(Array, Array) 
    #9 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
    #10 C:\api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
    #11 C:\api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php(44): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) 
    #12 [internal function]: Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) 
    #13 C:\api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(124): call_user_func_array(Array, Array) 
    #14 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
    #15 C:\api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
    #16 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) 
    #17 C:\api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(103): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
    #18 C:\api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(132): Illuminate\Pipeline\Pipeline->then(Object(Closure)) 
    #19 C:\api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(99): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) 
    #20 C:\api\public\index.php(54): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) 
    #21 {main}
异常\Handler.php

public function report(Exception $e)
{
    \Mail::send('emails.error', ['error' => $e], function ($m) use ($e) {


        $m->from('noreply@mydomain.com', 'MMC API | Laravel Error ');

        $m->to('me@mydomain.com')
        ->cc('someoneelse@mydomain.com')
        ->subject($e->getMessage());
    });

    parent::report($e);
}
<p><strong>Message: </strong>{{ $error->getMessage() }}</p>
<p><strong>File: </strong>{{ $error->getFile() }}</p>
<p><strong>Trace: </strong>{{$error->getTraceAsString()}}</p>
resources\views\email\error.blade.php

public function report(Exception $e)
{
    \Mail::send('emails.error', ['error' => $e], function ($m) use ($e) {


        $m->from('noreply@mydomain.com', 'MMC API | Laravel Error ');

        $m->to('me@mydomain.com')
        ->cc('someoneelse@mydomain.com')
        ->subject($e->getMessage());
    });

    parent::report($e);
}
<p><strong>Message: </strong>{{ $error->getMessage() }}</p>
<p><strong>File: </strong>{{ $error->getFile() }}</p>
<p><strong>Trace: </strong>{{$error->getTraceAsString()}}</p>
似乎我用来启用跨域API的
Barryvdh\Cors\HandleCors-
可能有问题,或者可能是一个网络爬虫试图探索一条不同于我所允许的路线

对于我的原始问题:是否可能在没有消息的情况下发生错误,通过
getMessage()


和附加问题:是否可以利用有限的可用信息诊断我收到的路由错误?

原始问题的答案是肯定的,您可以有一个没有消息的异常

您的奖金问题的答案是肯定的,您可以根据当前信息进行有根据的猜测。当你这样做的时候,这实际上会告诉你原来问题的答案

从stacktrace可以看出,调用的最后一个方法(从第0行)是
illighte\Routing\RouteCollection->match
。如果深入研究并查看此方法,您可以看到,如果没有匹配的路由,它将调用
throw new NotFoundHttpException

考虑到这是该方法显式抛出的唯一异常,以及在没有设置消息的情况下抛出该异常的事实,很有可能这是您的错误


所以,基本上,有人试图去一条根本不存在的路线。

我以前见过这种错误,但不是为了邮寄。但是我可以告诉你,错误来自你的路由,或者你试图访问一个不存在的路由方法,或者你使用了错误的路由方法