我正在运行带有PHP 5.4,Apache 2的RHEL 7,它需要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");
}
我需要在"报告"目录上使用哪些正确的权限?
除了提到的文件权限外,您还需要确保 SELinux 没有遇到权限问题;默认情况下,它在 RHEL 7 上运行。
您可以使用ls -lZ <location>
来查看给定文件或目录的当前 SELinux 上下文是什么。
默认情况下,/var/www/html
具有httpd_sys_content_t
上下文,这将阻止 httpd 写入该目录。为了允许 httpd 写入目录,您需要告诉 SELinux 通过为其提供httpd_sys_rw_content_t
上下文来允许它,这可以通过这些命令来完成。
sudo semanage fcontext -a -t httpd_sys_rw_content_t <location>
sudo restorecon -v <location>
请务必将<location>
替换为"reports"目录的实际位置。