Nginx
仍然對權限感到困惑 - linux、nginx、php-fpm
我已經閱讀了我的網站文件/文件夾在 Linux 網路伺服器上應具有哪些權限?
但是我仍然卡住了。我的設置是:
- 擁有構成網站的目錄和文件的開發人員使用者“ade”
- 伺服器是帶有 php-fpm 通過套接字的 nginx:
fastcgi_pass unix:/tmp/php5-fpm.sock;
- 網站包含一個上傳目錄,在此配置下執行時,該目錄必須可由 PHP 寫入
- 我不想將權限設置為 777,顯然
我創建了一個
webadmin
組並向其中添加了“ade”和 nginx:$ groups ade ade : ade webadmin $ groups nginx nginx : nginx webadmin
我已將站點中所有內容的所有者設置為我和 webadmin 組:
chown ade:webadmin *
…如你看到的:
drwxrwxr-x 2 ade webadmin 4096 Jul 3 13:58 logs drwxrwxr-x 5 ade webadmin 4096 Jul 4 08:35 public drwxrwxr-x 4 ade webadmin 4096 Jul 3 16:18 system drwxrwsr-x 2 ade webadmin 4096 Jul 9 16:13 uploads
然而,儘管上傳的權限為 775(使用者和組的 rwx),nginx 和 php 無法寫入該文件夾。只有當我將它設置為 777 時,它才能將圖像上傳到它。
我在上述規範答案中看到了有關使用的建議,
chmod u+w
但不明白為什麼這是必要的。
我想出的最明智的方法是:
查看/etc/php-fpm.d/www.conf FPM 使用的使用者是什麼。就我而言,它是“阿帕奇”。然後我將此使用者添加到“nginx”組。
現在我可以以一致的方式控制權限 - 使用者是我,我擁有完全權限,組是“nginx”,它已讀取(和 r+x 用於 dirs),並且它是一致的,因此兩個 Web 內容(由 nginx 訪問) PHP(由 php-fpm 訪問)由組“nginx”設置。
另一個不在 php-fpm 配置中更改使用者或組的好理由是避免處理權限問題的後果 - php-fpm 使用其以前的使用者創建了各種文件夾/文件。現在它無法訪問它們,因為不再使用同一個使用者。例如 PHP 會話數據(參見 /var/lib/php/session)。
我希望這有幫助!