【问题标题】:Apache - Permissions are missing on a component of the pathApache - 路径组件缺少权限
【发布时间】:2014-10-01 03:20:27
【问题描述】:

尽管路径正确,但我的网站图片均未加载。在我的 Apache 日志中,我有很多:

(13)Permission denied: [client 87.231.108.18:57108] AH00035: access to 
my/file/path/some-photo.jpg denied because search permissions are missing 
on a component of the path

httpd.conf 文件内:

User apache
Group apache

一直到我的网站目录,文件夹归apache:apache 所有,chmod 一直设置为774

SELinux 布尔值 httpd_can_network_connect 一直是 On

我正在使用.htaccess 文件将我的域名重定向到适当的目录。我怀疑这可能是问题的原因,但是......这只不过是一种直觉。

我确实需要帮助,欢迎提出任何建议。 非常感谢!

编辑 .htaccess 文件的内容:

RewriteEngine On
Options +FollowSymLinks

RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} www\.domain\.com
RewriteRule (.*) /domain/$1 [L]

【问题讨论】:

  • 在那种情况下,你能显示你的htaccess代码吗?
  • 正确!感谢您的帮助建议
  • 您的图片在domain 文件夹中?
  • 您是否在 Wordpress htaccess 中添加了一些规则或其他内容?
  • 先生,您让我走上了正轨。万分感谢。你结束了漫长的流浪。我会回答我自己的问题,提供我的修复细节

标签: apache .htaccess permissions chmod chown


【解决方案1】:

我终于找到了!非常感谢 Justin lurman 指出 .htaccess 文件。这让我看到 Wordpress 不再有权编辑我的 .htaccess 文件。 这更奇怪,因为我 100% 确定权限是好的(如果你问我,甚至过于宽容)。

所以我研究了 SElinux,因为我知道它有时会欺骗我,我是对的。 发出以下命令解决了它:

chcon -R --type=httpd_sys_rw_content_t wp-content/

我希望对其他人有所帮助:)

【讨论】:

  • 谢谢,它对 CentOS 7 有帮助
  • 这让我头疼了几个小时。谢谢!
【解决方案2】:

在我的情况下,包含文件夹没有 +x 权限,将其更改为 755 就可以了。

【讨论】:

    【解决方案3】:

    或者你可以运行

    find . -type d -exec chmod 755 {} \;
    find . -type f -exec chmod 644 {} \;
    

    在那些文件夹中...

    【讨论】:

      【解决方案4】:
      setsebool -P httpd_enable_homedirs 1
      
      chcon -R -t httpd_sys_content_t /home/user/public_html
      

      【讨论】:

      • 我在 OP 中得到了确切的错误,尽管 chmod 和 SELinux chcon 的搜索权限都在路径的每个组件上正确设置。花了几个小时,不断寻找相同的答案来使用 chmod 和 chcon 设置路径组件的权限。如果没有对这个答案的解释,我可能会跳过它,因为没有解决错误消息中的路径组件问题,如果我没有如此迫切地想要不同的东西的话。尽管错误消息指向这些路径组件,但事实证明设置 SELinux 选项 httpd_enable_homedirs 解决了它。谢谢!
      【解决方案5】:

      对我有用的是路径中的所有组件目录都需要所有的执行权限

      所以如果网站的路径是/home/user1/public_html/docroot

      chmod +x /home/user1/
      chmod +x /home/user1/public_html/
      chmod +x /home/user1/public_html/docroot/
      

      【讨论】:

        【解决方案6】:

        在 macOS 上,这可能是由用户组权限问题引起的。

        转到 httpd.conf 文件(如果 Apache 是由 Homebrew 安装的,则位于 /usr/local/etc/httpd)。找到<IfModule unixd_module> 并将User 前面的值更改为您的计算机用户名(您登录时使用的用户名)。重启 Apache。

        如果您在 Apache 中使用 PHP-FMP,也需要对 PHP-FMP 执行此操作。 找到php-fpm.conf 文件(通常位于/usr/local/etc/php/7.x/ 并找到池定义:

        如果有评论,请取消评论 include=/usr/local/etc/php/7.x/php-fpm.d/*.conf 并保存文件。现在打开最近未注释的文件并找到 user = 并将 user 的值更改为您的计算机用户名。现在重启 PHP 服务。

        【讨论】:

          【解决方案7】:

          只有一个命令:

          sudo setsebool -P httpd_enable_homedirs 1
          

          对我有帮助。

          【讨论】:

          • 已经metioned。在网站上投入一些时间,您将获得足够的 privileges 来为您喜欢的答案投票,这是 Stack Overflow 表达感谢并标记有用答案的方式。
          猜你喜欢
          • 2017-07-24
          • 2017-09-05
          • 2021-01-01
          • 2020-09-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-23
          相关资源
          最近更新 更多