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