目的は、PHPプログラムの実行中にクリティカルなエラーが発生したことをswatch経由で取得するためです。
現在のログ周りのphp.iniを以下に記載します。
error_reporting = E_ALL & ~E_NOTICE
display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_NOTICE
E_ALL(ただしE_NOTICEは除く)という設定なので致命的エラーはerror_log(access_logとは別ファイル)に出力されてるはずです。
http://php.net/manual/ja/function.error-reporting.php
エラーログの出力先を変えたい場合はphp.iniにて下記の設定を行いますがサーバ全体に影響しますのでレンタルサーバ(占有/VBSで管理者権限を有している場合は除く)であれば無理かもしれません。詳しくはサーバ管理者に相談してくださいね。
error_log = "ディレクトリ/ファイル名"
エラーハンドラを置き換えることで対応可能です。
下記のスクリプトをプログラム冒頭に組み込み、"エラーログファイル名" に出力したいファイル名を記述してください。そのファイルにエラーログを追記します。
//新しいエラーハンドラ function myErrorHandler($errno, $errmsg, $filename, $linenum) { $msg = sprintf("PHP error %d: %s in file %s on line %d\n", $errno, $errmsg, $filenam e, $linenum); echo $msg; file_put_contents(エラーログファイル名, $meg, FILE_APPEND); } //エラーハンドラの置換 $old_error_handler = set_error_handler('myErrorHandler');
E_ERRORレベルのエラーが発生したらプログラムの実行は直ちに行われなくなるのでエラーハンドラの置き換えをしても補足できないはずです。
質問がクリアではなくてすいません。クラスIDが見つからなかったときには、E_ERRORレベルのエラーが発生するはずです。そしたら、上記の設定ではapacheのエラーログに出力されると思っていましたが、出力されていません。