php中判斷文件空目錄是否有讀寫(xiě)權(quán)限的函數(shù)代碼
更新時(shí)間:2012年08月07日 23:08:23 作者:
有時(shí)候我們需要判斷是否對(duì)目錄有讀寫(xiě)權(quán)限就需要下面的代碼,需要的朋友的可以參考下
is_writable用來(lái)處理,記住 PHP 也許只能以運(yùn)行 webserver 的用戶名(通常為 \'nobody\')來(lái)訪問(wèn)文件。不計(jì)入安全模式的限制。
Example #1 is_writable() 例子
<?php
$filename = 'test.txt';
if (is_writable($filename)) {
echo 'The file is writable';
} else {
echo 'The file is not writable';
}
?>
上面的函數(shù)有一個(gè)問(wèn)題就是filename 必需。規(guī)定要檢查的文件 ,必須是文件啊,目錄不可判斷,下面我們來(lái)判斷空目錄。
實(shí)例1
該功能非常常用,特別在一些需要生成靜態(tài)文件的項(xiàng)目中,一個(gè)目錄是否可以,關(guān)乎到是否對(duì)該目錄有創(chuàng)建文件刪除文件的權(quán)限
/*
問(wèn)題出現(xiàn):如何檢查一個(gè)目錄是否可寫(xiě),如何目錄下還有目錄和文件,那么都要檢查
思路:
(1)首先先寫(xiě)出檢查空目錄是否可寫(xiě)的算法:
在該目錄中生成一個(gè)文件,如果不能生成,表明該目錄沒(méi)有寫(xiě)的權(quán)限
(2)使用遞歸的辦法來(lái)進(jìn)行檢查
代碼實(shí)現(xiàn):
*/
set_time_limit(1000);
function check_dir_iswritable($dir_path){
$dir_path=str_replace('\','/',$dir_path);
$is_writale=1;
if(!is_dir($dir_path)){
$is_writale=0;
return $is_writale;
}else{
$file_hd=@fopen($dir_path.'/test.txt','w');
if(!$file_hd){
@fclose($file_hd);
@unlink($dir_path.'/test.txt');
$is_writale=0;
return $is_writale;
}
$dir_hd=opendir($dir_path);
while(false!==($file=readdir($dir_hd))){
if ($file != "." && $file != "..") {
if(is_file($dir_path.'/'.$file)){
//文件不可寫(xiě),直接返回
if(!is_writable($dir_path.'/'.$file)){
return 0;
}
}else{
$file_hd2=@fopen($dir_path.'/'.$file.'/test.txt','w');
if(!$file_hd2){
@fclose($file_hd2);
@unlink($dir_path.'/'.$file.'/test.txt');
$is_writale=0;
return $is_writale;
}
//遞歸
$is_writale=check_dir_iswritable($dir_path.'/'.$file);
}
}
}
}
return $is_writale;
}
上面實(shí)例主要是fopen去在目錄創(chuàng)建文件或在文件中寫(xiě)內(nèi)容,這樣就可以判斷目錄的讀寫(xiě)權(quán)限了。
Example #1 is_writable() 例子
復(fù)制代碼 代碼如下:
<?php
$filename = 'test.txt';
if (is_writable($filename)) {
echo 'The file is writable';
} else {
echo 'The file is not writable';
}
?>
上面的函數(shù)有一個(gè)問(wèn)題就是filename 必需。規(guī)定要檢查的文件 ,必須是文件啊,目錄不可判斷,下面我們來(lái)判斷空目錄。
實(shí)例1
該功能非常常用,特別在一些需要生成靜態(tài)文件的項(xiàng)目中,一個(gè)目錄是否可以,關(guān)乎到是否對(duì)該目錄有創(chuàng)建文件刪除文件的權(quán)限
復(fù)制代碼 代碼如下:
/*
問(wèn)題出現(xiàn):如何檢查一個(gè)目錄是否可寫(xiě),如何目錄下還有目錄和文件,那么都要檢查
思路:
(1)首先先寫(xiě)出檢查空目錄是否可寫(xiě)的算法:
在該目錄中生成一個(gè)文件,如果不能生成,表明該目錄沒(méi)有寫(xiě)的權(quán)限
(2)使用遞歸的辦法來(lái)進(jìn)行檢查
代碼實(shí)現(xiàn):
*/
set_time_limit(1000);
function check_dir_iswritable($dir_path){
$dir_path=str_replace('\','/',$dir_path);
$is_writale=1;
if(!is_dir($dir_path)){
$is_writale=0;
return $is_writale;
}else{
$file_hd=@fopen($dir_path.'/test.txt','w');
if(!$file_hd){
@fclose($file_hd);
@unlink($dir_path.'/test.txt');
$is_writale=0;
return $is_writale;
}
$dir_hd=opendir($dir_path);
while(false!==($file=readdir($dir_hd))){
if ($file != "." && $file != "..") {
if(is_file($dir_path.'/'.$file)){
//文件不可寫(xiě),直接返回
if(!is_writable($dir_path.'/'.$file)){
return 0;
}
}else{
$file_hd2=@fopen($dir_path.'/'.$file.'/test.txt','w');
if(!$file_hd2){
@fclose($file_hd2);
@unlink($dir_path.'/'.$file.'/test.txt');
$is_writale=0;
return $is_writale;
}
//遞歸
$is_writale=check_dir_iswritable($dir_path.'/'.$file);
}
}
}
}
return $is_writale;
}
上面實(shí)例主要是fopen去在目錄創(chuàng)建文件或在文件中寫(xiě)內(nèi)容,這樣就可以判斷目錄的讀寫(xiě)權(quán)限了。
您可能感興趣的文章:
- php中目錄操作opendir()、readdir()及scandir()用法示例
- 使用PHP函數(shù)scandir排除特定目錄
- PHP獲取當(dāng)前文件所在目錄 getcwd()函數(shù)
- php文件夾與文件目錄操作函數(shù)介紹
- PHP解析目錄路徑的3個(gè)函數(shù)總結(jié)
- PHP使用glob函數(shù)遍歷目錄或文件夾的方法
- php file_exists 檢查文件或目錄是否存在的函數(shù)
- PHP遍歷目錄函數(shù)opendir()、readdir()、closedir()、rewinddir()總結(jié)
- PHP刪除非空目錄的函數(shù)代碼小結(jié)
- PHP目錄函數(shù)實(shí)現(xiàn)創(chuàng)建、讀取目錄教程實(shí)例
- php使用scandir()函數(shù)掃描指定目錄下所有文件示例
相關(guān)文章
PHP計(jì)算當(dāng)前坐標(biāo)3公里內(nèi)4個(gè)角落的最大最小經(jīng)緯度實(shí)例
這篇文章主要介紹了PHP計(jì)算當(dāng)前坐標(biāo)3公里內(nèi)4個(gè)角落的最大最小經(jīng)緯度的方法,涉及PHP數(shù)學(xué)運(yùn)算的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-02-02
php基于curl實(shí)現(xiàn)的股票信息查詢類實(shí)例
這篇文章主要介紹了php基于curl實(shí)現(xiàn)的股票信息查詢類,結(jié)合完整實(shí)例形式分析了php使用curl調(diào)用API接口實(shí)現(xiàn)股票信息查詢功能的相關(guān)操作技巧,需要的朋友可以參考下2016-11-11
PHP 防注入函數(shù)(格式化數(shù)據(jù))
下面的函數(shù)通過(guò)格式化數(shù)據(jù)的方法實(shí)現(xiàn)數(shù)據(jù)的addslashes,不過(guò)也建議大家參考下discuz的防注入函數(shù)。2011-08-08
PHP如何刪除關(guān)聯(lián)數(shù)組中鍵值
在本篇文章里小編給大家整理的是一篇關(guān)于PHP刪除關(guān)聯(lián)數(shù)組中鍵值的方法,有需要的朋友們可以學(xué)習(xí)參考下。2021-08-08

