我正在設定我的網站,並且需要移動一些文件。我創建了一個簡單的 PHP 腳本,其中涉及 mkdir()、copy() 等內容......但我收到權限錯誤。
將受影響的資料夾設定為 777 後,一切正常,但在我的舊網站上,我設定為 755。
如果我在 Plesk 中的使用者是 Johnnie,而文件上的使用者是 Johnnie(且群組是 psacln),PHP 腳本是否應該具有存取權限?如果沒有,我需要對使用者進行什麼設定才能讓我的瀏覽器能夠移動檔案?
答案1
你所說的訪問是什麼意思? - 查看檔案屬性; - 開啟檔案進行讀取; - 開啟檔案進行寫入; - 開啟檔案進行讀取/寫入; - 開啟檔案以執行。
請注意,PHP 應用程式中的使用者名稱與 Unix 使用者不同,即使它們具有相同的名稱。
請注意,apache/php 是以 apache、www、www-data、nobody... 使用者身分執行的。這是在 apache 配置中配置的。找到這個:
egrep -r '^User|^Group' /etc/{apache*,http*}
在進行任何更改之前運行備份。
找到您的使用者和 apache 使用者所屬的公共群組。如果沒有創建一個。
將 DocumentRoot 中的檔案和資料夾群組變更為此群組:
chown -R myuser:commongroup /var/www/
更改資料夾的 SUID,以便新檔案歸該群組所有:
find /var/www/ -type d -print0|xargs -0r chmod g+rxs
chmod -R u+r,g+r,o= /var/www/
對於您想要授予 PHP 寫入權限的資料夾和文件,請執行以下操作:
chmod g+w /var/www/folder/subfolder /var/www/folder/file.txt
答案2
如果您透過 cgi 或 mod-php 使用 php,而沒有額外的修補程式/模組來處理權限,那麼您的 php 腳本可能正在使用 Web 伺服器的帳戶執行。這通常是 www-data、nobody 或其他一些非 root 帳號。
您可能需要將執行 Web 伺服器的使用者新增至群組中,或建立包含 Web 伺服器和任何其他需要存取的使用者的群組。