phpのSTDOUT、php://stdout、CGI上のphp://outputの違いは何ですか?
皆さん、こんにちは:
私は PHP を学ぶのが初めてですが、現在のサーバー システムは Linux であり、Apache の CGI がその上で実行されてユーザー リクエストを実行しています。
php でテスト ファイル test.php を作成するとします。このファイルには fwrite(STDOUT, "this is a test"); という 1 つの文だけが含まれています。
このテスト プログラムは IE ブラウザのアドレス バーから実行しましたが、正常な出力は得られませんでしたが、サーバー側の Linux シェル
で直接実行しました。
このtest.phpで出力が確認できます。
test.php を次のように変更しました: $out=fopen("php://stdout", 'w'); fwrite($out, "this is a test");
状況は依然として同じですが、IE ブラウザではコンテンツを正常に参照できませんが、出力はシェルで正常に表示されます。
test.php を次のように変更しました: $out=fopen("php://output",'w'); fwrite($out, "this is a test");
今回はIEブラウザ上でも正常な出力が見られ、シェル上でも正常な出力が見られます。
test.php を次のように変更しようとしました。 echo("this is a test");
今度はIEは正常、シェルも正常です。
私の質問は、STDOUT、php://stdout、php://output の違いは何ですか? なぜ php://output
以外なのかということです。
それ以外の場合、Apache はプログラムの標準出力を正しい CGI にリダイレクトできませんでした。