我在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
答案 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更加安全。