htaccess pcfg_openfile:无法检查 htaccess 文件,确保它是可读的并且“/files/domain.com/public_html/images/”是可执行的

Posted

技术标签:

【中文标题】htaccess pcfg_openfile:无法检查 htaccess 文件,确保它是可读的并且“/files/domain.com/public_html/images/”是可执行的【英文标题】:htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/files/domain.com/public_html/images/' is executable 【发布时间】:2013-03-14 11:47:18 【问题描述】:

今天我将图像从一台服务器迁移到另一台服务器,遇到了一个奇怪的权限问题

[Mon Mar 25 08:42:23.676315 2013] [core:crit] [pid 15182] (13)Permission denied: [client 24.14.2.22:48113] AH00529: /files/domain.com/public_html/images/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/files/domain.com/public_html/images/' is executable, referer: http://domain.com.com/file.php

我尝试过的:

    chmod -R 777 root_dir
    restorecon -r
    disable selinux
    Chown -R root:root root_dir

【问题讨论】:

那是aufs中的一个bug,一些磁盘权限错误。 除了根目录本身之外,您还需要 Web 服务器的用户可以读取所有父目录。 chmod -R 777 是一件非常危险的事情。它使每个目录和文件世界都可写和可执行。如果您想让 root_dir world 下的每个文件都可读,并且 root_dir world 下的每个 dir 都可以执行(这样每个人,包括 Web 服务器,都可以在知道名称的情况下访问文件),更安全的选择是find root_dir -type f -print0|xargs -0 chmod o+rfind root_dir -type d -print0|xargs -0 chmod o+x 如果您希望世界能够在每个目录上执行 lsreaddir,请替换 o+rx。 【参考方案1】:

今天我遇到了这个问题。我将 public_html 从旧驱动器转移到新驱动器并像这样:

chown -R owner:owner public_html

这对于public_html中的子目录和文件是正确的,但是public_html的用户必须是nobody,所以apache可以检查它的内容,所以这解决了我的问题:

chown owner:nobody public_html

注意:owner是用户(例如web1)

【讨论】:

Plesk 中的情况类似:/var/www/vhosts/example.com 文件夹必须归user:psaserv 所有,但其中的所有内容都归user:psacln 所有。 文档链接?这似乎不太正确。 这不是只有root才能修改文件夹吗? Halil Özgür 在将所有文件和文件夹从 httpsdocs 移动到 httpdocs(并在相关 Plesk Obsidian 帐户中切换兼容性)之后,您对 Plesk 的建议挽救了我的一天。【参考方案2】:

我遇到了同样的问题。对我来说,这是 SeLinux (CentOS 7) 的问题。

它对我有用:

$ setsebool -P httpd_enable_homedirs true
$ chcon -R -t httpd_sys_content_t /var/www/html/

请注意,您应该将上面的/var/www/html/ 更改为适当的目录。

【讨论】:

这对我让 Laravel 在 CentOS 7 (LAMP) 上工作有很大帮助。非常感谢。【参考方案3】:

我使用的是 Plesk onyx,但我收到了同样的错误消息,我只是将文件夹权限更改为 775,它对我有用。

【讨论】:

【参考方案4】:

其他方式

sudo setenforce 0

Disable SELinux

我希望这对你有用

【讨论】:

【参考方案5】:

TL;DR:

sudo chmod a+rx /var,/services,/web,/web-folder;
find /var/services/web/web-folder -type d -exec sudo chmod a+rx  +;

您需要确保该目录及其所有父目录对 Web 服务器是可读和可执行的(打开目录需要可执行性)。您可以通过将 Web 服务器用户设置为所有者并设置用户权限(例如:chown apache <dir>; chmod u+rx <dir>;),或将组设置为 Web 服务器组,将组设置为包含 Web 服务器用户的组并将组权限设置为(EG:chgrp apache <dir>; chmod g+rx <dir>;),或者将世界权限设置为(EG:chmod o+rx <dir>;)。

【讨论】:

在根站点文件夹上运行 chmod a+x 在 OS X 上为我工作【参考方案6】:

打开您的 httpd.conf 文件并将 .htaccess 文件中的 Deny from all 更改为 Allow from all

以下几行防止 .htaccess 和 .htpasswd 文件成为

由 Web 客户端查看。

<FileMatch "^\.ht">
  Order allow,dey
  Allow from all
</FileMatch>

这解决了我的问题

【讨论】:

非常感谢!但是它是deny 而不是dey【参考方案7】:

当我检查httpd/user-error_log时,它给出了

[Fri Jan 09 18:58:08 2015] [crit] [client 192.168.1.xxx] (13)Permission
denied: /var/services/web/web-folder/.htaccess pcfg_openfile: unable to check
htaccess file, ensure it is readable

chmod 755 不能解决问题。下面的命令对我有用。我使用 http,因为它是 Synology DSM 5.1-5021 中使用的 apache 用户和组

  cd /var/services/web
  chown http:http web-folder


 apache httpd.conf @ /etc/httpd/conf/httpd.conf

有关新更改的更多详细信息 Apache / Webserver limitations in 5.0

【讨论】:

我没听懂。能否请您添加更多详细信息?

以上是关于htaccess pcfg_openfile:无法检查 htaccess 文件,确保它是可读的并且“/files/domain.com/public_html/images/”是可执行的的主要内容,如果未能解决你的问题,请参考以下文章

无法使用我的 .htaccess 和配置文件

服务器无法读取htaccess文件

根目录中的 Wordpress htaccess 覆盖子域中的 htaccess。子域应用程序现在无法运行

PHP强制下载,htaccess拒绝所有,无法读取文件头

.htaccess子域名重定向无法正常工作

无法在 .htaccess 中正确重写和重定向 url