2010-10-22 99 views

回答

108

模式通過修改您目前的umask,在這種情況下爲022

umask的工作方式是減法。你需要給mkdir初始許可,並減去umask得到實際權限:

0777 
- 0022 
====== 
    0755 = rwxr-xr-x. 

如果你不希望這樣的事情發生,你需要設置你的umask暫時爲零,以便它有沒有影響。你可以用下面的代碼片段做到這一點:

$oldmask = umask(0); 
mkdir("test", 0777); 
umask($oldmask); 

第一行改變umask爲零,同時存儲前面的一成$oldmask。第二行使目錄使用所需的權限和(現在不相關)umask。第三行將umask恢復到最初的狀態。

有關更多詳細信息,請參閱PHP doco的umaskmkdir

2

也許,你umask設置爲排除那些

12

文件和目錄的創建由umask的設定影響。您可以通過操縱的umask如下創建一組特定權限的文件: -

$old = umask(0); 
mkdir("test", 0777); 
umask($old); 
0

對於那些誰試圖

mkdir('path', 777);

,並沒有奏效。

這是因爲顯然,文件模式前面的0非常重要,它告訴chmod將傳遞的數字解釋爲八進制數而不是十進制數。

Reference

Ps。這不是問題的解決方案,而只是接受的安裝程序的附加組件

0

避免在多線程Web服務器中使用此功能。創建文件後,最好使用chmod()更改文件權限。

實施例:

$dir = "test"; 
$permit = 0777; 

mkdir($dir); 
chmod($dir, $permit); 
相關問題