5

私はphp.iniの設定に従っています-

error_reporting = E_ALL | E_NOTICE | E_STRICT|E_WARNING
display_errors = Off
log_errors = On
error_log = "/var/log/php_errors.log"

そしてCodeIgniterのconfig.php-

$config['log_threshold'] = 1;
$config['log_path'] = getcwd() . '/' . SYSDIR . '/logs/';

Index.php ファイルでは、

case 'development':
error_reporting(E_ALL);
break;

case 'testing':
case 'production':
     error_reporting(0);

Index.php で「開発中」の場合、Web ページにも警告とエラー メッセージが表示され、php_errors.log ファイルに PHP 致命的エラー、PHP 解析エラーが表示されます。しかし、「本番」にすると、エラー/警告は表示されず、ファイルにも記録されません。すべてのエラーとメッセージを表示せずにログに記録するにはどうすればよいですか?

(ここで言及する-フォルダーapplication/logs/は777で、そこにあるのは「403 Forbidden」が書かれたindex.htmlだけです。)

4

3 に答える 3

1

完全にはわかりませんが、2つのことを混ぜ合わせていると思います。

php設定のerror_reportingは、phpスクリプトの実行中に作成されたエラーを示します。「desplay_errors」を使用する場合=オフ。PHPはこれらのエラーを表示しません。log_errorsをオンにして、フォルダーをセットアップしました。したがって、PHPエラーは/var/log/php_errors.logファイルに到達します。

一方、CodeIgniterは次の関数を使用します。

log_message('level,'message')

これは、エラー/デバッグ/情報をログファイルに保存するのに役立ちます。あなたが電話する場合

log_message('error','I'm an error!')

コードのどこかに、実際にはログディレクトリに新しいログファイルが必要です。

内部的には、PHPエラーがある場合、CodeIgniterはlog_message()を使用します。display_errorがOffに設定されている間、それがどのように動作するかは本当にわかりません(彼はエラーがなかったと思いますか?)。

独自のlog_messageを呼び出して、 display_errorsOnに切り替えてみてください。私はそれが役立つはずだと思います。

于 2013-03-13T16:49:00.400 に答える
1

error_reporting(E_ALL); を設定する必要があります。index.php ファイルの「production」の場合

于 2016-01-07T08:12:00.250 に答える