Назад | Перейти на главную страницу

Подавить заголовки PHP, запускающие cgi PHP из Ruby

Изначально я разместил это на Переполнение стека и было предложено, чтобы я попытался опубликовать это здесь, потому что: «Это может быть что-то вроде конфигурации в 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 />"

По-настоящему странная вещь, которую я не могу понять, это то, что код PHP здесь, кажется, ведет себя по-другому, когда я запускаю сценарий Ruby из командной строки по сравнению с CGI. Что для меня действительно не имеет смысла, потому что в любом случае я выполняю ту же строку PHP из команды с теми же аргументами.

Когда я запускаю приведенный выше сценарий Ruby из командной строки, я получаю ожидаемый результат:

Тип содержимого: текст / html

Начать вывод PHP
привет мир Конец вывода PHP

Когда я нажимаю тот же сценарий Ruby из браузера через CGI, я получаю следующий результат:

Начать вывод PHP
X-Powered-By: PHP / 5.2.13 Тип содержимого: текст / html
помещает "Content-type: text / html \ n \ n" помещает "Запуск вывода PHP
"ставит echo 'hello world' | php5 -q помещает "Конец вывода PHP
"Завершить вывод PHP

Мне кажется, что происходит то, что строка PHP не подавляет заголовки, как я ожидал от опции -q ... а также выгружает весь мой сценарий Ruby обратно в браузер, что сбивает с толку меня.

Есть предположения?

Заранее спасибо!

Мне удалось найти решение на StackOverflow. Посмотрите здесь.