В журналах приложения 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».
Может быть полезно кому-то.