PHP mkdir 0777權限問題


在linux系統中,即使我們使用root帳號去手工執行php命令:

mkdir('test', 0777);

結果文件的權限依然為:

drwxr-xr-x 2 root root   4096 Jun 17 11:28 test

很明顯這個權限是 755

為什么會這樣呢?

在linux系統中在創建文件/文件夾時有一個默認權限,此權限受 umask 設置影響,在/etc/bashrc配置文件中我們可以找到如下配置:

# By default, we want this to get set.
# Even for non-interactive, non-login shells.
if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
        umask 002
else
        umask 022
fi

這里就說明了問題,linux系統中默認的umask為022,與我們的777 &運算之后,就變成了 755,這就是原因所在了。

解決辦法:

你可能會想到,我把這里的022 改為 000 不就可以了么?

當然可以,不過這里的設置直接影響到linux系統的默認權限設置,不僅僅是PHP的問題。所以不建議您這么做。
正確的做法應該是:

mkdir('test', 0777);
chmod('test', 0777);

先創建目錄,再使用chmod將權限修改為 777 ,這樣就達到我們的目的了。

 

最后,需要注意一點,權限值最好使用八進制表示,即“0”開頭,而且一定不要加引號

 

我就犯了一個錯,加了引號

chmod('test', '0777'); // 錯誤,不要加 引號('')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM