[php]error_logが使えない環境でログをとる方法

sxchu_752518stop.jpg

※今日のお話は、最初から最後まで、知っている人にとっては当たり前すぎて困るレベルのお話です。

 phpでは、error_logという関数でログを出すことが出来て、一般にこれはApacheのエラーログに出力されるので、これを使うとなんだか動かないスクリプトの動きを追うことが出来ます。

ところが、一部のレンタルサーバで、PHPは使えるんだけどログを見せていただけない環境が存在します。全部見せてくれない環境はさすがに少ないですけど、例えばサブドメインを使っていると駄目とか、共用SSLを使っていると駄目とか。
こういう場合に、しょうがないので自前ログを用意する手順。

1.絶対パスを確認

ログを書き出す場所を決めるために、まずはディレクトリ構成を知る必要があります。
log.phpとか適当な名前のファイルに、こういうスクリプトを書いて走らせてみればだいたい分かります。

<?php
echo "cwd:".getcwd();
?>

「/home/mogya/public_html/」的なものが得られるはず。これだったら、/home/mogya/debug_log あたりにログを出力するようにすれば良さそうですね。

2.ログ出力関数

<?php
function dbg_log($str){
  $filepath = "/home/mogya/debug_log"; 
  $fp = fopen($filepath, "a+");
  fputs( $fp, $str."\n" );
  fclose($fp);
}
?>

ログを出力したいファイルの頭あたりにこんなのを書いておいて、error_log()の代わりにdbg_log()を書けば、変数の中身なり何なりを出力して動きを追うことが出来る。
環境によっては/home/mogya/debug_log に書き込めないことがあり得るので、その場合はFTPで適当なファイルをあげておいて、アクセス権を777にしてしまえば書き込めるようになる。

PHPでファイルに文字を書くだけなんだから当たり前の話なんだけど、毎回思い出すのが面倒なので書いてみた。
セキュリティとか深刻に考えたスクリプトじゃないので、終わったら消すことが前提です。


カテゴリ:

トラックバック(0)

このブログ記事を参照しているブログ一覧: [php]error_logが使えない環境でログをとる方法

このブログ記事に対するトラックバックURL: http://mogya.com/mt/mt-tb.cgi/1160

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、 もぎゃが 2011年4月12日 13:46に書いたブログ記事です。

ひとつ前のブログ記事は「 パソコンの前にいたまま被災地に救援物資を送る方法 」です。

次のブログ記事は「 WEBサービスを考える時に知っておくべき名前の法則 」です。

最近のコンテンツは インデックスページ で見られます。過去に書かれたものは アーカイブのページ で見られます。

Powered by
Movable Type