is_writable is used to handle this, remember that PHP may only be able to access the file as the username running the webserver (usually 'nobody'). Does not count towards Safe Mode limits.
Example #1 is_writable() Example
The code is as follows
|
Copy code
|
||||
$filename = 'test.txt'; One problem with the above function is that filename is required. It is stipulated that the file to be checked must be a file, and the directory cannot be judged. Next, we will judge the empty directory.
|
The code is as follows | Copy code |
/* The question arises: How to check whether a directory is writable? If there are directories and files in the directory, then check them all Idea: (1) First, write down the algorithm for checking whether an empty directory is writable: Generate a file in the directory. If it cannot be generated, it means that the directory does not have write permission (2) Use recursive method to check Code implementation: */ 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)){ //The file cannot be written, return directly 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; } //Recursion $is_writale=check_dir_iswritable($dir_path.'/'.$file); } } } } return $is_writale; } The above example mainly uses fopen to create files in the directory or write content in the file, so that the read and write permissions of the directory can be determined. |