5

test.php次の行が含まれています。

<?php echo 1 / 0; ?>

PHPのバージョンは5.4.0 (cli)

さて、次の一連のテストdisplay_errors:

  • display_errors = Off 画像1
  • display_errors = stderr 画像2
  • display_errors = stdout 画像3

Offでエラー表示をオフにしないのはなぜstdoutですか?

stdoutstderrの両方が両方の出力に同時に印刷されるのはなぜですか?

4

1 に答える 1

12

オフが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であるため、両方のメッセージが表示されます。

于 2012-05-27T14:10:03.557 に答える