【PHP】「error_log」の出力先を指定してデータを記録
PHPでプログラムを書いていると、処理の途中の状態や送受信したデータの中身を確認したい時があります。
そのようなときはエラーログに記録すると便利です。
レンタルサーバーではエラーログが出力されない(出力先が指定されていない)場合もありますので、ここではエラーログの出力先の指定とデータの記録を行う方法について説明したいと思います。
エラーログの出力
方法はとっても簡単で、ini_set関数でエラーログを有効にして出力先を指定します
(ini_set関数についてはphp.iniの設定をコード中で変更するを参考にしてください)。
そしてerror_log関数を使ってエラーログに出力するだけです。
<?php //エラーログをon ini_set('log_errors', 'On'); //エラーログの記録先を指定 ini_set('error_log', '/***/***/error.log'); //エラーログに出力したいデータ $error_log_data = "ほげ"; //エラーログに記録 error_log($error_log_data); ?>
すると、次のようにエラーログに記録されます。
[24-Aug-2016 21:48:23 Asia/Tokyo] ほげ
なお、現在作業しているディレクトリにエラーログを出力させたい場合は6行目を次のようにします。
//エラーログの記録先を現在のディレクトリにする ini_set('error_log', dirname(__FILE__) . '/error.log');
配列をエラーログに記録
PHPのプログラムの途中でエラーログに配列のデータを記録したい場合があります。
<?php //エラーログをon ini_set('log_errors', 'On'); //エラーログの記録先を指定 ini_set('error_log', '/***/***/error.log'); //エラーログに出力したい配列 $array = array('りんご', 'もも', 'なし'); //配列をエラーログに記録 error_log($array); ?>
しかしこれを実行した場合、次のようなエラーがおきます。
Warning: error_log() expects parameter 1 to be string, array given in /***/***/***.php on line 12
このエラーは、error_log関数には文字列型のデータしか渡せないにも関わらず、配列のデータを渡したことが原因です。
このような場合、次のようにするとエラーログに配列を記録することができるようになります。
<?php //エラーログをon ini_set('log_errors', 'On'); //エラーログの記録先を指定 ini_set('error_log', '/***/***/error.log'); //エラーログに出力したい配列 $array = array('りんご', 'もも', 'なし'); //配列をエラーログに記録 error_log(print_r($array,true)); ?>
これを実行すると、このように配列がエラーログに記録されます。
[24-Aug-2016 21:57:21 Asia/Tokyo] Array
(
[0] => りんご
[1] => もも
[2] => なし
)
なお、jsonエンコードされたデータは次のようにjsonデコードしてエラーログに記録すると良いと思います。
error_log(print_r(json_decode($json_data),true));
あわせて読んでほしい!
コメント
まだコメントはありません。