Ruby에서 cgi PHP를 실행하는 PHP 헤더 억제

Ruby에서 cgi PHP를 실행하는 PHP 헤더 억제

원래 이런 글을 올렸었는데스택 오버플로그리고 "CGI의 구성이 사용자의 구성과 다를 수 있기 때문에 여기에 게시해 보도록 제안했습니다."

내 원래 게시물은 다음과 같습니다.

물론 이것은 제가 겪고 있는 이상한 문제입니다. 그러나 제가 하고 있는 일은 다음과 같습니다.

PHP 코드 문자열을 실행하고 출력을 캡처하는 Ruby 스크립트가 있습니다.

이는 다소 관련이 있습니다.내가 겪었던 또 다른 문제명령줄에서 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 스크립트를 명령줄에서 실행하면 예상한 결과가 나타납니다.

콘텐츠 유형: 텍스트/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 "Start PHP Output
" puts echo 'hello world' | php5 -qputs "End PHP Output
" End PHP 산출

제가 보기에는 -q 옵션이 수행할 것으로 예상하는 것처럼 PHP 문자열이 헤더를 억제하지 않고 전체 Ruby 스크립트를 브라우저에 다시 덤프하는 것 같습니다. 이는 당황스럽습니다. 나.

이견있는 사람?

미리 감사드립니다!

답변1

StackOverflow에서 해결책을 얻을 수 있었습니다. 여기에서 확인해 보세요.

관련 정보