前提・実現したいこと
こちらの公式ドキュメントと同じファイル名・形式で記述したハンドラでエラーをリモートサーバーでも取得したい
https://book.cakephp.org/3/ja/development/errors.html#id7
// config/bootstrap.php の中で use App\Error\AppError; $errorHandler = new AppError(); $errorHandler->register(); // src/Error/AppError.php の中で namespace App\Error; use Cake\Error\BaseErrorHandler; class AppError extends BaseErrorHandler { public function _displayError($error, $debug) { echo 'エラーがありました!'; } public function _displayException($exception) { echo '例外がありました!'; } }
発生している問題・エラーメッセージ
config/app.php
config/bootstrap.php
src/Error/AppError.php
この3つのファイルはリモートサーバー もローカルサーバーも同じにしてあるのですが_displayError()でエラー内容を取得できるローカルに対して、リモートサーバーでは
public function _displayError($error, $debug) { var_dump($error); }
として、エラーを起こしても画面に何も出力できませんでした
(ローカルではページが見つかりませんという独自のエラービューにvar_dumpで変数の中身を表示できている状態です)
試したこと
それぞれ異なっていたconfig/app.phpファイルのデバック設定をまず、リモートのものはローカルに合わせてみました
define('IS_DEBUG', false); return [ 'debug' => filter_var(env('DEBUG', false), FILTER_VALIDATE_BOOLEAN),
を
$isDebug = true; define('IS_DEBUG', $isDebug); return [ 'debug' => filter_var(env('DEBUG', false), FILTER_VALIDATE_BOOLEAN), *ローカルではこれでエラーハンドラーから取得したエラーの出力ができていました
この時値が出力できなかったので、今度は反対にリモートのテスト環境で最初にされていたデバック設定にローカルを合わせました
リモートでもともと使われていたconfig/app.phpファイルのデバック設定をローカルでの記述してみましたが、ローカルではそのままエラーハンドラーで値を取得し出力することができています
取得した値を管理者へメール通知させたいのですが、そもそも値の取得ができずにいます
サーバー側の設定が影響しているのか、cakephp の設定ファイルで本来設定しなければいけないものを忘れているのか問題の切り分けができずにいます
ローカルの簡易的な環境であればできてしまうけれど、本来はここも設定を変えなければならないや、どこに原因があるか切り分けるためのデバック方法など何かありましたらお教えいただきたいです
補足情報(FW/ツールのバージョンなど)
ローカル
MAMP
リモートサーバー
Linux
共通
cake version 3.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/11/19 09:32