元々これを投稿したのはスタックオーバーフローそして、「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 出力の開始
" putsecho 'hello world' | php5 -q
puts "PHP 出力の終了
" PHP 出力の終了
私の考えでは、PHP の文字列が、-q オプションで期待されるようなヘッダーを抑制していないように見えます... また、Ruby スクリプト全体をブラウザーにダンプし返しているように見えます。これは私を困惑させます。
何かご意見は?
前もって感謝します!
答え1
StackOverflow で解決策を見つけることができました。 ここからチェックしてください。