① php如何創建文件夾(mkdir的用法,mkdir的語法)
先我抄一段手冊上的有關mkdir的描述,如下:說明bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] ) 嘗試新建一個由 pathname 指定的目錄。 注意也許想用八進制數指定模式,也就是說該數應以零打頭。模式也會被當前的 umask 修改,可以用 umask() 來改變。 注意: mode 在 Windows 下被忽略。自 PHP 4.2.0 起成為可選項。 默認的 mode 是 0777,意味著最大可能的訪問權。有關 mode 的更多信息請閱讀 chmod() 頁面。 例1. mkdir() 例子<?php mkdir("/path/to/my/dir", 0700); > 如果成功則返回 TRUE,失敗則返回 FALSE。 注意: 自 PHP 5.0.0 rmdir() 也可用於某些 URL 封裝協議。參見附錄N 的列表看看 rmdir() 支持哪些 URL 封裝協議。 注意: 對 context 的支持是 PHP 5.0.0 添加的。有關 context 的說明見參考CLX, Stream Functions。注意: recursive 參數是 PHP 5.0.0 添加的。 注意: 當安全模式被激活時,PHP 將檢查被操作的目錄是否和正在執行的腳本有相同的 UID(所有者)。以上是PHP5手冊上的描述信息,即你可以這樣:mkdir('./test',0777)就能創建一個文件夾了。但是如何遞歸創建多級目錄呢?其方式有: 1 PHP5 下創建目錄函數 mkdir 增加了一個新的參數 recursive ,通過設置 recursive 為 true 可以實現遞歸創建目錄的目的,但是對PHP4就不行了。 2 自己寫一個遞歸創建多級目錄。這里,我對第二種方式作一點說明,也有兩種方式,如下:第一種(用mkdirs來產生多級父級)function mkdirs($dir, $mode = 0777) { if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE; if (!mkdirs(dirname($dir), $mode)) return FALSE; return @mkdir($dir, $mode); }說明: 1 首先 簡單說一下mkdir()與mkdirs()的區別,以及,is_dir和dirname(): mkdir() 只能在已經存在的目錄中創建創建文件夾(即父級必須有才行)。 mkdirs() 可以在不存在的目錄中創建文件夾。諸如:a//b,既可以創建多級目錄。 dirname()是返迴路徑中的目錄部分。 is_dir()用於判斷給出的文件名是否是一個有效的目錄 2 大致流程為:(1) 先用is_dir判斷是否已是一個文件夾,如果是則返回TRUE。如沒有(或者不是文件夾),則試著創建它,當然有可以父級不存在,那mkdir直接就創不成功,但也為不報錯,所以就用@來抑止報非致命錯誤。 (2)如果傳參數都不滿足條件,那麼就進入第二個if語句,先是取得路徑中的目錄部分,當然有可能是不存在的多級父級,所以用了mkdirs()來先創建父級,如果成功(不成功返回FALSE),那麼再用mkdir來創建最終的目錄了。好了,以上就是第一種方案。
② 關於php遞歸函數創建級聯目錄的困惑
mkdir1剛進去就是判斷$dir存不存在,a/b/c/d/e說白了就是判斷有沒有e文件夾
如果沒有 繼續dirname($dir) 判斷a/b/c/d路徑的d文件夾有沒有
如果沒有 繼續dirname($dir) 判斷a/b/c路徑的c文件夾有沒有
依此類推直到
dirname($dir) 判斷a路徑的時候 不存在執行當前遞歸層的mkdir($dir) 創建a
存在則return,然後執行當前遞歸層上一級的mkdir($dir) 創建a/b
之後繼續上一級的mkdir($dir) 創建a/b/c
直到創建完a/b/c/d/e 遞歸結束
③ php 中的mkdir問題
file_exist()函數用來判斷文件或者文件夾是否存在,存在返回true,不存在返回false
mkdir()創建一個指定的文件目錄,成功返回true,失敗返回false
這段代碼的意思是,首先判斷$destination_folder目錄是否存在,如果不存在,則創建該目錄
④ php創建目錄的方法
mkdir
(PHP 4, PHP 5, PHP 7)
mkdir — 新建目錄
1.說明
mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = FALSE [, resource $context ]]] ) : bool
嘗試新建一個由 pathname 指定的目錄。
2.參數
pathname
目錄的路徑。
mode
默認的 mode 是 0777,意味著最大可能的訪問權。有關 mode 的更多信息請閱讀 chmod() 頁面。
Note:
mode 在 Windows 下被忽略。
注意也許想用八進制數指定模式,也就是說該數應以零打頭。模式也會被當前的 umask 修改,可以用 umask() 來改變。
recursive
允許遞歸創建由 pathname 所指定的多級嵌套目錄。
context
Note: 在 PHP 5.0.0 中增加了對上下文(Context)的支持。有關上下文(Context)的說明參見 Streams。
3.返回值
成功時返回 TRUE, 或者在失敗時返回 FALSE。
4.範例如下圖
5.錯誤/異常
目錄已存在時,產生 E_WARNING錯誤。
如果因為許可權問題無法創建目錄,導致 E_WARNING錯誤。
⑤ 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網站根目錄下建立自己想要的目錄
不建議這么做,首先如果這么做的話,你的用戶一多,就會在根目錄下生成太多的子目錄,影響FTP管理。建議你可以用user1_文件名 的方式保存上傳的文件。也可以用日期歸類來生成目錄。