проблема с Rhtml (Eruby) Apache - PullRequest
       39

проблема с Rhtml (Eruby) Apache

3 голосов
/ 23 января 2011

Я пытаюсь запустить встроенный ruby ​​внутри rhtml.

$cat test.rhtml

<html>
<body>
Testing <% foo = "Ruby"; print "#{foo}!" %>
</body>
</html>

Он отлично работает из командной строки:

$eruby test.rhtml


<html>
<body>
Testing Ruby!
</body>
</html>

Но в моей настройке Apache он не работает.

Доступ к "http://localhost/cgi-bin/test.rhtml" дает следующееошибка:

"Внутренняя ошибка сервера

Сервер обнаружил внутреннюю ошибку или неверную конфигурацию и не смог выполнить ваш запрос.

Пожалуйста, свяжитесь с администратором сервера, пример @ вас.com и сообщите им о времени возникновения ошибки и обо всех действиях, которые вы могли совершить, возможно, вызвавших ошибку.

Дополнительная информация об этой ошибке может быть доступна в журнале ошибок сервера. "

В журнале ошибок указано:

[Сб 22 Янв 17:56:07 2011] [ошибка] [клиент :: 1] (8) Ошибка формата exec: exe из 'Dir / cgi-bin / test.rhtml'fail [Sat Jan 22 17:56:07 2011] [error] [client :: 1] Преждевременное завершение заголовков скриптов: test.rhtml

Я скопировал исполняемый файл "eruby" в "Dir / cgi-bin / "каталог и настроенный apache (2.2) следующим образом:

AddType application/x-httpd-eruby .rhtml
Action application/x-httpd-eruby Dir/cgi-bin/eruby

Есть идеи? Спасибо!

Ответы [ 2 ]

1 голос
/ 23 января 2011

Возможно, вам нужно добавить как минимум

Content-type: text/html

<html>
....

вверху вашего файла eruby - CGI-скрипты отвечают за отправку заголовков клиенту перед содержимым.Может быть больше заголовков, которые имеют смысл отправлять обратно, но этого может быть достаточно для начала.

0 голосов
/ 26 ноября 2012

У меня Apache / 2.2.22 на Ubuntu 12.04 & Ruby 1.8.7 . Я установил реализацию erubis 2.7.0 и скопировал исполняемый файл erubis в папку Apache cgi, в моем случае в / usr / lib / cgi-bin / erubis. Я настроил скрипт cgi с именем erubis.sh для обработки запросов на файлы .rhtml, добавив эти директивы в /etc/apache/httpd.conf:

AddType application/x-httpd-eruby .rhtml
Application application/x-httpd-eruby /cgi-bin/erubis.sh

Я убедился, что модуль Action включен, выполнив эту команду:

$ sudo a2enmod action

Я создал этот скрипт оболочки bash erubis.sh для обработки запросов на страницы со встроенным ruby:

#!/bin/bash
echo "Content-type: text/html"
echo
echo "<!DOCTYPE HTML>"
erubis -E Stdout <$DOCUMENT_ROOT$REQUEST_URI

Он выводит минимальный заголовок http, а затем просит erubis обработать запрошенный файл .rhtml, содержащий встроенный Ruby. Опция расширения Stdout, по-видимому, необходима для получения вывода встроенных блоков Ruby в нужных местах.

http://techdog.tumblr.com/post/36496065877/configure-erubis-cgi-in-apache

...