rhtml(eruby)apache麻烦

时间:2011-01-23 02:32:19

标签: ruby apache eruby

我正在尝试在rhtml中运行嵌入式ruby。

$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”会出现以下错误:

“内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请联系服务器管理员you@example.com,告知他们错误发生的时间,以及可能导致错误的任何操作。

服务器错误日志中可能提供了有关此错误的更多信息。“

错误日志说:

[2011年1月22日星期六17:56:07] [错误] [client :: 1](8)执行格式错误:'Dir / cgi-bin / test.rhtml'的执行失败 [Sat Jan 22 17:56:07 2011] [错误] [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 个答案:

答案 0 :(得分:1)

您可能需要至少添加

Content-type: text/html

<html>
....

位于eruby文件的顶部 - CGI脚本负责在内容之前将标头发送回客户端。可能有更多的标题有意义发回,但这可能足以开始。

答案 1 :(得分:0)

我在 Ubuntu 12.04 &amp;上有 Apache / 2.2.22 Ruby 1.8.7 。我安装了 erubis 2.7.0 实施&amp;将可执行文件erubis文件复制到Apache的cgi文件夹,在我的例子中复制到/ usr / lib / cgi-bin / erubis。我通过将这些指令添加到/etc/apache/httpd.conf来配置一个名为erubis.sh的cgi脚本来处理.rhtml文件的请求:

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

我确保通过运行此命令启用了Action模块:

$ sudo a2enmod action

我创建了这个bash shell脚本 erubis.sh 来处理带有嵌入式ruby的页面的请求:

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

它输出一个最小的http头然后要求erubis处理包含嵌入式Ruby的请求的.rhtml文件。 Stdout增强选项似乎有必要将嵌入式Ruby块的输出放在正确的位置。

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