將父文件夾設置為 www-data 使用者後,權限被拒絕創建文件夾
在我的
phpinfo
配置中,我看到以下內容:User/Group www-data(33)/33
在我的目錄
/var/www/html/pluto-php/public/
中,我看到以下內容data directory inside this path:
4 drwxrwxrwx 2 www-data www-data 4096 Sep 19 23:25 data
我還看到以下內容
pluto-php directory
4 drwxr-xr-x 8 root root 4096 Sep 16 21:49 pluto-php
我將數據目錄的所有者和組設置為 www-data。
php code
不知何故,在這一切之後,當我執行一個在數據目錄中創建一個目錄的 php 腳本時,我仍然會遇到這個錯誤:Warning: mkdir(): Permission denied in /var/www/html/pluto-php/vendor/pluto/src/Pluto/Stdlib/FilesystemUtils.php on line 32
我試著做
apache2ctl restart
,但什麼也沒做。我已經按照Google搜尋的每個教程進行操作,但我被困在這裡。
更新:
這是我的程序列表
root@yonaton-Lenovo-V570:/var/www/html# ps aux | grep apache root 3234 0.0 0.6 409908 37092 ? Ss Sep28 0:09 /usr/sbin/apache2 -k start www-data 8516 0.3 0.2 410888 16988 ? S 10:41 0:00 /usr/sbin/apache2 -k start www-data 8517 0.0 0.1 409940 10632 ? S 10:41 0:00 /usr/sbin/apache2 -k start www-data 8518 0.0 0.1 409940 10632 ? S 10:41 0:00 /usr/sbin/apache2 -k start www-data 8519 0.0 0.1 409940 10632 ? S 10:41 0:00 /usr/sbin/apache2 -k start www-data 8520 0.0 0.1 409940 10632 ? S 10:41 0:00 /usr/sbin/apache2 -k start www-data 8521 0.0 0.1 409940 10632 ? S 10:41 0:00 /usr/sbin/apache2 -k start root 8523 0.0 0.0 21292 1088 pts/1 S+ 10:41 0:00 grep --color=auto apache
www-data
必須對整個樹有寫訪問權。您可以執行
chown -R www-data:yourgroup /var/www/html/pluto-php
,yourgroup
使用者的組名在哪裡(root
出於安全原因避免使用)。如果您不指定您的組名,您將無法在數據目錄中寫入和讀取。接下來通過執行添加正確的權限
chmod -R 775 /var/www/html/pluto-php
。
權限被拒絕始終是作業系統級別的問題。首先確保您認為程序正在執行的使用者確實是相關使用者。您似乎已經這樣做了,但還要驗證您沒有執行諸如 suexec、mpm_itk 或 mod_ruid 之類的東西,它們可以更改 UID 單個請求的執行方式。
接下來,檢查您嘗試寫入的路徑是否可由使用者遍歷(在本例中為 www-data)。該
namei
命令可以在這裡提供幫助:
namei -mo /var/www/html/pluto-php/public/
接下來驗證是否某些作業系統級別的安全軟體(例如 SELinux 或 Apparmor)正在執行,如果是,請確定它是否會干擾您寫入該目錄的程序。
最後,永遠不需要 0777 的目錄權限。可能是 1777,但是如果您需要將權限設置為 0777 才能使其工作,則有其他問題。