タイトルが示すように、php エラー ログの最大長を設定しましたが、1024 よりもはるかに大きくなり続けているようです。正しい php.ini を使用しており、Apache を再起動しました。 PHPログは666です。
3 に答える
PHP ではよくあることですが、構成設定の名前やドキュメンテーションからでも明らかではありませんが、このディレクティブは、ログ ファイル全体の長さではなく、単一のログ メッセージの長さに適用されます。
あなたがやろうとしていることにlogrotateまたは同様のツールを使用してください。
確認されたパスカルの最初の考え:
log_errors の最大長をバイト単位で設定します。ソースに関する error_log 情報が追加されます。デフォルトは 1024 で、0 を指定すると、最大長をまったく適用しません。この長さは、ログに記録されたエラー、表示されたエラー、および $php_errormsg に適用されます。整数を使用する場合、値はバイト単位で測定されます。この FAQ で説明されているように、簡略表記も使用できます。
マニュアルに記載されていないのは、エラーメッセージの「本文」のみ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=4
をdisplay_errors=1
実行html_errors=0
しerror_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=4
しdisplay_errors=1
て同じコードを実行します。(ログに記録されたエラーではなく、表示されたエラーにのみ適用されます。)クライアントに送信される出力は次のとおりです。html_errors=1
error_prepend_string="PPPP"
error_append_string="AAAA"
error_prepend_string
error_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 を使用して行われます。)