![](/img/trans.png)
[英]PHP/Wordpress - Can't save to uploads directory without permission 777
[英]Why can't PHP create a directory with 777 permissions?
我正在嘗試使用 PHP 和以下命令在我的服務器上創建一個目錄:
mkdir("test", 0777);
但它沒有提供完全權限,只有這些:
rwxr-xr-x
該模式由您當前的umask
修改,在本例中為022
。
umask
工作方式是一種減法。 您獲取mkdir
的初始權限並減去umask
以獲得實際權限:
0777
- 0022
======
0755 = rwxr-xr-x.
如果您不希望發生這種情況,則需要將umask
暫時設置為零以使其無效。 您可以使用以下代碼段執行此操作:
$oldmask = umask(0);
mkdir("test", 0777);
umask($oldmask);
第一行將umask
更改為零,同時將前一個存儲到$oldmask
。 第二行使用所需的權限和(現在不相關的) umask
。 第三行將umask
恢復到原來的樣子。
文件和目錄的創建受 umask 的設置影響。 您可以通過操作 umask 來創建具有特定權限集的文件,如下所示:-
$old = umask(0);
mkdir("test", 0777);
umask($old);
避免在多線程 Web 服務器中使用此函數。 創建文件后最好使用 chmod() 更改文件權限。
例子:
$dir = "test";
$permit = 0777;
mkdir($dir);
chmod($dir, $permit);
對於那些嘗試過的人
mkdir('path', 777);
它沒有用。
這是因為,顯然,文件模式前面的 0 非常重要,它告訴 chmod 將傳遞的數字解釋為八進制而不是十進制。
附言。 這不是問題的解決方案,而只是已接受的 anwser 的附加組件
可能,您的umask設置為排除那些
就我而言,我必須對centos7使用以下方式,解決了問題
$oldmask = umask(000);//it will set the new umask and returns the old one
mkdir("test", 0777);
umask($oldmask);//reset the old umask
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.