尝试使用 mod_ruby 运行 Ruby 代码时出现“Options ExecCGI is off in this directory”

尝试使用 mod_ruby 运行 Ruby 代码时出现“Options ExecCGI is off in this directory”

我在 Ubuntu 上,
Apache 2.2 通过 apt-get 安装了 fcgi,然后通过 apt-get remove 将其删除。
安装了 mod-ruby
配置,我将其添加到 Apache:

  LoadModule ruby_module /usr/lib/apache2/modules/mod_ruby.so
  RubyRequire apache/ruby-run
  <Directory /var/www>
    Options +ExecCGI
  </Directory>

  <Files *.rb>
    SetHandler ruby-object
    RubyHandler Apache::RubyRun.instance
  </Files>
  <Files *.rbx>
    SetHandler ruby-object
    RubyHandler Apache::RubyRun.instance
  </Files>

我在目录中有一个文件www,并且puts 'baba'
该目录中还有其他文件,所有这些文件都可以通过 Apache 访问。
测试文件已chmod 777
在浏览器中出现403
在 Apache 错误日志中,我得到:

[error] access to /var/www/t.rb failed for (null), reason: Options ExecCGI is off in this directory

如果我将其移动到子文件夹rubytest并修改相关配置为:

<Directory /var/www/rubytest>
        Options +ExecCGI
</Directory>

并确保目录具有 755 权限,它只是尝试下载文件,好像它不再识别后缀 *.rb

如果我给出目录和文件 777,则会失败:

usr/lib/ruby/1.8/apache/ruby-run.rb:53:警告:LOAD_PATH 中不安全的世界可写目录 /var/www/rubytest,模式 040777 [2011 年 5 月 24 日星期二 19:39:58] [错误] mod_ruby:ruby 中的错误 [2011 年 5 月 24 日星期二 19:39:58] [错误] mod_ruby:/usr/lib/ruby/1.8/apache/ruby-run.rb:53:在 load': loading from unsafe file /var/www/rubytest/t.rb (SecurityError) [Tue May 24 19:39:58 2011] [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in 处理程序'

但是,如果我使用 *.rbx,它就会像魔法一样起作用...去想象吧。

答案1

确保您没有自己的.htaccess文件- 它可能会覆盖您的阻止。/var/wwwOptionsDirectory

此外,/var/www很可能是您的文档根目录,并且可能继承了其他优先级更高的默认选项。尝试将您的脚本移动到新目录,例如,/var/www/ruby;并Directory相应地修改您的块。

相关内容