【PHP】POST・GETされたデータとヘッダーをロギングする方法

PHP

 デバッグするときに、POST・GETで送信したデータやリクエストヘッダーを確認したいときがあります。テキストファイルに書き出しておけると便利でしょう。

 こういうときに使えるコードを載せておきます。

スポンサーリンク

サンプルコード

 phpファイルを作成し、以下のコードをコピー・アンド・ペーストします。Webサーバーにアップロードすれば完了です。

<?php
// ログ保存ファイル名
define("TXTFILE", "log.txt");
// ファイルを追記モードでオープン
$fh = fopen(TXTFILE, "a+");
//ヘッダーをすべて取得して、配列として取得
$str = print_r(getallheaders(), true);//print_r関数は、第2引数んいtrueを指定すると、内容を返すことができる
// ファイルに追記する
fputs($fh,  date("Y-m-d H:i:s") . ' ' . $str . "\n");
// WEBページにも表示しておく
echo ($str);
// POSTされたデータをすべて取得して、配列として取得
$str = print_r($_POST, true);
// ファイルに追記する
fputs($fh,  date("Y-m-d H:i:s") . ' ' . $str . "\n");
// GETされたデータをすべて取得して、配列として取得
$str = print_r($_GET, true);
// ファイルに追記する
fputs($fh,  date("Y-m-d H:i:s") . ' ' . $str . "\n");
// WEBページにも表示しておく
echo ($str);
// ファイルを閉じる
fclose($fh);
// var_dump(file_get_contents(TXTFILE));
?>

あとはそのphpにPOSTしてみると、こんな感じで、POSTされたデータとRequestヘッダーがテキストファイルに記録されます。

2020-12-10 12:44:24 Array
(
    [Content-Type] => application/x-www-form-urlencoded
    [Host] => 192.168.1.4
    [Content-Length] => 13
    [Cache-Control] => no-cache
)

2020-12-10 12:44:24 Array
(
    [a] => 1234
    [b] => 5678
)
2020-12-10 12:44:24 Array
(
)

 ログを出力するテキストファイルは、phpを配置したディレクトリに作成されます。GETでもヘッダーは記録されますので、ブラウザでアクセスするだけでもログが追加されていきます。

 もちろん、ログファイルが作成されるディレクトリは、Webサーバーから書き込めるように、書き込み権限を設定しておく必要がありますので、お忘れなく。

# chmod -R 777 test //全ユーザーからの全権限(書き込み含む)を許可

コメント

タイトルとURLをコピーしました