檢測(cè)檔案屬性函數(shù)
我們來(lái)舉一個(gè)國(guó)內(nèi)非常有名的軟體,discuz的安裝流程截圖給大家看:
?? ? ? ? ? ? ? ? ? ? ? ? ?
我們來(lái)學(xué)習(xí)下面的一批函數(shù)。然後,我們來(lái)透過(guò)一個(gè)例子進(jìn)行學(xué)習(xí)。
bool file_exists ( $指定檔案名稱或檔案路徑)
功能:檔案是否存在。
bool is_readable ( $指定檔案名稱或檔案路徑)
bool is_writeable ( $指定檔案名稱或檔案路徑)
bool is_executable ( $指定檔案名稱或檔案路徑)
bool is_file ( $指定檔案名稱或檔案路徑)
bool is_dir ( $指定檔案名稱或檔案路徑)
void clearstatcache ( void )
上面的功能一看就清楚了。那個(gè)實(shí)驗(yàn),我們就來(lái)寫(xiě)這個(gè)最開(kāi)始我們舉的這個(gè)例子。
我們來(lái)講第一個(gè)例子,檔案鎖。如果已經(jīng)安裝了,存在安裝鎖就提示已安裝,否則就繼續(xù)安裝。
我們假設(shè)安裝介面的網(wǎng)址是:install.php,安裝的鎖定檔案是install.lock。我們就可以偵測(cè)install.lock檔案是否存在。
<?php if(file_exists('install.lock')){ echo '已安裝,請(qǐng)不要再次進(jìn)行安裝'; exit; } ?>
我們接下來(lái)做一個(gè)檔案安裝偵測(cè)的實(shí)驗(yàn)來(lái)偵測(cè)檔案或目錄是否有寫(xiě)入或讀取權(quán)限。如果沒(méi)有則不能進(jìn)行安裝。
處理這件事的想法如下:
##1.???? 定義一批需要偵測(cè)權(quán)限的陣列2.???? 可以偵測(cè)是資料夾還是檔案 #3.???? 做一個(gè)標(biāo)置位變量,如果標(biāo)置位變量一旦為false則不顯示下一步的安裝<?php //可以定義一批文件是否存在 $files = [ 'config.php', 'img/', 'uploads/', ]; //定義標(biāo)志位變量 $flag = true; foreach($files as $v){ echo $v; //判斷是文件還是文件夾 if(is_file($v)){ echo '是一個(gè)文件 '; }else if(is_dir($v)){ echo '是一個(gè)文件夾 '; } if(is_readable($v)){ echo ' 可讀'; }else{ echo '<font color="red">不可讀</font>'; } if(is_writeable($v)){ echo '可寫(xiě)'; }else{ echo '<font color="red">不可寫(xiě)</font>'; } echo '<br />'; } if($flag){ echo '<a href="step1">下一步</a>'; }else{ echo '不能進(jìn)行安裝'; } ?>透過(guò)上面的例子,我們就做到了。實(shí)現(xiàn)PHP某個(gè)軟體安裝過(guò)程當(dāng)中的安裝檢測(cè)。 也就是我們上面思路的實(shí)作。