php专区

 首页 > php专区 > PHP高级 > 文件上传 > php中判断文件空目录是否有读写权限 - php文件操

php中判断文件空目录是否有读写权限 - php文件操

分享到:
【字体:
导读:
          is_writable用来处理,记住 PHP 也许只能以运行 webserver 的用户名(通常为 39;nobody 39;)来访问文件,不计入安全模式的限制。i...

php中判断文件空目录是否有读写权限

is_writable用来处理,记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件,不计入安全模式的限制。

is_writable() 例子,代码如下:

  1. $filename = 'test.txt'
  2. if (is_writable($filename)) { 
  3.   echo 'The file is writable'
  4. else { 
  5.   echo 'The file is not writable'
  6. ?> 

上面的函数有一个问题就是filename 必需,规定要检查的文件,必须是文件啊,目录不可判断,下面我们来判断空目录。

实例1,该功能非常常用,特别在一些需要生成静态文件的项目中,一个目录是否可以,关乎到是否对该目录有创建文件删除文件的权限.

问题出现:如何检查一个目录是否可写,如何目录下还有目录和文件,那么都要检查

思路:(1)首先先写出检查空目录是否可写的算法,在该目录中生成一个文件,如果不能生成,表明该目录没有写的权限(2)使用递归的办法来进行检查,代码如下:

  1. set_time_limit(1000); 
  2.   function check_dir_iswritable($dir_path){ 
  3.   $dir_path=str_replace('','/',$dir_path); 
  4.   $is_writale=1; 
  5.   if(!is_dir($dir_path)){ 
  6.     $is_writale=0; 
  7.     return $is_writale
  8.   }else
  9.    $file_hd=@fopen($dir_path.'/test.txt','w'); 
  10.    if(!$file_hd){ 
  11.     @fclose($file_hd); 
  12.     @unlink($dir_path.'/test.txt'); 
  13.     $is_writale=0; 
  14.     return $is_writale
  15.    } 
  16.    $dir_hd=opendir($dir_path); 
  17.    while(false!==($file=readdir($dir_hd))){ 
  18.     if ($file != "." && $file != "..") { 
  19.      if(is_file($dir_path.'/'.$file)){ 
  20.       //文件不可写,直接返回 
  21.       if(!is_writable($dir_path.'/'.$file)){ 
  22.        return 0; 
  23.       }  
  24.      }else
  25.       $file_hd2=@fopen($dir_path.'/'.$file.'/test.txt','w'); 
  26.       if(!$file_hd2){ 
  27.        @fclose($file_hd2); 
  28.        @unlink($dir_path.'/'.$file.'/test.txt'); 
  29.        $is_writale=0; 
  30.        return $is_writale
  31.       } 
  32.       //递归 
  33.       $is_writale=check_dir_iswritable($dir_path.'/'.$file); 
  34.      } 
  35.     } 
  36.    } 
  37.   } 
  38.   return $is_writale
  39.   } 

上面实例主要是fopen去在目录创建文件或在文件中写内容,这样就可以判断目录的读写权限了。

分享到:
PHP文件操作方法问答 - php文件操作
PHP文件操作方法问答 收集了一下php文件操作方面的问答,供大家学习参考。作方法问答 问:如何新建一个文件? 答: 1、使用fopen("要建立的文件名","参数"),参数可选w,w ,a,a 2、使用exec("echo '' > 要建立的文件名");这样是使用系统方式建立这个文件,你还可以使用touch这...
php中获取文件后缀名多种方法 - php文件...
php中获取文件后缀名多种方法 以前我都讲过了很多关于获取文件后缀名的方法,今天我们再次总结一下关于利用不同种函数来取得,有需要的朋友可以参考一下. 一,php explode函数,代码如下: $pic = 'abc.php';   $pics = explode('.' , $pic);  echo $nu...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……