Laravel 4 Исключение: NotFoundHttpException

В журналах приложения Laravel 4 иногда отображается NotFoundHttpException :

 exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' in /var/www/laravel4/bootstrap/compiled.php:7420 Stack trace: #0 /var/www/laravel4/bootstrap/compiled.php(7137): Illuminate\Routing\Router->handleRoutingException(Object(Symfony\Component\Routing\Exception\ResourceNotFoundException)) #1 /var/www/laravel4/bootstrap/compiled.php(7113): Illuminate\Routing\Router->findRoute(Object(Illuminate\Http\Request)) #2 /var/www/laravel4/bootstrap/compiled.php(958): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #3 /var/www/laravel4/bootstrap/compiled.php(946): Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request)) #4 /var/www/laravel4/public/index.php(49): Illuminate\Foundation\Application->run() #5 {main} 

Что могло быть причиной этого? Трассировка стека ничего не отображает из моего кода.

NotFoundHttpException – это всего лишь 404 в вашем приложении. К сожалению, сообщение об исключении даже не сообщает вам URL-адрес запроса, вызвавшего исключение, что затрудняет понимание этих ошибок, когда вы видите их в своих журналах.

Чтобы предоставить вам дополнительную информацию об отладке, настройте свой собственный обработчик 404. Вот простой обработчик, который будет регистрировать URL-адрес (чтобы вы знали, что было предложено для запуска ошибки) и пользовательский агент (чтобы помочь вам выяснить, кто или что сделал запрос) и вернуть представление и код 404:

 App::missing(function($e) { $url = Request::fullUrl(); $userAgent = Request::header('user-agent'); Log::warning("404 for URL: $url requested by user agent: $userAgent"); return Response::view('errors.not-found', array(), 404); }); 

Поместите его в app/start/global.php .

У меня возникла эта проблема, потому что я заглавил имя родительского каталога и не использовал его в URL. Вот почему я получил ошибку.

Я использовал этот url localhost / laravel / todo2 / public / foo, и на самом деле он работал, если все, что я набрал, было: localhost / Laravel / todo2 / public /, но если я набрал что-нибудь после публикации / он дал бы эту ошибку.

если я использовал это с Laravel заглавными localhost / Laravel / todo2 / public / foo

маршруты после публики / будут работать

Трудно сказать точно, что вызывает это, не зная вашего кода. Глядя на трассировку стека ошибки, ясно, что маршрутизатор отправляет ее, и я думаю, что это не имеет никакого отношения к фоновой работе, а скорее к API-интерфейсу.

В вашем конкретном случае исключение вызывается после исключения ResourceNotFoundException , которое происходит, когда для такого шаблона URL нет маршрута.

Возможные проблемы:

Если фоновое задание создает file_get_contents или curl на вашем собственном API, он может вызывать маршрут, который не существует, а затем бросает это исключение.

Если вы не контролируете загрузку фонового задания URL-адреса, оно может пытаться получить URL-адрес, например 127.0.0.1 , localhost или что-то в этом роде.

Мой проект находится в C: \ xampp \ htdocs \ ColorTex

Я получил эту ошибку, набрав

http://localhost/myproject/public/image

вместо

http://localhost/MyProject/public/image

Я в окнах, поэтому я подумал, что он проигнорирует капитализацию, но …

Будьте осторожны с этим.

Вы можете отфильтровать ошибку 404 (NotFoundHttpException) из вашего файла журнала.
Местоположение файла: app / start / global.php

 App::error(function(Exception $exception, $errorCode) { $requestUrl = Request::fullUrl(); $userAgent = Request::header('user-agent'); if($errorCode != 404){ Log::error('Exception', array( 'errorCode' => $errorCode, 'requestUrl' => $requestUrl, 'userAgent' => $userAgent, 'context' => $exception, )); } return Response::view('error-page-path.error-404', array(), 404); // Here "error-404" is a blade view file in "error-page-path" directory }); 

Я получил эту ошибку, потому что я использовал метод = «post» в моей форме вместо метода = «POST».

Может быть полезно кому-то.