禁止從 Ruby 執行 cgi PHP 的 PHP 標頭

禁止從 Ruby 執行 cgi PHP 的 PHP 標頭

我最初發布這個堆疊溢位有人建議我嘗試在這裡發布此內容,因為“這可能是 CGI 中的配置與您用戶的配置不同。”

話雖如此,這是我的原始帖子:

誠然,這對我來說是一個奇怪的問題,但這就是我正在做的事情:

我有一個 Ruby 腳本,它正在執行一串 PHP 程式碼並捕獲輸出。

這有點關係我遇到的另一個問題從命令列執行 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 運行 Ruby 腳本時,這裡的 PHP 程式碼似乎表現不同。這對我來說確實沒有意義,因為無論哪種方式,我都會使用相同的參數從命令執行相同的 PHP 字串。

當我從命令列運行上述 Ruby 腳本時,我得到了預期的輸出:

內容類型:text/html

開始 PHP 輸出
hello world 結束 PHP 輸出

當我透過 CGI 從瀏覽器點擊相同的 Ruby 腳本時,我得到以下輸出:

開始PHP 輸出
X-Powered-By: PHP/5.2.13 Content-type: text/html
puts "Content-type: text/html\n\n" puts "Start PHP Output
" echo 'hello world' | php5 -qputs "End PHP Output
" End PHP輸出

在我看來,正在發生的事情是PHP 字串沒有抑制標頭,就像我期望-q 選項所做的那樣......並且還將我的整個Ruby 腳本轉儲回瀏覽器- 這令人困惑我。

有什麼想法嗎?

先致謝!

答案1

我在 StackOverflow 上找到了解決方案。 在這裡查看一下。

相關內容