Php
如何停止所有文件都被 PHP 讀取?
我正在設置一個新的 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