允许Apache PHP写入文件夹需要哪些权限?

允许Apache PHP写入文件夹需要哪些权限?,php,apache,rhel7,Php,Apache,Rhel7,我使用PHP5.4和Apache2运行RHEL7,这需要PHP-FPM 我创建了一个名为WWW的组,并向其中添加了Apache用户。对于PHP来说,一切都很好 我现在需要将一些文件写入名为“reports”的目录 报表具有以下权限 drwxrwsr-x. 2 ec2-user www 6 Aug 17 13:23 reports 当我使用下面的PHP代码将文件写入“报告”时,我得到一个权限错误 $handle = fopen('text.xls', 'w+'); { if

我使用PHP5.4和Apache2运行RHEL7,这需要PHP-FPM

我创建了一个名为WWW的组,并向其中添加了Apache用户。对于PHP来说,一切都很好

我现在需要将一些文件写入名为“reports”的目录

报表具有以下权限

drwxrwsr-x.  2 ec2-user www        6 Aug 17 13:23 reports
当我使用下面的PHP代码将文件写入“报告”时,我得到一个权限错误

$handle = fopen('text.xls', 'w+');
{
   if (!fwrite($handle, $content))
   die("cant' write");
}

我需要在“reports”目录上使用的正确权限是什么?

除了上面提到的文件权限外,您还需要确保您没有遇到SELinux的权限问题;默认情况下,它在RHEL 7上运行

您可以使用
ls-lZ
查看给定文件或目录的当前SELinux上下文

默认情况下,
/var/www/html
具有
httpd\u sys\u content\u t
上下文,这将阻止httpd写入该目录。为了允许httpd写入目录,您需要告诉SELinux允许它,方法是为它提供
httpd\u sys\u rw\u content\t
上下文,这可以通过这些命令完成

sudo semanage fcontext -a -t httpd_sys_rw_content_t <location>
sudo restorecon -v <location>
sudo semanage fcontext-a-t httpd\u sys\u rw\u content\t
sudo restorecon-v
确保用“报告”目录的实际位置替换

文件夹需要077(读写执行)和文件需要644权限。