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>
元素。
我做了两个更改来完成
- 添加了
<VirtualHost *:80>
- 添加
选项索引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是正确的,这里是正确的示例