fwriteでPHPが落ちる?エラーログなし・・・
ハマり中。
メールの自動処理をEthnaのCLIでやろうとして、procmailにて引っかけたんだけど、どーも動かない。
ErrorログはFILEで取ってるんだけど、これが出ない。
ていうか、procmailを通さないでフツーにPHP-CLIで動作させたら何の問題もなく。
引っかかるのは、
Ethna/class/Plugin/Logwriter/Ethna_Plugin_Logwriter_File.php
の
<?php /** * ログを出力する * * @access public * @param int $level ログレベル(LOG_DEBUG, LOG_NOTICE...) * @param string $message ログメッセージ(+引数) */ function log($level, $message) { if ($this->fp == null) { return; } $prefix = strftime('%Y/%m/%d %H:%M:%S ') . $this->ident; if (array_key_exists("pid", $this->option)) { $prefix .= sprintf('[%d]', getmypid()); } $prefix .= sprintf('(%s): ', $this->_getLogLevelName($level)); if (array_key_exists("function", $this->option) || array_key_exists("pos", $this->option)) { $tmp = ""; $bt = $this->_getBacktrace(); if ($bt && array_key_exists("function", $this->option) && $bt['function']) { $tmp .= $bt['function']; } if ($bt && array_key_exists("pos", $this->option) && $bt['pos']) { $tmp .= $tmp ? sprintf('(%s)', $bt['pos']) : $bt['pos']; } if ($tmp) { $prefix .= $tmp . ": "; } } fwrite($this->fp, $prefix . $message . "\n"); // <<<<<<<<<< ココ
これ付きとめるのにも、えらい時間かかったんだけど、さて、これからどーしようって感じ。
ファイルポインタは間違いなく、リソースで開けてるし、$prefixや$messageも問題なし。第3引数をあたえても何のお変りもなく。
ていうか、ログが出ねーんだよ。なぜか。パタンと問答無用で死ぬ。
@CentOS5のPHP5