error_log

error_log はデバッグのときに重宝します。
PHP gcm Function のプログラムを例に使い方を説明します。

プログラムの作成

error_log.php のソースコードを Shift-JIS でタイプして C:\DATA\PHP\ に格納して下さい。
元は PHP gcm Function です。
<?php
    function gcm($n,$m)
    {   error_log("gcm 関数が呼ばれました  $n : $m\n", 3, 'app.log');
        while($n<>$m)
        {   if ($n>$m)  $n-= $m;
            else        $m-= $n;
        }
        return($n);
    }
    function lcm($n,$m)
    {   error_log("lcm 関数が呼ばれました  $n : $m\n", 3, 'app.log');
        return($n*$m/gcm($n,$m));
    }
?>

<?php
    print "gcm(32,24)=". gcm(32,24). "\r\n";
    print "lcm(72,180)=". lcm(72,180). "\r\n";
?>

【実行画面】
コマンドプロンプトを起動して error_log.php をコンパイルします。
C:\DATA\PHP>php error_log.php

gcm(32,24)=8
lcm(72,180)=360

C:\DATA\PHP>

プログラムの説明

  1. gcm() 関数と lcm() 関数を定義します。
    C言語のように関数に型はありません。全て function で始めます。
    詳細は PHP gcm Function を参照して下さい。
  2. gcm() 関数が呼ばれると error_log() 関数でメッセージとパラメータをログファイルに書き出します。
    3, 'app.log' とすると、テキスト形式で 'app.log' ファイルに書き出してくれます。
        {   error_log("gcm 関数が呼ばれました  $n : $m\n", 3, 'app.log');
    
  3. 同様に lcm() 関数が呼ばれたときも error_log() 関数でメッセージとパラメータを app.log に書き出します。
        {   error_log("lcm 関数が呼ばれました  $n : $m\n", 3, 'app.log');
    
  4. 'app.log' に書き出されたログです。
    lcm() 関数の中から gcm() 関数を呼び出していることが良く解るでしょう。
    gcm 関数が呼ばれました  32 : 24
    lcm 関数が呼ばれました  72 : 180
    gcm 関数が呼ばれました  72 : 180
    
  5. ファイルの名前は 'app.log' としているので、カレントフォルダーに作成されます。
    error_log() で書き出されたテキストはクリアされること無く追加されて行きます。
    適当なタイミングでテキストを削除して下さい。(ファイルを削除してもOKです)
  6. 配列を指定するときは「.」で結合して下さい。
    $array = array( 3, 8, 1 );
    error_log("array list [" . $array[0] . $array[1] . $array[2] . "]$game->msg\n", 3, 'app.log');
    

NET 環境で使う

  1. error_log() はサーバー上でも使えます。
    コマンドプロンプトで実行する場合と異なり、サーバー環境ではデバッグも厄介で error_log() が効果を発揮します。
    テキストファイルの出力では、事前にファイルをアップロードして書き込みと読み込み属性を設定したのですがその必要はありません。
    複数のクライアントが不定期にアクセスする場合には、時系列に沿って記録されるのでデバッグのときに威力を発揮します。
    但し、ネットワーク環境では古いメッセージが時系列を無視して呼び出されることもあるようで、参考程度に留めて下さい。
  2. サーバーにアップロードしたときは 'app.log' は実行したカレントディレクトリに作成されます。
    FTP などを利用してサーバーから取得して下さい。
  3. FTP などを使わなくても 'app.log' が確認出来るように text_print.php を作成しました。
    これを使うときは 'app.log' に書き込みと読み込み属性を設定して下さい。
    text_print.php の全ソースコードです。
    Shift_JIS でタイプしてアップロードして下さい。
    <?php
        $file= $_GET["file"];
        if (($fp = fopen($file,"r")))
        {   print "$file print out<br><br>";
            while(!feof($fp))
            {   $w = fgets($fp);
                $w = str_replace(array("\r", "\n"), '', $w);
                print("$w <br>\n");
            }
            fclose($fp);
        }
    ?>
    
  4. text_print.php の呼び出し方です。
    <a href="http://maedakobe.rw.xsi.jp/php/text_print.php?file=app.log">app.log print out</a>
    
    http://maedakobe.rw.xsi.jp/php/ は私がお借りしているサーバーです。
    ?file=app.log でファイル名を設定します。

前田稔の超初心者のプログラム入門
PHP Program