13

私の 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}

何が原因でしょうか? スタック トレースには、私のコードからは何も表示されません。

4

6 に答える 6

26

ANotFoundHttpExceptionは基本的に、アプリケーションの 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ます。

于 2014-01-10T12:30:34.653 に答える
1

コードを知らずに何が原因なのかを特定するのは非常に困難です。エラーのスタック トレースを見ると、Router がエラーをディスパッチしていることは明らかであり、バックグラウンド ジョブ自体とは関係なく、それが呼び出す API とは関係ないと思います。

特定のケースでは、 ResourceNotFoundExceptionの後に例外がスローされます。これは、そのような URL パターンに対してルートが定義されていない場合に発生します。

考えられる問題:

バックグラウンド ジョブが独自の API でfile_get_contentsまたはcurlを実行する場合、存在しないルートを呼び出し、その例外をスローしている可能性があります。

バックグラウンド ジョブがダウンロードしている URL を制御できない場合は、 などの URL を取得しようとしている可能性があり127.0.0.1ますlocalhost

于 2013-05-14T22:34:57.870 に答える