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+r
; find root_dir -type d -print0|xargs -0 chmod o+x
如果您希望世界能够在每个目录上执行 ls
或 readdir
,请替换 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/”是可执行的的主要内容,如果未能解决你的问题,请参考以下文章
[Shell]crontab 运行任务调用shell脚本,相对路径无法找到