今まで PHP って真面目にやったことがなかったのだが、ここ数日必要に迫られて PHP でかかれたコードのデバッグとかしている。 読み書きに関しては、若干 Perl に syntax が近いところもあるので、かなりすんなりとはじめられた。 ただ、コメント行が「#」で始まるのでなく「//」(スラッシュ2つ) で始まるっていうのに、未だになれていない。 あと、PHP script を php コマンドに通しただけでは syntax のチェックをおこなってくれなくって、「php -l hoge.php」と、オプション "-l" を付加しないと syntax error を教えてくれないっていうのに、少しハマった。 しかも syntax error と教えてくれるのはイイんだが、script の何行目が原因なのかを全然教えてくれない。 Syntax error しているところを探すのが、すんげぇ面倒だった。 javac のように column まで教えてくれなくてもイイんだが、せめて Perl 程度に知る方法が欲しい。 どっかのオプションにそういうのがあるのかもしれないけど。
んでハマったのが PHP のmail 関数。 なんっつーか、local の sendmail (/usr/lib/sendmail とか) を直接実行するようになっている場合、 Return-Path: ヘッダフィールドが sendmail を実行したユーザのユーザ名になって、これを変更するのが mail() 関数では ほぼ無理。 これの対処法として調べてみたところ、これら3つの方法が現実的だった。
一応、デバッグっていうところもあったので、元のコードの多くを活かして解決する、悪く言えばその場しのぎの ad-hoc な直し方をすることにして、ヘッダフィールド「Error-To:」をつけてやった。 自分が主導権握って書くコードだったら、間違いなく sendmail を popen するようにして、それを mail() 関数と似たような使い方のできる関数として実装するんだけどね。