Rubyからcgi PHPを実行してPHPヘッダーを抑制する

Rubyからcgi PHPを実行してPHPヘッダーを抑制する

元々これを投稿したのはスタックオーバーフローそして、「CGI の設定がユーザーの設定と異なる可能性があります」という理由で、ここに投稿してみることを提案されました。

そうは言っても、これが私の元の投稿です:

確かに、これは私にとっては奇妙な問題ですが、私がやっていることは次のとおりです。

PHP コードの文字列を実行し、出力をキャプチャする Ruby スクリプトがあります。

これは、私が抱えていたもう一つの問題コマンドラインから cgi PHP を実行します。

以下は Ruby スクリプトのソースです。

#!/usr/bin/ruby
puts "Content-type: text/html\n\n"
puts "Start PHP Output<br />"
puts `echo '<?php echo "hello world"; ?>' | php5 -q`
puts "End PHP Output<br />"

私が理解できない本当に奇妙なことは、Ruby スクリプトをコマンド ラインから実行した場合と CGI から実行した場合とで、PHP コードの動作が異なるように見えることです。どちらの場合も、同じ引数を持つコマンドから同じ PHP 文字列を実行しているので、私にはまったく意味がわかりません。

上記の Ruby スクリプトをコマンド ラインから実行すると、期待どおりの出力が得られます。

コンテンツタイプ: text/html

PHP出力開始
hello world PHP出力終了

同じ Ruby スクリプトをブラウザから CGI 経由で実行すると、次の出力が得られます。

PHP 出力の開始
X-Powered-By: PHP/5.2.13 コンテンツ タイプ: text/html
puts "コンテンツ タイプ: text/html\n\n" puts "PHP 出力の開始
" puts echo 'hello world' | php5 -qputs "PHP 出力の終了
" PHP 出力の終了

私の考えでは、PHP の文字列が、-q オプションで期待されるようなヘッダーを抑制していないように見えます... また、Ruby スクリプト全体をブラウザーにダンプし返しているように見えます。これは私を困惑させます。

何かご意見は?

前もって感謝します!

答え1

StackOverflow で解決策を見つけることができました。 ここからチェックしてください。

関連情報