抑制从 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 "启动 PHP 输出
" puts echo 'hello world' | php5 -qputs "结束 PHP 输出
" 结束 PHP 输出

在我看来,发生的事情是 PHP 字符串没有抑制标题,就像我期望 -q 选项那样......而且还将我的整个 Ruby 脚本转储回浏览器 - 这让我很困惑。

有什么想法吗?

提前致谢!

答案1

我能够在 StackOverflow 上找到解决方案。 请在这里查看。

相关内容