php中判斷文件空目錄是否有讀寫權(quán)限的函數(shù)代碼
更新時間:2012年08月07日 23:08:23 作者:
有時候我們需要判斷是否對目錄有讀寫權(quán)限就需要下面的代碼,需要的朋友的可以參考下
is_writable用來處理,記住 PHP 也許只能以運行 webserver 的用戶名(通常為 \'nobody\')來訪問文件。不計入安全模式的限制。
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ù)有一個問題就是filename 必需。規(guī)定要檢查的文件 ,必須是文件啊,目錄不可判斷,下面我們來判斷空目錄。
實例1
該功能非常常用,特別在一些需要生成靜態(tài)文件的項目中,一個目錄是否可以,關(guān)乎到是否對該目錄有創(chuàng)建文件刪除文件的權(quán)限
/*
問題出現(xiàn):如何檢查一個目錄是否可寫,如何目錄下還有目錄和文件,那么都要檢查
思路:
(1)首先先寫出檢查空目錄是否可寫的算法:
在該目錄中生成一個文件,如果不能生成,表明該目錄沒有寫的權(quán)限
(2)使用遞歸的辦法來進(jìn)行檢查
代碼實現(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)){
//文件不可寫,直接返回
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;
}
上面實例主要是fopen去在目錄創(chuàng)建文件或在文件中寫內(nèi)容,這樣就可以判斷目錄的讀寫權(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ù)有一個問題就是filename 必需。規(guī)定要檢查的文件 ,必須是文件啊,目錄不可判斷,下面我們來判斷空目錄。
實例1
該功能非常常用,特別在一些需要生成靜態(tài)文件的項目中,一個目錄是否可以,關(guān)乎到是否對該目錄有創(chuàng)建文件刪除文件的權(quán)限
復(fù)制代碼 代碼如下:
/*
問題出現(xiàn):如何檢查一個目錄是否可寫,如何目錄下還有目錄和文件,那么都要檢查
思路:
(1)首先先寫出檢查空目錄是否可寫的算法:
在該目錄中生成一個文件,如果不能生成,表明該目錄沒有寫的權(quán)限
(2)使用遞歸的辦法來進(jìn)行檢查
代碼實現(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)){
//文件不可寫,直接返回
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;
}
上面實例主要是fopen去在目錄創(chuàng)建文件或在文件中寫內(nèi)容,這樣就可以判斷目錄的讀寫權(quán)限了。
您可能感興趣的文章:
- php中目錄操作opendir()、readdir()及scandir()用法示例
- 使用PHP函數(shù)scandir排除特定目錄
- PHP獲取當(dāng)前文件所在目錄 getcwd()函數(shù)
- php文件夾與文件目錄操作函數(shù)介紹
- PHP解析目錄路徑的3個函數(shù)總結(jié)
- PHP使用glob函數(shù)遍歷目錄或文件夾的方法
- php file_exists 檢查文件或目錄是否存在的函數(shù)
- PHP遍歷目錄函數(shù)opendir()、readdir()、closedir()、rewinddir()總結(jié)
- PHP刪除非空目錄的函數(shù)代碼小結(jié)
- PHP目錄函數(shù)實現(xiàn)創(chuàng)建、讀取目錄教程實例
- php使用scandir()函數(shù)掃描指定目錄下所有文件示例
相關(guān)文章
PHP中十六進(jìn)制顏色與RGB顏色值互轉(zhuǎn)的方法
今天小編就為大家分享一篇關(guān)于PHP中十六進(jìn)制顏色與RGB顏色值互轉(zhuǎn)的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03