我最初发布于堆栈溢出并且有人建议我尝试在这里发布此内容,因为“这可能类似于 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 输出
" putsecho 'hello world' | php5 -q
puts "结束 PHP 输出
" 结束 PHP 输出
在我看来,发生的事情是 PHP 字符串没有抑制标题,就像我期望 -q 选项那样......而且还将我的整个 Ruby 脚本转储回浏览器 - 这让我很困惑。
有什么想法吗?
提前致谢!
答案1
我能够在 StackOverflow 上找到解决方案。 请在这里查看。