Apache无法写入文件

时间:2016-11-23 22:56:41

标签: php file permissions fedora

我在VirtualBox上使用Fedora 24来托管一个小型的PHP Web应用程序。我试图将文本附加到与PHP文件(/ var / www / html /)位于同一本地目录中的文件中。无论我尝试将哪种权限或所有权设置到目录(html /)或文件中,我都会在第21行的/var/www/html/pdf.php中出现“权限被拒绝”错误。

我的php.ini文件中是否有任何配置设置需要启用以允许编辑文件?我甚至尝试将目录和文件设置为chmod 777只是为了看看它是否会让我访问,但即使这样也被拒绝了。

编辑:我也尝试在其他位置创建具有相同结果的目录和文件。我试图让Apache运行mkdir和touch命令,结果相同。

编辑2:应该留下我的初步问题的评论。以下是目标目录的所有权信息: ls -l / var / www / html / drwxrwxr-X。 2 apache apache 4096 11月23日21:28 docs

文件的所有权信息: -rwxrwxr-X。 1 apache apache 1381年11月28日17:47 pdf.php

2 个答案:

答案 0 :(得分:0)

尝试分配到www-data:nobody

chown -R www-data:nobody *,检查httpd.conf上的apache组。

至少验证/ var / html perms至775。

答案 1 :(得分:0)

花了很多时间寻找这个答案,但是它是零碎的,而且每个人都没有发布解决方案(大部分时间),所以这是我的解决方案,它也在各种Web控制面板上使用。 / p>

安装并使用MOD_RUID2

使用CLI安装PHP(这是较新版本的标准配置)

在虚拟主机的HTTPD.CONF文件中,您将添加以下内容,将用户名替换为用户的登录名,将用户组替换为用户的组(通常是相同的)

<IfModule !mod_ruid2.c>
    SuexecUserGroup username usergroup
</IfModule>
<IfModule mod_ruid2.c>
    RMode config
    RUidGid username usergroup
    RGroups @none
</IfModule>

虚拟主机配置的示例是:

<VirtualHost *:443>
  DocumentRoot "/home/imtheuser/public_html"
  ServerName imtheuser.com
  <IfModule !mod_ruid2.c>
    SuexecUserGroup imtheuser imtheuser
  </IfModule>
  <IfModule mod_ruid2.c>
    RMode config
    RUidGid imtheuser imtheuser
    RGroups @none
  </IfModule>
  <Directory "/home/imtheuser/public_html">
    allow from all
    Options None
    Require all granted
  </Directory> 
</VirtualHost>

这将允许apache / php写入用户拥有的目录。然后将chmod设置为0777更加安全。