我正在尝试在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,并告知他们错误发生的时间,以及您可能执行的任何可能导致错误的操作。
有关此错误的详细信息,可以在服务器错误日志中找到。“
错误日志显示:
Sat Jan 22 17:56:07 2011 client ::1执行格式错误:'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有什么想法吗?谢谢!
发布于 2011-01-23 10:47:26
您可能需要添加,至少,
Content-type: text/html
<html>
....在eruby文件的顶部-- CGI脚本负责在内容之前将标头发送回客户端。可能有更多有意义的标头需要发回,但这可能足以开始使用。
发布于 2012-11-26 08:21:43
我在Ubuntu12.04和Ruby1.8.7上安装了Apache/2.2.22。我安装了Apache 2.7.0cgi实现,并将可执行的erubis文件复制到的文件夹,在我的例子中是/usr/lib/ cgi -bin/erubis。我配置了一个名为erubis.sh的cgi脚本,通过将以下指令添加到/etc/apache/httpd.conf来处理对.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文件。为了将嵌入的Ruby块的输出放在正确的位置,Stdout增强选项似乎是必要的。
http://techdog.tumblr.com/post/36496065877/configure-erubis-cgi-in-apache
https://stackoverflow.com/questions/4771975
复制相似问题