1

このスクリプトを GoDaddy 共有ホスティング (php 5.3.13) で cron ジョブとして実行し、log4php を使用しています。スクリプトは正常に実行され、終了したようです。しかし、log4php が終了しようとすると、このエラーがスローされます。

実際にファイルとその内容を出力しているようです。そして、ファイルのパーミッションを 777 に変更しました。ファイルサイズのチェックを行うときに、このエラーがスローされているようです...

このエラーの原因/解決策に関するヘルプをいただければ幸いです。

エラー:

<b>Fatal error</b>: Uncaught exception 'ErrorException' with message '2: filesize() [&lt;a href='function.filesize'&gt;function.filesize&lt;/a&gt;]: stat failed for log.txt, file: /home/content/89/10338789/html/Forum/phpBB3/program/log4php/appenders/LoggerAppenderRollingFile.php, line: 223' in /home/content/89/10338789/html/Forum/phpBB3/program/log4php/appenders/LoggerAppenderRollingFile.php:223
Stack trace:
#0 [internal function]: errorHandler(2, 'filesize() [&lt;a ...', '/home/content/8...', 223, Array)
#1 /home/content/89/10338789/html/Forum/phpBB3/program/log4php/appenders/LoggerAppenderRollingFile.php(223): filesize('log.txt')
#2 /home/content/89/10338789/html/Forum/phpBB3/program/log4php/appenders/LoggerAppenderFile.php(165): LoggerAppenderRollingFile-&gt;write(NULL)
#3 /home/content/89/10338789/html/Forum/phpBB3/program/log4php/LoggerAppender.php(85): LoggerAppenderFile-&gt;close()
#4 [internal function]: LoggerAppender-&gt;__destruct()
#5 {main}
thrown in <b>/home/content/89/10338789/html/Forum/phpBB3/program/log4php/appenders/LoggerAppenderRollingFile.php</b> on line <b>223</b><br />

構成ファイル:

<configuration xmlns="http://logging.apache.org/log4php/">

    <appender name="myConsoleAppender" class="LoggerAppenderConsole">
        <filter class="LoggerFilterLevelRange">
            <param name="levelMin" value="info" />
        </filter>
    </appender>

    <appender name="myFileAppender" class="LoggerAppenderRollingFile">
        <layout class="LoggerLayoutPattern">
            <param name="conversionPattern" value="%date %-5level - %message%newline" />
        </layout>
        <param name="file" value="log.txt" />
        <param name="maxFileSize" value="10MB" />
    </appender>

    <appender name="myEmailAppender" class="LoggerAppenderMail">
        <layout class="LoggerLayoutSimple" />
        <param name="to" value="jonathonwisnoski@hotmail.com" />
        <param name="from" value="logger@xxx.ca" />
        <filter class="LoggerFilterLevelRange">
            <param name="levelMin" value="info" />
        </filter>
    </appender>

    <root>
        <appender_ref ref="myConsoleAppender" />
        <appender_ref ref="myFileAppender" />
        <appender_ref ref="myEmailAppender" />
    </root>
</configuration>
4

2 に答える 2

5

これは LoggerAppenderRollingFile の問題です。ログ ファイルへの絶対パスを使用する必要があります (回避策)。スクリプトの実行後、LoggerAppender::__destruct が呼び出され、相対ファイル ログ (log.txt) が見つかりません。

変化する:

log4php.appender.<yourappender>.file=log.txt 

log4php.appender.<yourappender>.file=/absolutepath/log.txt

関連トピック:

  1. http://www.php.net/manual/en/function.register-shutdown-function.php#92657
  2. __destruct() で getcwd() が / を返すのはなぜですか?
  3. https://bugs.php.net/bug.php?id=34206
于 2013-04-05T00:23:42.113 に答える