test.php
次の行が含まれています。
<?php echo 1 / 0; ?>
PHPのバージョンは5.4.0 (cli)
さて、次の一連のテストdisplay_errors
:
display_errors = Off
display_errors = stderr
display_errors = stdout
Off
でエラー表示をオフにしないのはなぜstdout
ですか?
stdout
とstderr
の両方が両方の出力に同時に印刷されるのはなぜですか?
test.php
次の行が含まれています。
<?php echo 1 / 0; ?>
PHPのバージョンは5.4.0 (cli)
さて、次の一連のテストdisplay_errors
:
display_errors = Off
display_errors = stderr
display_errors = stdout
Off
でエラー表示をオフにしないのはなぜstdout
ですか?
stdout
とstderr
の両方が両方の出力に同時に印刷されるのはなぜですか?
オフがstdoutのエラー表示をオフにしないのはなぜですか?
error_logが設定されていないためだと思います。設定されている場合、エラーは表示されません。設定されていない場合、PHPはSAPIエラーロガーを使用します。これはCLIではstderr(= stdout)です。見る:
ini_set('display_errors', 0);
echo 1 / 0; // Prints a warning.
ini_set('error_log', '/dev/null');
echo 1 / 0; // No warning on the standard output.
stdoutとstderrの両方が両方の出力に同時に印刷されるのはなぜですか?
最初のエラーはSAPIエラーロガーに送信され、2番目のエラーはstdoutに送信されました(display_errors = on)。前述したように、SAPIエラーロガーはstderrであり、この場合もstdoutであるため、両方のメッセージが表示されます。