1

例外をスローするユーザーがアクセスしようとしたURLを表示するCakePHP例外ハンドラーを作成/拡張することは可能ですか?

通常、error.logファイルを調べると、次のようなものが表示されます。

2012-08-01 13:39:20エラー:[MissingControllerException]コントローラークラスUserControllerが見つかりませんでした。#0 /www/htdocs/w0081e0e/app/webroot/index.php(104):Dispatcher-> dispatch(Object(CakeRequest)、Object(CakeResponse))#1 {main}

動作しているUsersControllerがありますが、ユーザーがどのURLにアクセスしようとしたのかわからないため、このエラーがスローされます。error.logファイルのURLを確認するのに役立ちます。それは可能ですか?例外処理ファイルを作成/拡張する必要がありますか?


更新: 独自のExceptionHandlerを作成する代わりに、「lib / Cake / Error/ErrorHandler.php」の「handleException」関数を更新しました。

if (!empty($config['log'])) {
        $message = sprintf("[%s] %s\n%s",
            get_class($exception),
            $exception->getMessage(),
            $exception->getTraceAsString().' - http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."\n"
        );
        CakeLog::write(LOG_ERR, $message);
    }

CakePHPのバージョンを更新すると、これが上書きされることはわかっていますが、私の状況では非常にうまく機能するクイックフィックスです。

4

1 に答える 1

1

独自の例外ハンドラーを作成できます。http://book.cakephp.org/2.0/en/development/exceptions.html#create-your-own-exception-handler-with-exception-handlerでかなりよく文書化されています

とにかくURLはのようhttp://something/user/somethingです。エラーは「UserController見つかりませんでした」と表示されます。これは、UsersController(複数形)しかないためです。このエラーを回避したいだけの場合は、/user/URLを作成するファイルを見つけるだけで十分な場合があります。

于 2012-08-01T12:55:42.973 に答える