| 
       is_writable用来处理,记住 PHP 也许只能以运行 webserver 的用户名(通常为 \'nobody\')来访问文件,不计入安全模式的限制。 
is_writable() 例子,代码如下: 
	
	- <?php 
 
	- $filename = 'test.txt'; 
 
	- if (is_writable($filename)) { 
 
	-   echo 'The file is writable'; 
 
	- } else { 
 
	-   echo 'The file is not writable'; 
 
	- } 
 
	- ?> 
 
	 
 
上面的函数有一个问题就是filename 必需,规定要检查的文件,必须是文件啊,目录不可判断,下面我们来判断空目录。 
实例1,该功能非常常用,特别在一些需要生成静态文件的项目中,一个目录是否可以,关乎到是否对该目录有创建文件删除文件的权限. 
问题出现:如何检查一个目录是否可写,如何目录下还有目录和文件,那么都要检查 
思路:(1)首先先写出检查空目录是否可写的算法,在该目录中生成一个文件,如果不能生成,表明该目录没有写的权限(2)使用递归的办法来进行检查,代码如下: 
	
	- 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去在目录创建文件或在文件中写内容,这样就可以判断目录的读写权限了。 
      
      (责任编辑:admin) |