みなさん、こんにちは:
私は php を初めて使用するのですが、問題が発生しました。現在のサーバー システムは Linux で、ユーザーのリクエストを実行するために Apache の CGI がその上で実行されています。
PHP で、fwrite(STDOUT, "this is a test"); という 1 つの文を含むテスト ファイル test.php を作成するとします。
IE ブラウザのアドレス バーからこのテスト プログラムを実行すると、通常の出力が得られません。ただし、この test.php をサーバー側の Linux シェルで直接実行すると、出力が表示されます。
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 はプログラムの標準出力を正しい出力にリダイレクトできないのはなぜですか? CGはオンですか?
php://out は echo/print と同等です
詳細については、マニュアルの「php://」および「PHP コマンドライン モード」セクションを参照してください
Apache である可能性がありますstdout が閉じられています。解決策 php-fpm php ://stdout コマンド ラインの印刷失敗の問題を参照してください -- http://blog.csdn.net/zhangrui_fslib_org/article/details/49681563
Apache が stdout を閉じている可能性があります、php-fpm php://stdout コマンド ライン印刷の失敗の問題を解決する -- http://blog.csdn.net/zhangrui_fslib_org/article/details/49681563 を参照してください