在之前的文章《php文件操作之逐行讀取文件》中,我們介紹了PHP進(jìn)行逐行讀取文件的兩種方法(fgets()和fgetss()函數(shù))。下面本篇文章給大家介紹一下如何使用PHP檢查文件是否可讀、可寫、可執(zhí)行。
在進(jìn)行文件讀寫等操作時,需要先檢查一下該文件是否可以讀寫或執(zhí)行,即文件是否可讀、可寫、可執(zhí)行的權(quán)限。那么如何檢查呢?今天我們就來給大家介紹一下檢查方法。
我們有一個名為“test.txt”的文本文件,使用chmod()函數(shù)來設(shè)置權(quán)限:
<?php chmod("test.txt", 0400); ?>
上面的代碼可設(shè)置test.txt文件權(quán)限為:所有者可讀,其他人無權(quán)限。
下面我們來看看如何檢查文件是否可讀、可寫、可執(zhí)行的方法。
1、使用is_readable()函數(shù)檢查文件是否可讀
is_readable()函數(shù)可檢查指定的文件是否可讀;該函數(shù)只接受一個參數(shù)$filename
,用來指定需要檢查的文件。
下面通過代碼示例來看看:
<?php header("Content-type:text/html;charset=utf-8"); $file = "test.txt"; if(is_readable($file)) { echo ("$file 可讀"); } else { echo ("$file 不可讀"); } ?>
如果$filename
文件存在且可讀取數(shù)據(jù),則返回 TRUE,否則返回 FALSE。因此輸出結(jié)果為:
test.txt 可讀
2、使用is_writable()函數(shù)檢查文件是否可寫
is_writable()函數(shù)可檢查指定的文件是否可寫。
該函數(shù)同樣接受一個參數(shù)$filename
,用來指定需要檢查的文件;如果$filename
文件存在且可讀取數(shù)據(jù),則返回 TRUE,否則返回 FALSE。
下面通過代碼示例來看看:
<?php header("Content-type:text/html;charset=utf-8"); $file = "test.txt"; if(is_writable($file)) { echo ("$file 可寫"); } else { echo ("$file 不可寫"); } ?>
輸出結(jié)果:
test.txt 不可讀
3、使用is_executable()函數(shù)檢查文件是否執(zhí)行
is_executable()函數(shù)可檢查指定的文件是否可執(zhí)行;該函數(shù)也接受一個參數(shù)$filename
。
<?php header("Content-type:text/html;charset=utf-8"); $file = "test.txt"; if(is_executable($file)) { echo ("$file 可執(zhí)行"); } else { echo ("$file 不可執(zhí)行"); } ?>
如果$filename文件存在且可讀取數(shù)據(jù),則返回 TRUE,否則返回 FALSE。因此輸出結(jié)果為:
test.txt 不可執(zhí)行
說明:
is_readable()、is_writable()和is_executable()函數(shù)的結(jié)果會被緩存,需要使用clearstatcache()函數(shù)來清除緩存。
在程序末尾加上下面一句代碼即可清除緩存:
clearstatcache();
好了就說到這里了,有其他想知道的,可以點(diǎn)擊這個哦?!?→PHP文件基礎(chǔ)操作
推薦:《PHP面試題大匯總(收藏)》《php視頻教程》