Php

如何停止所有文件都被 PHP 讀取?

  • January 31, 2021

我正在設置一個新的 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 哪些目錄應該是可寫的。例如:

semanage fcontext -a -t httpd_sys_rw_content_t "/srv/www/my/uploads(/.*)?"
restorecon -rv /srv/www/my/uploads

引用自:https://serverfault.com/questions/1051830