php中判斷文件空目錄是否有讀寫權(quán)限的函數(shù)代碼
更新時(shí)間:2012年08月07日 23:08:23 作者:
有時(shí)候我們需要判斷是否對(duì)目錄有讀寫權(quán)限就需要下面的代碼,需要的朋友的可以參考下
is_writable用來處理,記住 PHP 也許只能以運(yùn)行 webserver 的用戶名(通常為 \'nobody\')來訪問文件。不計(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è)問題就是filename 必需。規(guī)定要檢查的文件 ,必須是文件啊,目錄不可判斷,下面我們來判斷空目錄。
實(shí)例1
該功能非常常用,特別在一些需要生成靜態(tài)文件的項(xiàng)目中,一個(gè)目錄是否可以,關(guān)乎到是否對(duì)該目錄有創(chuàng)建文件刪除文件的權(quán)限
/*
問題出現(xiàn):如何檢查一個(gè)目錄是否可寫,如何目錄下還有目錄和文件,那么都要檢查
思路:
(1)首先先寫出檢查空目錄是否可寫的算法:
在該目錄中生成一個(gè)文件,如果不能生成,表明該目錄沒有寫的權(quán)限
(2)使用遞歸的辦法來進(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)){
//文件不可寫,直接返回
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)建文件或在文件中寫內(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ù)有一個(gè)問題就是filename 必需。規(guī)定要檢查的文件 ,必須是文件啊,目錄不可判斷,下面我們來判斷空目錄。
實(shí)例1
該功能非常常用,特別在一些需要生成靜態(tài)文件的項(xiàng)目中,一個(gè)目錄是否可以,關(guān)乎到是否對(duì)該目錄有創(chuàng)建文件刪除文件的權(quán)限
復(fù)制代碼 代碼如下:
/*
問題出現(xiàn):如何檢查一個(gè)目錄是否可寫,如何目錄下還有目錄和文件,那么都要檢查
思路:
(1)首先先寫出檢查空目錄是否可寫的算法:
在該目錄中生成一個(gè)文件,如果不能生成,表明該目錄沒有寫的權(quán)限
(2)使用遞歸的辦法來進(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)){
//文件不可寫,直接返回
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)建文件或在文件中寫內(nèi)容,這樣就可以判斷目錄的讀寫權(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使用imap_open實(shí)現(xiàn)讀取QQ郵箱
這篇文章主要為大家詳細(xì)介紹了PHP如何使用imap_open實(shí)現(xiàn)讀取QQ郵箱功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02PHP中十六進(jìn)制顏色與RGB顏色值互轉(zhuǎn)的方法
今天小編就為大家分享一篇關(guān)于PHP中十六進(jìn)制顏色與RGB顏色值互轉(zhuǎn)的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03