2

我花了几个小时找出如何在 Fedora 18 中为我的 apache 安装获取文件权限。我做了以下没有任何运气的事情:

httpd.conf(之后重新启动)

DocumentRoot "/var/www/html"

<Directory "/var/www/html/">
    AllowOverride all
    # Allow open access:
    Require all granted
    Options Indexes FollowSymLinks Multiviews
</Directory>

我的 /var/www/html 文件夹的文件权限

drwxrwxrwx. 6 chris apache 4096 26 apr 22:40 .
drwxrwsrwx. 7 chris apache 4096 23 apr 09:30 ..
-rwxrwxrwx. 1 chris apache   19 22 apr 08:37 index.php
-rwxrwxrwx. 1 chris apache   20 21 apr 17:14 info.php
drwxrwxrwx. 8 chris apache 4096 27 apr 14:58 pyro
-rwxrwxrwx. 1 chris apache  125 24 apr 00:36 test.html

如您所见,我什至将权限递归更改为 777(使用 -R )

我还尝试将用户更改为 root 和 apache,将组更改为用户和 root 等。在我的版本中,我有 2 个用户:root 和 chris。

我如何改变它并不重要。我仍然得到 PHP 错误(例如在 pyrocms 后端):

A PHP Error was encountered

Severity: User Warning
Message: system/cms/cache/default/simplepie/ is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.
Filename: libraries/Simplepie.php
Line Number: 2040

Stil 它似乎不是 pyrocms,因为 Laravel 框架给了我同样类型的错误。

编辑 我的 httpd.conf 中的用户和组也设置为 apache

4

2 回答 2

9

我遇到了同样的问题,因为 SELinux 阻止了 httpd,在此命令之后它运行良好:

setsebool -P httpd_unified 1

我在fedora 23上。

于 2015-11-18T18:09:12.337 回答
1

有很多事情可能会影响这一点:

  • 自主访问控制 (DAC)
  • SELinux 文件/内容类型
  • 用户:组所有权
  • apache 服务器模块丢失/配置错误。

您的服务器目录具有 777 权限这一事实将导致我排除DAC作为错误的主要原因;但是,您可能需要检查以确保 user(chris) 是该apache组的一部分,只是为了更好地衡量。此外,httpd 服务器默认以apache 用户身份读取/写入文件!

同样,您说即使“禁用” SELinux后错误仍然存​​在;我假设您setenforce 0为了将 SELinux 策略从更改EnforcingPermissive. 此外,如果它与 SELinux 有关,大多数时候(如果不是全部)您会收到有关拒绝的通知,或者您可以在日志中看到它。同样,为了更好地衡量,使用ls -Z; 检查目录/文件的 SELinux 内容类型。内容类型应该是httpd_sys_content_t或者甚至是httpd_sys_content_rw_t.

最后,应该彻底检查 apache 模块和服务器配置——包括httpd.conf文件中的注释——以获得正确的选项、模块和顺序。如果一切都失败了,请尝试移动这些行

 <Directory "/var/www/html/">
    AllowOverride all
    # Allow open access:
    Require all granted
    Options Indexes FollowSymLinks Multiviews
</Directory>

到配置文件 ( /etc/httpd.conf) 的底部。应仔细检查该代码块中的选项标志;您可以在apache 网站上获得更多信息。例如,不确定在这种情况下事情的顺序是否会为您改进/改变事情,但我的 Fedora 系统上的httpd.conf文件Require All granted.

于 2013-11-02T07:55:50.180 回答