【问题标题】:rhtml (eruby) apache troublerhtml (eruby) apache 麻烦
【发布时间】:2011-06-13 21:44:40
【问题描述】:

我正在尝试在 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] [错误] [客户端 ::1] (8) 执行格式错误:'Dir/cgi-bin/test.rhtml' 的执行失败 [2011 年 1 月 22 日星期六 17:56:07] [错误] [客户端 ::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

有什么想法吗?谢谢!

【问题讨论】:

    标签: ruby apache eruby


    【解决方案1】:

    您可能至少需要添加,

    Content-type: text/html
    
    <html>
    ....
    

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

    【讨论】:

    • 谢谢!我添加了“内容类型”字段,但它仍然不起作用。 $ cat test.rhtml 内容类型:text/html 测试 在错误日志中得到同样的错误。谢谢!
    • 注意text/html后面的两个换行符是必须的。
    • 感谢马克的评论!我添加了两个新行,但它仍然不起作用。
    【解决方案2】:

    我在 Ubuntu 12.04Ruby 1.8.7 上有 Apache/2.2.22。我安装了 erubis 2.7.0 实现并将可执行的 erubis 文件复制到 Apache 的 cgi 文件夹,在我的例子中是 /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

    【讨论】:

      猜你喜欢
      • 2010-11-25
      • 2013-02-01
      • 1970-01-01
      • 2015-12-04
      • 2017-07-15
      • 2010-11-11
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多