PHP/Apache 无法写入任何内容

PHP/Apache 无法写入任何内容

过去几周我在客户网站上遇到一个问题,他们无法将文件上传到网站根目录之外的目录。

查看错误日志后,似乎 PHP 正在吐出错误,指出上传目录不可写。此目录恰好位于 Web 根目录之外,但open_basedir服务器上没有任何限制。

我有一个执行以下代码的测试脚本:

$path = '/var/www/vhosts/testdir';
$writable = is_writable($path) ? 'is writable' : 'is not writable';

echo "$path $writable";

当我从命令行运行脚本时,php test.php目录是可写的。但是,当我从浏览器访问页面时,它不可写。

Web 根目录和testdir都属于同一个用户和组,并且都755设置了权限。我尝试将两个目录的所有者都设置为,但apache无济于事。

当我将上传目录的权限设置为时,777它可以工作,但显然我不希望所有文件都被所有人读取和执行。

发行版是 CentOS 6.7。

我是否忽略了这里一些明显的东西?

答案1

您的问题几乎肯定是 SELinux。“Web 根目录”之外的文件和目录不太可能具有正确的 SELinux 上下文,例如 httpd_sys_content_t。

您必须更改您想要写入的文件/目录上的 SELinux 上下文。

答案2

运行 httpd 的用户或组必须具有写权限。PHP 从 httpd 继承了此功能。

相关内容