在我的.env文件中,我的生产服务器设置如下:
APP_ENV=production
APP_DEBUG=false在laravel\lumen中,据说如果我们在生产服务器上运行项目,我们应该将APP_DEBUG设置为false,并将APP_ENV从local更改为production。当我这样做的时候,鲁门的请求验证就停止了。但是,当我将APP_DEBUG设置为true时,请求验证就像预期的那样工作。我是不是遗漏了什么?
生产服务器环境PHP版本为7.1.12
更新
另外,我在App\Exceptions\Handler.php呈现方法中有以下代码,我认为它也会影响行为:
if (env('APP_DEBUG')) {
return parent::render($request, $e);
}
$message = 'Внутренняя ошибка на сервере';
$response_code = 500;
if ($e instanceof MethodNotAllowedHttpException) {
$message = 'Запрос не разрешен (неправильный метод запроса)';
$response_code = 405;
}
elseif ($e instanceof NotFoundHttpException) {
$message = 'Указан неверный адрес конечной точки API';
$response_code = 404;
}
elseif ($e instanceof AuthorizationException) {
$message = 'Отказ в доступе (нет прав на доступ)';
$response_code = 403;
}
elseif ($e instanceof FatalThrowableError || $e instanceof \ErrorException)
{
$message = 'Неверный запрос URL-адреса (проверьте поля запроса)';
$response_code = 400;
}
elseif ($e instanceof QueryException) {
$message = 'Нарушение целостности базы данных';
$response_code = 406;
}
return response()->json([
'success' => false,
'errors' => [
[
'id' => 'default',
'message' => $message
]
]
], $response_code);如果设置了APP_ENV=production和APP_DEBUG=false,则异常的render方法将返回其json响应,而不是验证响应。
发布于 2017-12-23 09:28:26
我相信这里的问题是你在这里不处理Illuminate\Validation\ValidationException。
根据您的需要,您可能想要更改:
if (env('APP_DEBUG')) {
return parent::render($request, $e);
}转到
if (env('APP_DEBUG') || $e instanceof \Illuminate\Validation\ValidationException) {
return parent::render($request, $e);
}或者添加额外的elseif块,以便在$e是\Illuminate\Validation\ValidationException实例时执行您想要的操作。
https://stackoverflow.com/questions/47949546
复制相似问题