/ Published in: PHP
A small function I made to chmod directories and files recursively, with different permissions.
Expand |
Embed | Plain Text
<? /** Chmods files and folders with different permissions. This is an all-PHP alternative to using: \n <tt>exec("find ".$path." -type f -exec chmod 644 {} \;");</tt> \n <tt>exec("find ".$path." -type d -exec chmod 755 {} \;");</tt> @author Jeppe Toustrup (tenzer at tenzer dot dk) @param $path An either relative or absolute path to a file or directory which should be processed. @param $filePerm The permissions any found files should get. @param $dirPerm The permissions any found folder should get. @return Returns TRUE if the path if found and FALSE if not. @warning The permission levels has to be entered in octal format, which normally means adding a zero ("0") in front of the permission level. \n More info at: http://php.net/chmod. */ function recursiveChmod ($path, $filePerm=0644, $dirPerm=0755) { // Check if the path exists return(false); } // See whether this is a file // Chmod the file with our given filepermissions // If this is a directory... // Then get an array of the contents $foldersAndFiles = scandir($path); // Remove "." and ".." from the list // Parse every result... foreach ($entries as $entry) { // And call this function again recursively, with the same permissions recursiveChmod($path."/".$entry, $filePerm, $dirPerm); } // When we are done with the contents of the directory, we chmod the directory itself } // Everything seemed to work out well, return true return(true); } ?>
Comments
Subscribe to comments
You need to login to post a comment.

Doesn't work.
It works perfectly, thanks ! Simple + Clean.
Perfect
It works, if the script is allowed to read the content of a directory. If not, it can not read and therefor change the permissions of a file/dir in it. I solved the problem by moving chmod before scandir (see http://snipplr.com/view/60573/recursive-chmod-in-php/). Also, I cleaned the snippet up a little bit.
so long. /m