I originally posted this on StackOverflow and it was suggested that I try posting this here because, "It might be something like the configuration in CGI is different than the configuration for your user."

Having said that, here is my original post:

Admittedly, this is a strange problem for me to have, but here is what I'm doing:

I've got a Ruby script that is executing a string of PHP code and capturing the output.

This is somewhat related to another problem that I had with running cgi PHP from the command line.

Here is the Ruby script's source:

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 />"

The really odd thing that I can't figure out is that the PHP code here seems to behave differently when I run the Ruby script from the command line vs. from CGI. Which really doesn't make sense to me, because either way I'm executing the same string of PHP from the command with the same arguments.

When I run the above Ruby script from the command line, I get the output that I expect:

Content-type: text/html

Start PHP Output
hello world End PHP Output

When I hit that same Ruby script from a browser via CGI, I get this output:

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 -q puts "End PHP Output
" End PHP Output

It looks, to me, like what is happening is that the string of PHP is not suppressing the headers, like I would expect the -q option to do... and is also dumping my entire Ruby script back to the browser - which baffles me.

Any thoughts?

Thanks in advance!


I was able to get a solution on StackOverflow. Check it out here.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.