php中mkdir()函數(shù)的權限問題分析
問題描述:
使用以下php代碼創(chuàng)建了一個目錄,期望目錄的權限是0777,實際結(jié)果是0755
mkdir('./aa/',0777);
分析與測試結(jié)果:
1.mkdir()函數(shù)指定的目錄權限只能小于等于系統(tǒng)umask設定的默認權限。
如linux默認的umask一般0022, 即創(chuàng)建目錄的默認權限是0755, 所以這時php mkdir('./aa/',0777) 得到目錄的權限是0755.
xw@xw-X201:~/Desktop/dd/aa$ umask
0022
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw1/',0755);"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/',0747);"
xw@xw-X201:~/Desktop/dd/aa$ ll
總用量 20
drwxrwxrwx 5 xw xw 4096 2012-06-01 11:58 ./
drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
drwxr-xr-x 2 xw xw 4096 2012-06-01 11:57 xw/
drwxr-xr-x 2 xw xw 4096 2012-06-01 11:58 xw1/
drwxr--r-x 2 xw xw 4096 2012-06-01 11:58 xw2/
把系統(tǒng)默認權限改為777,mkdir()可以指定更大權限了
xw@xw-X201:~/Desktop/dd/aa$ umask 000
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ ll
總用量 12
drwxrwxrwx 3 xw xw 4096 2012-06-01 12:08 ./
drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
drwxrwxrwx 2 xw xw 4096 2012-06-01 12:08 xw2/
2.chmod()函數(shù)不受系統(tǒng)umask影響,可以設置比系統(tǒng)默認權限大的權限。
xw@xw-X201:~/Desktop/dd/aa$ umask
0022
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw1/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/');"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw3/');chmod('./xw3/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ ll
總用量 20
drwxrwxrwx 5 xw xw 4096 2012-06-01 12:12 ./
drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
drwxr-xr-x 2 xw xw 4096 2012-06-01 12:11 xw1/
drwxr-xr-x 2 xw xw 4096 2012-06-01 12:11 xw2/
drwxrwxrwx 2 xw xw 4096 2012-06-01 12:12 xw3/
3.系統(tǒng)的mkdir命令可以設置大于默認值的權限。
xw@xw-X201:~/Desktop/dd/aa$ umask 0022 xw@xw-X201:~/Desktop/dd/aa$ mkdir -m0777 xw xw@xw-X201:~/Desktop/dd/aa$ ll 總用量 12 drwxrwxrwx 3 xw xw 4096 2012-06-01 12:18 ./ drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../ drwxrwxrwx 2 xw xw 4096 2012-06-01 12:18 xw/
總結(jié):
php若要創(chuàng)建一個有讀寫權限的目錄,最好使用以下代碼,不要直接使用mkdir函數(shù)指定權限,以避免系統(tǒng)umask的影響
mkdir('./xw/');
chmod('./xw/',0777);
相關文章
PHP下編碼轉(zhuǎn)換函數(shù)mb_convert_encoding與iconv的使用說明
mb_convert_encoding這個函數(shù)是用來轉(zhuǎn)換編碼的。原來一直對程序編碼這一概念不理解,不過現(xiàn)在好像有點開竅了。2009-12-12
PHP錯誤WARNING: SESSION_START() [FUNCTION.SESSION-START]解決方法
這篇文章主要介紹了PHP錯誤WARNING: SESSION_START() [FUNCTION.SESSION-START]解決方法,需要的朋友可以參考下2014-05-05
php curl 模擬登錄并獲取數(shù)據(jù)實例詳解
cURL 是一個功能強大的PHP庫,使用PHP的cURL庫可以簡單和有效地抓取網(wǎng)頁并采集內(nèi)容,設置cookie完成模擬登錄網(wǎng)頁,curl提供了豐富的函數(shù),開發(fā)者可以從PHP手冊中獲取更多關于cURL信息。本文以模擬登錄開源中國(oschina)為例,需要的朋友可以參考下2016-12-12
基于HBase Thrift接口的一些使用問題及相關注意事項的詳解
本篇文章是對HBase Thrift接口的一些使用問題及相關注意事項進行了詳細的分析介紹,需要的朋友參考下2013-06-06

