【发布时间】:2011-02-27 19:02:28
【问题描述】:
诚然,这对我来说是一个奇怪的问题,但这是我正在做的事情:
我有一个 Ruby 脚本,它正在执行一串 PHP 代码并捕获输出。
这与another problem that I had 从命令行运行 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 End PHP 输出
当我通过 CGI 从浏览器中点击相同的 Ruby 脚本时,我得到以下输出:
开始 PHP 输出
X-Powered-By: PHP/5.2.13 内容类型:text/html
提出“内容类型:文本/html\n\n” puts "开始 PHP 输出
" putsecho 'hello world' | php5 -q放 "结束 PHP 输出
" 结束 PHP 输出
在我看来,发生的事情是 PHP 的字符串没有抑制标头,就像我期望的 -q 选项一样......并且还将我的整个 Ruby 脚本转储回浏览器- 这让我很困惑。
有什么想法吗?
提前致谢!
【问题讨论】:
-
这可能更适合 ServerFault。可能是 CGI 中的配置与您的用户的配置不同。
-
谢谢,我已经在 ServerFault 上发布了这个:serverfault.com/questions/148205/…
标签: php ruby command-line cgi