权限被拒绝:/var/www/abc/.htaccess pcfg_openfile:无法检查htaccess文件,确保它是可读的?

PHP*_*ver 43 php apache .htaccess mod-rewrite

大家好,我在我的网站上使用PHP,在我的系统上使用ubuntu linux.我在apache的error.log文件中得到了上述错误,即使在正确配置所有内容之后也是如此.我对此做了很多研究,但无法解决问题.有人可以帮我解决这个问题吗?以下是我的.htaccess文件abc directory.有人可以帮我这方面吗?

# -FrontPage-

IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*

<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
AuthName abc.org
AuthUserFile /home/abc/public_html/_vti_pvt/service.pwd
AuthGroupFile /home/abc/public_html/_vti_pvt/service.grp
Options -Indexes

RewriteEngine On
RewriteRule ^alumni$ alumni.php
RewriteRule ^student$ student.php
RewriteRule ^view_alumni_article/view/([0-9]+)$ view_alumni_article.php?op=view&article_id=$1
Run Code Online (Sandbox Code Playgroud)

Jon*_*Lin 119

确保apache可以读取htaccess文件:

chmod 644 /var/www/abc/.htaccess 
Run Code Online (Sandbox Code Playgroud)

并确保它所在的目录是可读可执行的:

chmod 755 /var/www/abc/
Run Code Online (Sandbox Code Playgroud)

  • 我相信这项工作有例外.如果您有suphp和/或suexec,如果您的文件可以按组写入,则可能会收到其他错误.如我错了请纠正我. (2认同)
  • 它没有解决我的问题。 (2认同)

小智 31

当我更改一次使用的主目录时,我遇到了同样的问题.在我的情况下,这是因为selinux.我用下面的方法解决了这个问题:

selinuxenabled 0
setenforce 0
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了同样的问题而不是禁用selinux我发现`sudo restorecon -R <path to site>`足以解决问题. (5认同)

jbr*_*ahy 6

如果它进入selinux竞技场,你会遇到一个更复杂的问题.删除selinux保护但接受它并使用旨在管理它的工具并不是一个好主意.

如果您正在提供内容/var/www/abc,则可以使用Z附加到普通ls -l命令来验证selinux权限.即ls -laZ会给SELinux上下文.

要添加selinux服务的目录,您可以使用这样的semanage命令.这会将标签更改/var/www/abchttpd_sys_content_t

semanage fcontext -a -t httpd_sys_content_t /var/www/abc
Run Code Online (Sandbox Code Playgroud)

这将更新标签 /var/www/abc

restorecon /var/www/abc 
Run Code Online (Sandbox Code Playgroud)

这个答案来自unixmen并进行了修改以适应这个问题.我一直在寻找这个答案,最后发现它感觉我需要分享某个地方.希望它可以帮助某人.