Suprimir cabeçalhos PHP executando cgi PHP de Ruby

Suprimir cabeçalhos PHP executando cgi PHP de Ruby

Eu postei isso originalmente emStackOverflowe foi sugerido que eu tentasse postar isso aqui porque, "Pode ser algo como a configuração no CGI ser diferente da configuração do seu usuário."

Dito isto, aqui está minha postagem original:

É certo que este é um problema estranho para mim, mas aqui está o que estou fazendo:

Eu tenho um script Ruby que está executando uma string de código PHP e capturando a saída.

Isso está um pouco relacionadooutro problema que tivecom a execução do cgi PHP na linha de comando.

Aqui está a fonte do script 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 />"

A coisa realmente estranha que não consigo entender é que o código PHP aqui parece se comportar de maneira diferente quando executo o script Ruby na linha de comando versus no CGI. O que realmente não faz sentido para mim, porque de qualquer forma estou executando a mesma string de PHP do comando com os mesmos argumentos.

Quando executo o script Ruby acima na linha de comando, obtenho a saída esperada:

Tipo de conteúdo: texto/html

Iniciar saída PHP
olá mundo Finalizar saída PHP

Quando acesso o mesmo script Ruby em um navegador via CGI, recebo esta saída:

Iniciar saída PHP
X-Powered-By: PHP/5.2.13 Tipo de conteúdo: text/html
puts "Tipo de conteúdo: text/html\n\n" puts "Iniciar saída PHP
" puts echo 'hello world' | php5 -qputs "Fim saída PHP
" Fim PHP Saída

Parece, para mim, que o que está acontecendo é que a string do PHP não está suprimindo os cabeçalhos, como eu esperaria que a opção -q fizesse... e também está despejando todo o meu script Ruby de volta no navegador - o que confunde meu.

Alguma ideia?

Desde já, obrigado!

Responder1

Consegui uma solução no StackOverflow. Confira aqui.

informação relacionada