有些同學特別好奇,偵測檔案屬性用在什麼地方。檢測文件屬性能用到的地方太多了。
我們來舉例:
1.我們在做軟體安裝的時候,大家會發現如果檔案存在了,就跳到其他的地方了。
2.如果在安裝的過程當中,某些檔案沒有寫入權限,就不讓進行安裝。
我們來舉一個國內非常有名的軟體,discuz的安裝流程截圖給大家看看:
上面的例子,就是典型的檔案偵測的用法。
我們來學習下面的一批函數。然後,我們來透過一個例子進行學習。
bool file_exists ( $指定檔案名稱或檔案路徑)
功能:檔案是否存在。
bool is_readable ( $指定檔案名稱或檔案路徑)
功能:檔案是否可讀取
# bool is_writeable ( $
#
#
bool is_writeable ( $
bool) 指定檔案名或檔案路徑) 功能:檔案是否可寫入
bool is_executable ( $指定檔案名稱或檔案路徑) 功能:檔案是否可執行
bool is_file ( $指定檔名或檔案路徑) 功能:是否為檔案
#bool is_dir ( $指定檔案名稱或檔案路徑)
功能:是否為目錄void clearstatcache ( void )
卷口清楚了。那個實驗,我們就來寫這個最開始我們舉的這個例子。
我們來講第一個例子,檔案鎖。如果已經安裝了,存在安裝鎖就提示已安裝,否則就繼續安裝。
我們假設安裝介面的網址是:install.php,安裝的鎖定檔案是install.lock。我們就可以偵測install.lock檔案是否存在。
<?php if(file_exists('install.lock')){ echo '已安装,请不要再次进行安装'; exit; } ?>###我們接下來做一個檔案安裝偵測的實驗來偵測檔案或目錄是否有寫入或讀取權限。如果沒有則不能進行安裝。 ######處理這件事的想法如下:###### 1.定義一批需要偵測權限的陣列###
2.可以偵測是資料夾還是檔案
3.做一個標位變數,如果標置位元變數一旦為false則不顯示下一步的安裝
<?php //可以定义一批文件是否存在 $files = [ 'config.php', 'img/', 'uploads/', ]; //定义标志位变量 $flag = true; foreach($files as $v){ echo $v; //判断是文件还是文件夹 if(is_file($v)){ echo '是一个文件 '; }else if(is_dir($v)){ echo '是一个文件夹 '; } if(is_readable($v)){ echo ' 可读'; }else{ echo '<font color="red">不可读</font>'; } if(is_writeable($v)){ echo '可写'; }else{ echo '<font color="red">不可写</font>'; } echo '<br />'; } if($flag){ echo '<a href="step1">下一步</a>'; }else{ echo '不能进行安装'; } ?>
透過上面的例子,我們就做到了。實現PHP某個軟體安裝過程當中的安裝檢測。
也就是我們上面思路的實作。