Php

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

  • March 8, 2016

我最初將其發佈在StackOverflow上,有人建議我嘗試將其發佈在這裡,因為“它可能類似於 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 腳本時,我得到了我期望的輸出:

內容類型:文本/html

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

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

Start PHP Output
X-Powered-By: PHP/5.2.13 Content-type: text/html

puts “Content-type: text/html\n\n” puts “Start PHP Output
" puts echo 'hello world' | php5 -qputs “End PHP Output
" End PHP輸出

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

有什麼想法嗎?

提前致謝!

我能夠在 StackOverflow 上獲得解決方案。 在這裡查看。

引用自:https://serverfault.com/questions/148205