对于那些被 Apache 2.4 上反复出现的“禁止访问”消息搞得筋疲力尽的人来说

大家好,
我是Mandai,Wild团队负责开发工作的成员。
我最近安装了 Apache 2.4,但反复出现“禁止访问”消息,这让我很沮丧,所以我整理了一份我尝试过的方法清单。
此错误内容
这次我遇到的错误是这样的:
[Mon Jun 05 09:45:45.490521 2017] [core:crit] [pid 8125] (13)权限被拒绝:[client 127.0.0.1:36174] AH00529: /var/www/vhosts/wordpress/.htaccess pcfg_openfile:无法检查 .htaccess 文件,请确保其可读且“/var/www/vhosts/wordpress/”可执行,引用页:http://wp.localhost/readme.html
我在 /etc/hosts 文件中将子域名 wp.localhost 分配给了 127.0.0.1。
正如你所料,这是一个 WordPress 的开发子域名。
我当时正在使用之前用 VirtualBox 创建的虚拟机,所以我想我可以跳过这些设置!
这次,我决定在虚拟机内的桌面环境中使用 Eclipse 进行开发,所以我重启了电脑,以便使用双显示器。
现在回想起来,那是个错误。
这次的解决方案
在研究了一个小时左右,发现我能找到的全是关于权限的信息后,我正准备放弃回家,突然想起了 SELinux……
在这种情况下,最好的办法就是……
sudo setenforce 0
这是唯一的办法。
一切正常!
所以,系统重启后,上次执行的 setenforce 命令被重置了,对吧?
因为这只是一个临时解决方案,所以我决定不编辑 /etc/selinux/config 文件。
结果是我忘记了那种姿势,它根本就不再是一种姿势了。
基本上,虚拟机是通过“保存状态”停止的,所以从虚拟机的角度来看,它并没有被关闭。
还有其他可能性
看来这个错误并非总是由 SELinux 引起的,我找到了各种不同的解释。
如果问题是由于权限引起的。
在这种情况下,文档根目录(本例中为 /var/www/vhosts/wordpress/)没有查看权限,因此您无法访问其下的文件。
这可以通过向文档根目录添加执行权限来实现。
chmod +x /var/www/vhosts/wordpress/
这就是其中一种模式。
如果原因是用户权限问题
这是我首先想到的。
但通常情况下,并非如此。
一般来说,在开发环境中,你不会创建权限为“770”或“750”之类的文件。
最好使用“755”或“644”之类的标准权限。
符号链接已禁用
这虽然尴尬,但有时会发生。
添加选项 FollowSymlinks。
你只能小心谨慎。
概括
在这种情况下,我希望使用如下所示的 httpd.conf 的最小配置,并尽量避免设置环境。
<VirtualHost wp.localhost:80>服务器名称 wp.localhost 文档根目录 /var/www/vhosts/wordpress<Directory /var/www/vhosts/wordpress> Options FollowSymlinks Includes AllowOverride All Require all granted</Directory></VirtualHost>
你绝对不想忘记这个以及 SELinux 设置。
就这样。
0
