Apache2:“AH01630:客户端被服务器configuration拒绝”

尝试通过浏览器访问本地主机时出现此错误。

AH01630: client denied by server configuration 

我检查我的网站文件夹权限使用:

 sudo chmod 777 -R * 

这是我的configuration文件:

 <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /home/user-name/www/myproject <Directory /> Options FollowSymLinks AllowOverride all Allow from all </Directory> <Location /> Allow from all Order Deny,Allow </Location> <Directory /home/user-name/www/myproject/> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny Allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride all Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride all Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> 

如果你使用的是Apache 2.4

你必须检查允许和拒绝规则

看看http://httpd.apache.org/docs/2.4/upgrading.html#access

在2.2中,基于客户端主机名,IP地址和客户端请求的其他特征的访问控制是使用指令Order,Allow,Deny和Satisfy完成的。

在2.4中,这种访问控制与其他授权检查相同,使用新模块mod_authz_host。

新的指令是要求 :

2.2configuration:

 Order allow,deny Allow from all 

2.4configuration:

 Require all granted 

这些更改之后也不要忘了重启apache服务器( # service httpd restart

对于所有目录, Require all granted而不是Allow from all 就像是

更新

如果上述不起作用,那么也删除下面提到的这一行:

订单允许,否认

仔细检查DocumentRootpath是否正确。 这可能会导致此错误。

我做了与rackerg向OSX 10.10 Yosemitebuild议的将Apache升级到2.4的相同更改。 以下是添加到http.conf的更改。

 <Directory /> AllowOverride none Require all denied </Directory> <Directory /Volumes/Data/Data/USER/Sites/> AllowOverride none Require all granted </Directory> 

这让我绝对坚持了一天半,但如果所有其他解决scheme都尝试失败,我find了一个解决scheme。

  • 转到活动监视器(Spotlightsearch:活动)
  • 在活动监视器中searchhttpd这是Apache服务
  • select属于根目录的那个,点击左上方的Xclosures它。

在那一刻,我立即停止了403错误,一切开始按预期工作。 奇怪的是,我甚至没有重新启动Apache,它只是工作,我想它重新启动时,我去我的本地主机,我真的不知道,但我猜问题是Apache没有实际上重新启动时使用apachectl重新启动,或停止或开始。 希望这有助于某人。

如果你拖拽错误日志并重新加载页面,你应该看到更多关于确切问题的信息。

抓取环境variables,以便$ {APACHE_LOG_DIR}实际上工作…

 source /etc/apache2/envvars 

然后尾巴看着…

 tail -f ${APACHE_LOG_DIR}/error.log 

花了几个小时后,我解决了自己的问题。

我通过coookbook在vagrant vm中安装了Apache / 2.4.7(Ubuntu)。

/etc/apache2/apache2.conf文件默认没有<VirtualHost *:80>元素。

我做了两个更改来完成

  1. 添加了<VirtualHost *:80>
  2. 添加
    选项索引FollowSymLinks
    AllowOverride全部
    全部允许

那么最后我只是启动虚拟机..

有没有人想过这个wamp服务器默认不包含httpd-vhosts.conf文件。 我的方法是删除下面的注释

  conf # Virtual hosts Include conf/extra/httpd-vhosts.conf 

httpd.conf文件中。 就这些。

这让我疯狂。 最后想出了什么问题是:我使用直接path的错误日志,他们是错的。

为什么Apache给出一个模糊的错误信息? 而是使用正确和有用的错误消息,如:ErrorLog指令的path“/wrong/path/and/filename.log”是无效的。

无论如何,要确保你的错误日志指令看起来像这样:

 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined 

如果你有https主机,那么不要忘记对ssl config进行必要的更改。

另外,有时候以apache用户的身份来检查权限是很有用的:

 # ps -eFH | grep http # get the username used by httpd ... apache 18837 2692 0 119996 9328 9 10:33 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND # su -s/bin/bash apache # switch to that user bash-4.2$ whoami apache bash-4.2$ cd /home bash-4.2$ ls bash-4.2$ cd mysite.com bash-4.2$ ls bash-4.2$ cat file-which-does-not-work.txt 

对于Wamp 3(Apache 2.4),除了按照其他答案中的描述将服务器联机外,在虚拟主机文件conf/extra/httpd-vhosts.conf
你可能需要更换

 Require local 

 Require all granted 

这是适用的,如果你在httpd.conf

 Include conf/extra/httpd-vhosts.conf 

问题是在VirtualHost,但可能不是

要求所有授予

确认你的configuration是正确的,这里是正确的示例 在这里输入图像描述