php檢測(cè)文件屬性函數(shù)
有些同學(xué)特別好奇,檢測(cè)文件屬性用在什么地方。檢測(cè)文件屬性能用到的地方太多了。
我們來(lái)舉例子:
1.我們?cè)谧鲕浖惭b的時(shí)候,大家會(huì)發(fā)現(xiàn)如果文件存在了,就跳轉(zhuǎn)到了其他的地方。
2.如果在安裝的過(guò)程當(dāng)中,某些文件沒(méi)有寫(xiě)入權(quán)限,就不讓進(jìn)行安裝。
我們來(lái)舉一個(gè)國(guó)內(nèi)非常出名的軟件,discuz的安裝過(guò)程截圖給大家看看:
上面的例子,就是典型的文件檢測(cè)的用法。
我們來(lái)學(xué)習(xí)一下下面的一批函數(shù)。然后,我們來(lái)通過(guò)一個(gè)例子進(jìn)行學(xué)習(xí)。
bool file_exists ( $指定文件名或者文件路徑)
功能:文件是否存在。
bool is_readable ( $指定文件名或者文件路徑)
功能:文件是否可讀
bool is_writeable ( $指定文件名或者文件路徑)
功能:文件是否可寫(xiě)
bool is_executable ( $指定文件名或者文件路徑)
功能:文件是否可執(zhí)行
bool is_file ( $指定文件名或者文件路徑)
功能:是否是文件
bool is_dir ( $指定文件名或者文件路徑)
功能:是否是目錄
void clearstatcache ( void )
功能:清楚文件的狀態(tài)緩存
上面的功能一看就清楚了。那實(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)限的數(shù)組
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í)現(xiàn)。