檢測檔案屬性函數

我們來舉一個國內非常有名的軟體,discuz的安裝流程截圖給大家看:
        QQ截图20161009105100.png                  

我們來學習下面的一批函數。然後,我們來透過一個例子進行學習。

bool file_exists ( $指定檔案名稱或檔案路徑)

功能:檔案是否存在。


bool is_readable ( $指定檔案名稱或檔案路徑)

功能:檔案是否可讀取


bool is_writeable ( $指定檔案名稱或檔案路徑)

功能:檔案是否可寫入


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 '是一个文件&nbsp;&nbsp;&nbsp;&nbsp;';
    }else if(is_dir($v)){
        echo '是一个文件夹&nbsp;&nbsp;&nbsp;&nbsp;';
    }
 
    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某個軟體安裝過程當中的安裝檢測。

也就是我們上面思路的實作。

繼續學習
||
<?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 '不能进行安装'; } ?>