檢測文件屬性函數
我們來舉一個國內非常出名的軟件,discuz的安裝過程截圖給大家看看:
上面的例子,就是典型的文件檢測的用法。
我們來學習一下下面的一批函數。然后,我們來通過一個例子進行學習。
bool file_exists ( $指定文件名或者文件路徑)
功能:文件是否存在。
bool is_readable ( $指定文件名或者文件路徑)
功能:文件是否可讀
bool is_writeable ( $指定文件名或者文件路徑)
功能:文件是否可寫
bool is_executable ( $指定文件名或者文件路徑)
功能:文件是否可執(zhí)行
bool is_file ( $指定文件名或者文件路徑)
功能:是否是文件
bool is_dir ( $指定文件名或者文件路徑)
功能:是否是目錄
void clearstatcache ( void )
功能:清楚文件的狀態(tài)緩存
上面的功能一看就清楚了。那實驗,我們就來寫這個最開始我們舉的這個例子。
我們來講第一個例子,文件鎖。如果已經安裝了,存在安裝鎖就提示已安裝,否則就繼續(xù)安裝。
我們假設安裝界面的網址是: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某個軟件安裝過程當中的安裝檢測。
也就是我們上面思路的實現。