【问题标题】:Permission denied: /var/www/abc/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable?权限被拒绝:/var/www/abc/.htaccess pcfg_openfile:无法检查 htaccess 文件,确保它是可读的?
【发布时间】:2014-01-04 19:08:56
【问题描述】:

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

# -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

【问题讨论】:

  • 你启用了 SELinux 吗?

标签: php apache .htaccess mod-rewrite


【解决方案1】:

确保 apache 可以读取 htaccess 文件:

chmod 644 /var/www/abc/.htaccess 

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

chmod 755 /var/www/abc/

【讨论】:

  • 我有同样的问题,改变上面的权限使它工作。但是,我对根目录为755 不满意。当我做到751 时,它似乎可以工作。这是要塞东西吗?
  • 我相信这个工作有例外。如果您有 suphp 和/或 suexec,如果您的文件可按组写入,您可能会收到额外的错误。如果我错了,请纠正我。
  • +1 表示简短但最有效的解决方案。我完全被这个错误搞砸了,但你的解决方案很不错!
  • 它没有解决我的问题。
【解决方案2】:

当我更改一次使用的主目录时,我遇到了同样的问题。就我而言,这是因为selinux。我使用以下方法解决了这个问题:

selinuxenabled 0
setenforce 0

【讨论】:

  • 我遇到了同样的问题,我没有禁用 selinux,而是发现 sudo restorecon -R &lt;path to site&gt; 足以解决问题。
  • Anessh 的解决方案对我有用......因为上面的所有其他解决方案都依赖于selinux 不活跃——权限问题只是权限问题。但是如果 selinux 阻止了一切(与restorecon 相同),那么这些解决方案将毫无意义。我的 CentOS 6 LAN web 服务器上的问题通过禁用selinux 解决了——直到电源故障发生并显示 selinux 设置在不编辑 conf 文件的情况下没有保存。在重启时保存 selinux 设置 vi /etc/sysconfig/selinux 找到并将 SELINUX=enabled 行更改为 SELINUX=disabled 重启你的 MACHINE
  • 解决了我的问题。
  • 如果文件权限没问题,这就是redhat like distribution的正确解决方案
【解决方案3】:

如果它进入 selinux 领域,你就会遇到一个更复杂的问题。移除 selinux 保护并不是一个好主意,而是接受它并使用旨在管理它的工具。

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

要添加一个由 selinux 提供服务的目录,您可以像这样使用semanage 命令。这会将/var/www/abc 上的标签更改为httpd_sys_content_t

semanage fcontext -a -t httpd_sys_content_t /var/www/abc

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

restorecon /var/www/abc 

此答案取自 unixmen 并经过修改以适合此问题。我一直在寻找这个答案一段时间,终于找到了,所以觉得我需要在某个地方分享。希望它可以帮助某人。

【讨论】:

  • 试试 yum install policycoreutils-python
  • 你总是可以找到要安装的包,使用类似这样的提供。 $yum whatprovides /usr/sbin/semanage
  • 在 CentOS 7 上没有任何运气。检查权限,执行,按照描述运行 semanage/restorecon。仍然收到错误
  • 你重启了吗?可能是挂着的东西。
  • 如果第一个不起作用,这是第二个正确答案。
【解决方案4】:

我也陷入了这个困境,相信我禁用 SELinux 不是一个好主意。

请在下面使用,你很好,

sudo restorecon -R /var/www/mysite

享受..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-14
    • 2017-10-26
    • 2021-10-21
    • 2014-10-18
    • 2019-05-17
    • 2016-05-03
    • 2016-07-02
    • 2017-05-14
    相关资源
    最近更新 更多