为什么我会收到此 403 Forbidden 错误?

为什么我会收到此 403 Forbidden 错误?

解决方案

Apache 至少需要对 vhost 目录的所有父目录具有执行权限。


我正在尝试设置在 CentOS 4.3 上的 Apache 下运行的 Rails 应用程序。我正在使用 Phusion Passenger ( mod_rails) 我确保应用程序部署目录归 Apache 组所有,并且权限设置为允许该组读取它。

在我的 Apache 配置中我有...

<VirtualHost *:80>

  ServerAdmin [email protected]
  DocumentRoot "/home/sneedmoure/deployed_rails_apps/myapp/current/public" 
  ServerName myapp.com
  ServerAlias www.myapp.com
  ErrorLog "logs/myapp.com-error_log"
  CustomLog "logs/myapp.com-access_log" common
  CustomLog "logs/myapp.com-deflate_log" deflate

  <Directory "/home/sneedmoure/deployed_rails_apps/myapp/current/public">
    Order allow,deny
    Allow from all
#AllowOverride all       # Not sure whether I need this
    Options -MultiViews  # Passenger docs say to include this
  </Directory>

</VirtualHost>

当我尝试在浏览器中访问我的应用程序时出现 403 错误。

在错误日志中我得到了类似的条目......

[Wed Nov 25 03:01:19 2009] [error] [client 123.456.789.12] (13)Permission denied: access to / denied

我尝试了应用程序中的不同路径并得到了相同的结果。它在我的开发机器上运行良好。

知道我做错了什么吗?

答案1

我能想到的唯一原因是 Web 服务器用户无权访问该目录 (/home/sneedmoure/deployed_rails_apps/myapp/current/public)。

您可以通过登录 Web 服务器用户帐户并尝试列出目录来验证这一点。

答案2

该目录中是否有索引文件(例如 index.html、index.htm 等)?如果没有,则可能会出现抱怨,因为对该目录的任何请求都显示为尝试检索目录列表。您可以在该目录中创建一个空白文件(例如 test.txt)并成功将其加载到浏览器中吗?

相关内容