如何在PHP項(xiàng)目中利用mkdir實(shí)現(xiàn)一個(gè)文件夾創(chuàng)建功能-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何在PHP項(xiàng)目中利用mkdir實(shí)現(xiàn)一個(gè)文件夾創(chuàng)建功能,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)公司自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元藍(lán)田做網(wǎng)站,已為上家服務(wù),為藍(lán)田各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

說(shuō)明


bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )

嘗試新建一個(gè)由 pathname 指定的目錄。

注意也許想用八進(jìn)制數(shù)指定模式,也就是說(shuō)該數(shù)應(yīng)以零打頭。模式也會(huì)被當(dāng)前的 umask 修改,可以用 umask() 來(lái)改變。

注意: mode 在 Windows 下被忽略。自 PHP 4.2.0 起成為可選項(xiàng)。

默認(rèn)的 mode 是 0777,意味著較大可能的訪問(wèn)權(quán)。有關(guān) mode 的更多信息請(qǐng)閱讀 chmod() 頁(yè)面。

例 1. mkdir() 例子

<?php
mkdir("/path/to/my/dir", 0700);
?>


如果成功則返回 TRUE,失敗則返回 FALSE。


例 2. mkdir() 例子

$dir = iconv("UTF-8", "GBK", "public/log");
if (!file_exists($dir)){
	mkdir ($dir,0777,true);
	echo '創(chuàng)建文件夾log成功';
} else {
	echo '需創(chuàng)建的文件夾log已經(jīng)存在';
}

iconv方法是為了防止中文亂碼,保證可以創(chuàng)建識(shí)別中文目錄,不用iconv方法格式的話,將無(wú)法創(chuàng)建中文目錄


mkdir方法的第一個(gè)參數(shù)是要?jiǎng)?chuàng)建的目錄路徑,第二個(gè)參數(shù)是指創(chuàng)建目錄的權(quán)限,在windows系統(tǒng)下該參數(shù)會(huì)被忽略,第三個(gè)參數(shù)是指是否創(chuàng)建多級(jí)目錄,默認(rèn)為false
參考鏈接:/tupian/20230522/5991365.html 自 PHP 5.0.0 rmdir() 也可用于某些 URL 封裝協(xié)議。參見(jiàn)附錄 N 的列表看看 rmdir() 支持哪些 URL 封裝協(xié)議。

注意: 對(duì) context 的支持是 PHP 5.0.0 添加的。有關(guān) context 的說(shuō)明見(jiàn)參考 CLX, Stream Functions。

注意: recursive 參數(shù)是 PHP 5.0.0 添加的。

注意: 當(dāng)安全模式被激活時(shí),PHP 將檢查被操作的目錄是否和正在執(zhí)行的腳本有相同的 UID(所有者)。

以上是PHP5手冊(cè)上的描述信息,即你可以這樣:mkdir('./test',0777)就能創(chuàng)建一個(gè)文件夾了。但是如何遞歸創(chuàng)建多級(jí)目錄呢?
其方式有:

1 PHP5 下創(chuàng)建目錄函數(shù) mkdir 增加了一個(gè)新的參數(shù) recursive ,通過(guò)設(shè)置 recursive 為 true 可以實(shí)現(xiàn)遞歸創(chuàng)建目錄的目的,但是對(duì)PHP4就不行了。

2 自己寫(xiě)一個(gè)遞歸創(chuàng)建多級(jí)目錄。

這里,我對(duì)第二種方式作一點(diǎn)說(shuō)明,也有兩種方式,如下:

第一種(用mkdirs來(lái)產(chǎn)生多級(jí)父級(jí))

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);
}


說(shuō)明:


1 首先 簡(jiǎn)單說(shuō)一下mkdir()與mkdirs()的區(qū)別,以及,is_dir和dirname():


mkdir() 只能在已經(jīng)存在的目錄中創(chuàng)建創(chuàng)建文件夾(即父級(jí)必須有才行)。


mkdirs() 可以在不存在的目錄中創(chuàng)建文件夾。諸如:a//b,既可以創(chuàng)建多級(jí)目錄。


dirname() 是返回路徑中的目錄部分。


is_dir() 用于判斷給出的文件名是否是一個(gè)有效的目錄

2 大致流程為:

(1) 先用is_dir判斷是否已是一個(gè)文件夾,如果是則返回TRUE。如沒(méi)有(或者不是文件夾),則試著創(chuàng)建它,當(dāng)然有可以父級(jí)不存在,那mkdir直接就創(chuàng)不成功,但也為不報(bào)錯(cuò),所以就用@來(lái)抑止報(bào)非致命錯(cuò)誤。

(2)如果傳參數(shù)都不滿足條件,那么就進(jìn)入第二個(gè)if語(yǔ)句,先是取得路徑中的目錄部分,當(dāng)然有可能是不存在的多級(jí)父級(jí),所以用了mkdirs()來(lái)先創(chuàng)建父級(jí),如果成功(不成功返回FALSE),那么再用mkdir來(lái)創(chuàng)建最終的目錄了。
好了,以上就是第一種方案。

第二種(說(shuō)明:此方案是相當(dāng)?shù)木?jiǎn),那是相當(dāng)?shù)牟诲e(cuò)的方案,推薦使用它)

function create_folders($dir){
return is_dir($dir) or (create_folders(dirname($dir)) and mkdir($dir, 0777));
}


說(shuō)明: 1 大致流程: 得到路徑后,先判斷是否已是一個(gè)有效的文件目錄,如是則返回,結(jié)束程序。如果不是,(由于這里用了OR作先擇性的條件,即只要滿足其中一個(gè)條件就行),則遞歸再調(diào)用自身,并且傳入的路徑中,少一級(jí)目錄。這樣來(lái)先回到上級(jí)有的父級(jí)目錄中,再用mkdir來(lái)創(chuàng)建下一級(jí)的。

好了,以上就是用PHP來(lái)創(chuàng)建文件夾(以及多級(jí)文件夾)的方法。_

總結(jié):

1 用PHP5中自帶的mkdir 中的一個(gè)新的參數(shù) recursive ,通過(guò)設(shè)置 recursive 為 true 可以實(shí)現(xiàn)遞歸創(chuàng)建目錄的目的,但是對(duì)PHP4就不行了。

2 自己寫(xiě)的方法中,用mkdirs來(lái)創(chuàng)建多級(jí)父級(jí)目錄方式

3 仍然用mkdir很巧妙的來(lái)創(chuàng)建

上述就是小編為大家分享的如何在PHP項(xiàng)目中利用mkdir實(shí)現(xiàn)一個(gè)文件夾創(chuàng)建功能了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章名稱:如何在PHP項(xiàng)目中利用mkdir實(shí)現(xiàn)一個(gè)文件夾創(chuàng)建功能-創(chuàng)新互聯(lián)
鏈接分享:http://muchs.cn/article44/cdcohe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、手機(jī)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、域名注冊(cè)、網(wǎng)站營(yíng)銷、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)