㈠ 為什麼php沒有mkdir等方法的執行許可權
1、當前運行php的用戶,沒有在目標目錄使用mkdir的許可權;
2、目標目錄的上一級目錄不存在,可用 mkdir("/path/to/my/dir", 0700, true);遞歸建立;
3、php.ini中禁用了mkdir函數,檢查disable_function設置;
4、php處於安全模式,目錄超過限制目錄,檢查opendir設置;
㈡ php中mkdir()函數的許可權問題分析
問題描述:
使用以下php代碼創建了一個目錄,期望目錄的許可權是0777,實際結果是0755
mkdir('./aa/',0777);
分析與測試結果:
1.mkdir()函數指定的目錄許可權只能小於等於系統umask設定的默認許可權。
如linux默認的umask一般0022,
即創建目錄的默認許可權是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/
把系統默認許可權改為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()函數不受系統umask影響,可以設置比系統默認許可權大的許可權。
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.系統的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/
總結:
php若要創建一個有讀寫許可權的目錄,最好使用以下代碼,不要直接使用mkdir函數指定許可權,以避免系統umask的影響
mkdir('./xw/');
chmod('./xw/',0777);
㈢ php 中的mkdir問題
file_exist()函數用來判斷文件或者文件夾是否存在,存在返回true,不存在返回false
mkdir()創建一個指定的文件目錄,成功返回true,失敗返回false
這段代碼的意思是,首先判斷$destination_folder目錄是否存在,如果不存在,則創建該目錄