11

タイトルが示すように、php エラー ログの最大長を設定しましたが、1024 よりもはるかに大きくなり続けているようです。正しい php.ini を使用しており、Apache を再起動しました。 PHPログは666です。

4

3 に答える 3

26

PHP ではよくあることですが、構成設定の名前やドキュメンテーションからでも明らかではありませんが、このディレクティブは、ログ ファイル全体の長さではなく、単一のログ メッセージの長さに適用されます。

あなたがやろうとしていることにlogrotateまたは同様のツールを使用してください。

于 2009-12-27T18:00:10.447 に答える
10

確認されたパスカルの最初の考え:

log_errors_max_len 整数

log_errors の最大長をバイト単位で設定します。ソースに関する error_log 情報が追加されます。デフォルトは 1024 で、0 を指定すると、最大長をまったく適用しません。この長さは、ログに記録されたエラー、表示されたエラー、および $php_errormsg に適用されます。整数を使用する場合、値はバイト単位で測定されます。この FAQ で説明されているように、簡略表記も使用できます。

于 2009-12-27T18:02:16.620 に答える
8

マニュアルに記載されていないのは、エラーメッセージの「本文」のみlog_errors_max_lenを参照していることです。これは、1 行のエラーがここで設定した長さよりも大きくなることを意味します。

実証するために、log_errors_max_len=0(0は無制限を意味します) とを使用してこのコードを実行しますlog_errors=1

<?php
// Set your server to these settings:
// error_reporting=-1 
// date.timezone=utc ;to suppress the error message "It is not safe to rely on the system's timezone settings."...
echo$msg1; echo$msg2;

error_logに送信されるバイトは次のとおりです。

[15-Jul-2015 01:23:45 utc] PHP Notice:  Undefined variable: msg1 in C:\index.php on line 5
[15-Jul-2015 01:23:45 utc] PHP Notice:  Undefined variable: msg2 in C:\index.php on line 5
‏

次に、 と を使用して同じコードをテストしlog_errors_max_len=4ますlog_errors=1。(サーバーを再起動することを忘れないでください。)error_logは次のようになります。

[15-Jul-2015 01:23:45 utc] PHP Notice:  Unde in C:\index.php on line 5
[15-Jul-2015 01:23:45 utc] PHP Notice:  Unde in C:\index.php on line 5
‏

(エラー メッセージの前に " [15-Jul-2015 01:23:45 utc] PHP Notice:"が追加され、" " が追加さin C:\index.php on line 1れるため、 で設定された行よりも長い行になることに注意してくださいlog_errors_max_len。)

この問題は、 だけでなくerror_log、クライアントに送信されるサーバー出力でも発生します。デモを行うために、 、 、 、 、および を使用して上記の同じコードlog_errors_max_len=4display_errors=1実行html_errors=0error_prepend_string="PPPP"ますerror_append_string="AAAA"。クライアントに送信される出力は次のとおりです。

PPPP
Notice: Unde in C:\index.php on line 5
AAAAPPPP
Notice: Unde in C:\index.php on line 5
AAAA

、、、、、およびを使用log_errors_max_len=4display_errors=1て同じコードを実行します。(ログに記録されたエラーではなく、表示されたエラーにのみ適用されます。)クライアントに送信される出力は次のとおりです。html_errors=1error_prepend_string="PPPP"error_append_string="AAAA"error_prepend_stringerror_append_string

PPPP<br />
<b>Notice</b>:  Unde in <b>C:\index.php</b> on line <b>5</b><br />
AAAAPPPP<br />
<b>Notice</b>:  Unde in <b>C:\index.php</b> on line <b>5</b><br />
AAAA

また、上記のテストでは、 を使用しても同じ結果が返されることに注意してくださいignore_repeated_errors=0。これは、エラー メッセージが切り取られる前に「繰り返しエラー」が考慮されることを示しています。

(結果は、使用する SAPI によって異なる場合があります。上記のテストは、win 8.1 で php-5.6.7-Win32-VC11-x86 CLI を使用して行われます。)

于 2015-07-15T02:48:10.643 に答える