Php
禁止從 Ruby 執行 cgi PHP 的 PHP 標頭
我最初將其發佈在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/htmlputs “Content-type: text/html\n\n” puts “Start PHP Output
" putsecho 'hello world' | php5 -q
puts “End PHP Output
" End PHP輸出在我看來,發生的事情是 PHP 的字元串沒有抑制標頭,就像我期望的 -q 選項一樣……並且還將我的整個 Ruby 腳本轉儲回瀏覽器 - 這令人困惑我。
有什麼想法嗎?
提前致謝!
我能夠在 StackOverflow 上獲得解決方案。 在這裡查看。