【PHP】「error_log」の出力先を指定してデータを記録

公開日:
更新日:
カテゴリー: PHP

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));

 

あわせて読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント