当該のPHPアプリケーションは置いといて、1ファイルでも再現するので、以下のPHPプログラムでテストすることにする。
くだんのerror_log()関数をPHPから呼び出すと、こんな感じで動く。
基本的にメッセージを引き回しているだけで、ここまでに変わった文字列処理は見受けられない。
なんとphp_syslog()はsyslog()であった。つまり、PHP内で何か特別な処理をすることなく、そのままsyslog()関数にメッセージを投げているだけである。
こうなってくるとsyslog(3)が大事になる。manがあり、日本語が古くないようなので日本語のsyslog(3)を見てみる。
通常は にはプログラム名が設定される。 の場合、プログラムが として使用される
で、誰が__prognameをセットしているのかと探してみると「misc/init-misc.c」にあった。
暗黙のopenlog()をさせなければいい。つまり、期待のプログラムが動く前にopenlog()すればよい。