laravel5.5 不能正常自动回复的问题

  虽然开启了APP_DEBUG 但是 log 却没有记录任何错误信息,后来经过测试发现原来是路由问题,因为微信服务器发送消息是使用 post 方法,但是我的路由定义只定义了 get (tp 用多了习惯了不分 get、post),所以会导致路由异常,从而导致微信公众号上面会提示服务器故障,中间方向错误,导致排查很久,后来才想起可以在异常处理文件里面写 log。

  这时候我们可以在 app\Exceptions\Handler.php 的 report 方法加上下面几句,出异常的时候记录错误信息:

        if (env('APP_DEBUG')) {
            \Log::error('error file: ' . $exception->getFile());
            \Log::error('error line: ' . $exception->getLine());
            \Log::error('error message: ' . $exception->getMessage());
            \Log::error('exception type: ' . get_class($exception));
            \Log::error('trace' . $exception->getTraceAsString());
        }

  加上之后 report 方法如下:

  这样一来,开发过程中的 500 就全部记录下来(前提是开启debug模式),这样开发的时候,微信提示服务器故障的时候就可以去看 log 是什么原因导致的。

  

  还有一个需要注意的是:laravel 默认开启 csrf 的验证,我们可以在 app\Http\Kernel.php $middlewareGroups 中可以看到有这么一行:

  \App\Http\Middleware\VerifyCsrfToken::class,

  但是我们需要清楚的是,微信 post 过来的数据是没有这个 token 的,所以我们需要把这一行注释掉,否则在验证这一步就会返回,得不到我们想要的结果。

 

posted @ 2017-10-13 23:25  佚名000  阅读(245)  评论(0编辑  收藏  举报