6

例:
php.ini ファイル

...
; 指定したファイルにエラーを記録します。
error_log = c:/php/php.log
...

エラー ログ ファイル (c:/php/php.log) には、すべてのエントリが次の形式で含まれています。

[12-Jun-2011 12:58:55] PHP Notice: 未定義の変数: C:\www\phpinfo.php の 2 行目のテスト\r\r\n 
[12-Jun-2011 12:59:01] PHP注意: 未定義の変数: C:\www\phpinfo.php の 2 行目のテスト\r\r\n 
[2011 年 6 月 12 日 13:01:12] PHP の注意: 未定義の変数: C:\www\phpinfo のテスト行 2 の .php \r\r\n 
[12-Jun-2011 13:02:11] PHP 通知: 未定義変数: 行 2 の C:\www\phpinfo.php でテスト\r\r\n 
[12 -Jun-2011 13:11:23] PHP Notice: 未定義変数: C:\www\phpinfo.php の 2 行目のテスト\r\r\n 
[12-Jun-2011 13:12:10] PHP Notice:未定義の変数: C:\www\phpinfo.php の 2 行目のテスト\r\r\n

1 つのエラー行につき 2 つのキャリッジ リターン文字と 1 つの改行。

なぜそれが起こるのですか?エラー ログ ファイルをデフォルトの形式に変更する方法:

[2011 年 6 月 12 日 12:58:55] PHP 通知: 未定義の変数: C:\www\phpinfo.php の 2 行目のテスト\r\n 
[2011 年 6 月 12 日 12:59:01] PHP 通知:未定義変数: 2 行目の C:\www\phpinfo.php のテスト\r\n 
[2011 年 6 月 12 日 13:01:12] PHP 通知: 未定義変数: C:\www\phpinfo.php 行のテスト2 \r\n 
[2011 年 6 月 12 日 13:02:11] PHP 通知: 未定義の変数: C:\www\phpinfo.php の 2 行目のテスト\r\n 
[2011 年 6 月 12 日 13:11: 23] PHP 通知: 未定義変数: 2 行目の C:\www\phpinfo.php でテスト\r\n 
[2011 年 6 月 12 日 13:12:10] PHP 通知: 未定義変数: C:\www\ でテスト2 行目の phpinfo.php \r\n

PHP バージョン5.3.6
Apache/ 2.2.15 (Win32)
Windows 7 Home Basic および Windows XP SP3 でテスト、同じ結果。

php.ini ファイルには 2 つの文字列しか含まれていません

log_errors = オン
error_log = c:/server/php.log

Apache phpinfo() スクリプト -> http://pastehtml.com/view/awvx1vgpp.html

PS。

サーバー: nginx 1.0.4
FastCGI + PHP バージョン5.3.6

すべてが期待どおりに機能します。
nginx phpinfo() スクリプト -> http://pastehtml.com/view/awvwvk9p9.html

4

1 に答える 1

2

エラー ログへの出力を制御するための ini ディレクティブが他にもあります。これらについては、この PHP マニュアル ページで説明されています。

デフォルトでは、ini をロードせず、error_logset と logging のみを有効にして実行している PHP は、1 行のみを出力します。お使いのシステムでもテストできます。コマンド ライン インターフェース (CLI) の「サーバー アプリケーション プログラミング インターフェース (API) [SAPI]」の例を示します。

php -n -d error_log=./error.log -d log_errors=1 -r 'error;'

このコマンドを使用して、単独で実行し、それを出力と比較します。2 つの行末もある場合、これはおそらくお使いの php バージョンのバグです。

PHP のバージョンに問題がない場合 [元の投稿 (OP) の場合ではない]、アプリケーション内でいくつかの設定が変更されているようです。どの設定かを調べる必要があります。おそらく、独自のエラー ハンドラーを登録してから、ini 設定をダンプすることで、それを見つけることができます。

大事なことを言い忘れましたが、それが行末の誤解でない場合 (私のコメントを参照してください)、エラー表示に関する ini 設定も調べたいと思うかもしれません (ただしerror_prepend_stringエラーログではありません)。error_append_string

于 2011-06-12T10:34:00.713 に答える