- /*
- 问题出现: 如何检查一个目录是否可写, 如何目录下还有目录和文件, 那么都要检查
- 思路:
- (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;
- }
来源: https://www.php1.cn/detail/php-2078d7171b.html