2016-03-22 85 views
0

我正在運行一個本地的nginx服務器,用php編寫一段基本上有上傳功能的代碼。我需要將圖像上傳到文件夾tmp然後開始工作。但我想有一些與文件夾權限問題因爲PHP的發送回錯誤UPLOAD_ERR_CANT_WRITENginx的文件上傳權限錯誤,PHP

目錄ls -l

drwxr-xr-x 2 root root  4096 Mar 22 19:20 assets 
-rw-r--r-- 1 root root  1564 Mar 22 19:20 cropper.php 
drwxr-xr-x 5 root root  4096 Mar 22 19:20 files 
drwxr-xr-x 2 root root  4096 Mar 22 19:20 images 
-rw-r--r-- 1 root root  10018 Mar 22 19:20 index.htm 
-rw-r--r-- 1 root root  7972 Mar 22 19:20 second-page.php 
drwxrwxr-x 2 arjun www-data 4096 Mar 22 19:20 tmp 

我試圖改變周圍的權限,但他們繼續失敗。那麼我怎麼擺脫這個混亂?

回答

1

確保php運行爲www數據組。它不應該。查看「組」的配置。

簡單的方法是

的ps aux | grep的PHP

看看PHP後臺用戶和chown TMP文件夾給該用戶。

記住PHP通常不是由相同的用戶nginx的運行,它們是不同的過程

0

儘管「組權限」設置爲www-data,但用戶似乎仍然被分配給自己。 如果您將cd添加到目錄並運行chown -Rf www-data:www-data它會將tmp目錄的所有者設置爲Web服務器,然後應允許php寫入該文件夾。

0

=> PHP-fpm的需要寫訪問,而不是nginx的。 PHP-FPM進程中運行的UID 1000,還不如WWW的數據

,所以你可以執行chgrp -R 1000 TMP

理想情況下你會限制哪個目錄www數據和PHP-FPM有寫權限,同樣限制它以WordPress的上傳目錄爲例。