出现403 Forbidden报错,一般两种可能性


可能性一、DocumentRoot选项,忘记配置新目录的访问权限 

默认安装成功参数设置:

DocumentRoot /usr/local/www/data
<directory "/usr/local/www/data">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</directory>

1.1 问题一、重新指定web存放目录,忘记修改Directory后面的路径

例如 DocumentRoot /usr/local/www/data,忘记指定Directory项的路径,造成访问所有目录都出现403,必须同时指定directory "/usr/local/www/data"才行。


1.2 问题二

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

其中Deny from all已经拒绝了所有的请求链接。应该修改成allow from all

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    allow from all
</Directory>


可能性二、

配置了VirtualHost,并且有某个VirtualHost的DocumentRoot不在全局的DocumentRoot目录下。

解决:此时必须在全局中单独增加对该项目的Directory项设置,否则所有访问该VirtualHost下的请求都会403

问题原因:主要是因为Apache2对权限和安全的更高要求,对分布在不通磁盘上的目录文件进行严格管理。

通常尝试办法:

第一:看看是不是Directory配置错了,好像一般不会是这个原因
第二:看看User Group指定的用户有没有权限访问那个目录,否则用chown修改目录的所有者
第三:看看是不是seLinux搞得鬼,一般没事把selinux停了再重启linux,selinux的配置文件在/etc/selinux/config,改成disable
第四:我把所有的都做了发现还是不行,那么可能是apache是用root安装的,把apache卸了用一个非root用户重新安装。