2011-01-23 69 views
3

我想在rhtml中运行嵌入式ruby。rhtml(eruby)apache麻烦

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

“内部服务器错误

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

请与服务器管理员联系,[email protected],并通知他们错误发生的时间,以及任何你可能已经做了可能造成的错误。

详细了解科技信息他的错误可能在服务器错误日志中可用。“

错误日志说:

[星期六年1月22 17点56分07秒2011] [错误] [客户端:: 1](8)Exec的格式错误:“DIR /的cgi-bin /测试的EXEC键。 RHTML”失败 [周六1月22日17时56分07秒2011] [错误] [客户:: 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 

任何想法?谢谢!

回答

1

你可能需要添加,在最低限度,

Content-type: text/html 

<html> 
.... 

你eRuby的文件的顶部 - CGI脚本负责内容之前头发送回客户端。可能有更多的头文件有意回传,但这可能足以开始。

+0

谢谢!我添加了“Content-type”字段,但它仍然不起作用。 $猫test.rhtml 内容类型:文本/ HTML 测试<%富= “红宝石”;打印“#{foo}!” %> 在错误日志中获取相同的错误。谢谢! – user414585 2011-01-23 02:50:21

0

的Apache/2.2.22的Ubuntu 12.04 & 的Ruby 1.8.7。我安装了erubis 2.7.0实现&将可执行文件erubis文件复制到Apache的cgi文件夹,在我的情况下复制到/ usr/lib/cgi-bin/erubis。我加入这些指令配置称为erubis.sh来处理的.rhtml文件的请求CGI脚本来/etc/apache/httpd.conf:

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

我确信,操作模块运行以下命令启用:

$ 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