Perl脚本在浏览器中通过符号链接呈现为代码 - 直接访问时很好

时间:2013-10-29 21:47:29

标签: ruby-on-rails perl apache .htaccess

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

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

我还在httpd.conf中取消注释了AllowOverride all。

apache的错误日志中没有错误。当我访问test.cgi的直接链接时,新行被附加到apache的访问日志,当我通过符号链接访问脚本(并且它呈现为文本)时,访问日志中没有附加行。

知道为什么会出现这种错误吗?这个设置在OS X的早期版本的rails中运行良好,但最近我升级到Mavericks并且认为我应该将Rails应用程序更新到v4.0。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

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