1

私は PHP のバックグラウンドから話していますが、これは他の Web サーバー言語にも当てはまると思います。stdout名前のとおり、すべての標準出力が出力される場所ではありませんか? また、HTTP レスポンスの送信先ではないでしょうか。何か不足していますか?

4

2 に答える 2

0

Evert の回答を読んだ後、長い間保持されていたいくつかの仮定をクリアしたと思うので、実験を行いました。

<?php
echo "Echo output\n";
fwrite(STDOUT, "stdout output\n");
?>
Post-closing tag output

これをコマンド ラインで実行すると、次のようになります。

Echo output
stdout output
Post-closing tag output

しかし、ブラウザでこのファイルを表示すると、次のようになります。

Echo output
Post-closing tag output

つまり、PHP が実行されるコンテキストに応じて、その出力はさまざまな場所に送信されます。Web サーバーを介して提供されecho、PHP タグの外側にあるものはすべて HTTP 応答に送られます (少なくとも Apache2/PHP5 では)。この HTTP 応答は とは異なりstdoutます。CLI 経由で実行した場合は、echoに進みますstdout

この質問も関連している可能性があります: PHP stdout on Apache

于 2017-08-24T16:01:26.387 に答える