我正在设置一个新的 Centos 7 服务器,通过带有 Nginx 的 PHP-FPM 在 PHP 5.6.40 上运行一些旧站点。
但是,我遇到了一个问题,即所有文件似乎都是只读的。
PHP在nginx用户下运行,站点目录归nginx所有,我通过chown尝试了verious文件权限,包括“777”。
我创建了一个简单的程序来说明:
<?php
$fileList = glob('*');
//Loop through the array that glob returned.
foreach($fileList as $filename){
//Simply print them out onto the screen.
echo $filename;
if (is_writable($filename))
echo ' - Yes!';
else
echo ' - No.';
echo '<br>';
}
这将输出站点目录中的文件,每个文件名旁边都有“否”。
任何关于可能导致这种情况的提示,或者我如何能够调试的任何提示都将不胜感激。
SELinux 不允许 nginx 或 php-fpm 写入随机目录。
httpd_sys_rw_content_t
你需要通过设置它们的默认上下文,然后设置任何现有文件的上下文来告诉 SELinux 哪些目录应该是可写的。例如: