2017-12-23 7 views
0

In meiner .env Datei habe ich die folgende Einstellung für meinen Produktionsserver:Lumen Anforderungsüberprüfung funktioniert nicht

APP_ENV=production 
APP_DEBUG=false 

In Laravel \ Lumen docs, dass es gesagt, wenn wir das Projekt auf dem Produktionsserver laufen wir APP_DEBUG setzen sollen B. false und ändern APP_ENV von local zu production. Wenn ich dies tue, funktioniert die Lumenanforderungsvalidierung nicht mehr. Aber wenn ich APP_DEBUG zu true Anforderungsvalidierung funktioniert, wie erwartet. Fehle ich etwas?

P.S. Produktionsserverumgebung PHP-Version ist 7.1.12

UPDATE

Auch habe ich den folgenden Code in App\Exceptions\Handler.php Methode machen, die ich denke, auch das Verhalten beeinflusst:

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); 

Wenn ich gesetzt APP_ENV=production und APP_DEBUG=false, die Rendermethode exception gibt ihre json-Antworten anstelle der Validierungsantworten zurück.

+0

Sie brauchen Antwort-Bestätigungsnachricht? JSON –

Antwort

0

Ich glaube, das Problem hier ist, dass Sie hier nicht umgehen Illuminate\Validation\ValidationException.

Je nach Bedarf können Sie ändern möchten:

if (env('APP_DEBUG')) { 
    return parent::render($request, $e); 
} 

in

if (env('APP_DEBUG') || $e instanceof \Illuminate\Validation\ValidationException) { 
    return parent::render($request, $e); 
} 

oder zusätzliche elseif Block, der das tun, was Sie wollen, wenn $e instanceof ist \Illuminate\Validation\ValidationException

+0

Ich dachte, es ist bereits behandelt, weil es in $ dontReport-Array ist, aber später erkannte ich, dass diese beiden überhaupt nicht verwandt sind, vielen Dank –