0

我有一个 Rails 4 应用程序,它有一些发布到 Perl cgi 脚本的视图。perl 脚本通过一个指向名为“cgi-bin”的文件夹的符号链接来访问。当我通过符号链接导航到 perl 脚本时,它们被呈现为文本而不是执行(即:localhost:3000/cgi-bin/test.cgi),但是当我直接访问它们时,它们执行没有问题(即 localhost/路径/到/cgi-bin/test.cgi)。

我在 os x 上使用 apache2。在 localhost/path/to/ 目录中,我有一个 .htaccess 文件,其中包含以下内容:

# General Apache options
AddHandler fastcgi-script .fcgi
AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI

我在 .htaccess 文件中的行与在 localhost:3000/ 中的行完全相同

我还取消了 httpd.conf 中所有 AllowOverride 的注释。

apache 的错误日志中没有错误。当我访问 test.cgi 的直接链接时,apache 的访问日志中会附加一个新行,当我通过符号链接访问脚本(并将其呈现为文本)时,访问日志中不会附加任何行。

知道为什么会发生此错误吗?此设置在 OS X 的以前版本的 Rails 中运行良好,但最近我升级到 Mavericks 并认为我应该也将 Rails 应用程序更新到 v4.0。

4

2 回答 2

1

Apache 配置可以匹配正在访问的文件系统目录 ( <Directory>) 和 URL ( <Location>) 上的传入请求。我相信您将需要在请求进入的 URLExecCGI的部分中启用。Location

于 2013-10-29T23:21:16.423 回答
0

我最近通过将我的 Rails 设置切换到使用 Apache 的 Passenger 解决了这个问题。现在 Perl 脚本和 Rails 站点都通过 apache 运行。这具有现在 .htaccess 文件受到尊重的附加值,使我可以毫无问题地运行 perl 脚本。

我还需要解决一些其他权限问题,但现在一切正常。我在以下 2 篇文章中详细介绍了我如何解决此问题:

Getting-rails-4-and-passenger-set-up-on-mavericks

Perl-scripts-now-work-in-rails-passenger

于 2013-11-10T14:05:32.907 回答