exception-handling - Laravel 5.6 - 处理 Api 的内部服务器错误 (500) 的异常处理程序
问题描述
在 laravel 中,我们可以如下处理异常:
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException or $exception instanceof NotFoundHttpException)
{
if($request->ajax() || $request->wantsJson()) {
return response()->json([
'message' => 'Record not found',
], 404);
}
}
return parent::render($request, $exception);
}
但是,当出现内部服务器错误时,Whoops something went wrong
如果在生产中,应用程序将返回页面,如果在调试中,则返回堆栈跟踪。
使用需要 json 的 api 时如何处理内部服务器错误?
解决方案
我有一个类似的问题,但它是我的.htaccess文件,我没有正确的配置。(我的环境是 Laravel 5.6,Bitmani LAMP)
.htaccess必须具有以下内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteBase /
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
这对我有用,在我的 API中修复了我的“内部服务器错误 (500)” 。一个建议是您检查 apache 日志(error_log 和 access_log),它们可以为您提供更多信息。
我希望它对你有帮助。
推荐阅读
- javascript - Javascript切片方法,从某个word.s开始
- javascript - 试图弄清楚如何安装这个 jquery 脚本
- azure - 使用 asp.net 核心在 F1/D1 Azure 计划中生成 PDF
- python - lxml - 多个根和格式问题
- c# - 用特定模式填充矩阵
- mysql - MySQL:两边的TRIM空格和换行符
- c# - 仅增量到特定数字然后开始增量
- django - 使用 transaction.atomic() 和 transaction.commit()
- reactjs - react中哪个地方更适合fetch
- php - PHP 警告:openssl_decrypt():IV 传递的长度为 32 个字节,比所选密码预期的 16 个字节长