主要有以下几个原因:
- 目录权限 这个看apache错误日志,一般会有提示,如:
1475 [Thu Jun 20 16:39:43.673203 2019] [core:crit] [pid 43885] (13)Permission denied: [client 112.93.21.21:14290] AH00529: /home/hello/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/home/hello/' is executable
需要给目录加上可读可执行权限,如
chmod o+x /home/hello
chmod o+r /home/hello
- Require all denied 设置
如这样配置虚拟目录:
Alias /virtualdirectory/ "D:/user/www/virtual/"
<Directory "D:/user/www/virtual/">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
apache默认配置是比较严格的,不允许未经过验证去访问目录,这个可以在httpd.conf
找到该配置:
<Directory>
AllowOverride none
Require all denied
</Directory>
解决方法:给虚拟目录增加 require all granted
指令,即上述配置变成:
Alias /virtualdirectory/ "D:/user/www/virtual/"
<Directory "D:/user/www/virtual/">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
- SELinux
主要是 rehat系列发行版,该设定比较烦人,不想配置的直接关掉:
查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
来源:oschina
链接:https://my.oschina.net/u/572975/blog/3064392