如果您可以避免它,或者甚至無法讀取這個問題,那麼您從不想將權限設置爲世界可寫。如果仍然有點寬泛,0770
會是更好的選擇。重點是相關文件夾需要由Web服務器用戶寫入。例如,在許多主機管理Apache會被用戶nobody
運行,所以更合適的權限應該是這樣的:
drwxrwx--- 2 nobody nobody 512 Jan 07 12:32 uploads/
現在,還有就是如果你不能得到直接進入自己設置權限問題除了通過PHP,因爲一些網絡主機將不允許您在PHP中運行chmod
或其他權限或所有權修改。也就是說,如果您使用的是cPanel(也可能是其他主機系統也這樣做),您可以使用在線文件管理器,通過瀏覽到相應的目錄並使用位於頁面頂部的change permissions
來完成所需的操作。
因此,最終,您需要的是:如果您需要能夠在特定位置創建目錄,則需要確保該位置可由Web服務器寫入。在您的示例中,這意味着您需要首先在img/user
上設置適當的權限,然後再嘗試創建img/user/$id
。這意味着img/user
必須擁有0770
的權限,並且必須歸屬於nobody:nobody
(用戶或組都可以在此上下文中工作,您不需要兩者),或者它必須具有0777
的權限。然後,當您創建特定的用戶目錄,你可以做到這一點,像這樣:
if(!is_dir('img/user/'.$id))
{
mkdir('img/user/'.$id, 0770, true);
}
...因爲它會已經由適當的用戶所擁有,你就已經把它的寫權限僅僅是因爲你的網絡服務器首先創建它。
如果你找不到一個非PHP的方式來做到這一點,那麼你必須讓你的虛擬主機來幫助。
您可能可以使用FTP設置權限。 – PeeHaa 2012-03-21 11:16:20