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
" putsecho 'hello world' | php5 -q
puts "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.