ホームページ  >  記事  >  バックエンド開発  >  phpのSTDOUT、php://stdout、CGI上のphp://outputの違いは何ですか?

phpのSTDOUT、php://stdout、CGI上のphp://outputの違いは何ですか?

WBOY
WBOYオリジナル
2016-06-23 13:21:141056ブラウズ

みなさん、こんにちは:
私は 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はオンですか?


ディスカッションへの返信 (解決策)

STDOUT は、fopen('php://stdout', 'w') と同等の CLI 固有の定数です。たとえば、CLI のみ有効です


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 を参照してください

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。