PHP中的递归chmod函数
文件权限很重要,尤其是如果要让用户代理查看文件时,尤其如此。如果该文件没有正确的权限,则将无法访问该文件,并且可能导致脚本失败。为了解决这个问题,您可能需要使用以下功能。它使用PHP函数chmod()设置权限,但是无论您在何处设置权限,它都会以递归方式进行操作。
function chmod_R($path, $filemode) { if ( !is_dir($path) ) { return chmod($path, $filemode); } $dh = opendir($path); while ( $file = readdir($dh) ) { if ( $file != '.' && $file != '..' ) { $fullpath = $path.'/'.$file; if( !is_dir($fullpath) ) { if ( !chmod($fullpath, $filemode) ){ return false; } } else { if ( !chmod_R($fullpath, $filemode) ) { return false; } } } } closedir($dh); if ( chmod($path, $filemode) ) { return true; } else { return false; } }
这对于某些创建或复制文件的脚本特别有用,因为可能会在没有正确权限的情况下创建这些文件。您可以通过为首选项提供一个目录和一个八进制值来调用此函数。请注意,八进制值很重要。如果要授予文件775的权限,则必须使用0775。以下是此函数的实际操作示例,已为该脚本提供了要从中运行脚本的当前目录。
chmod_R(dirname(__FILE__),0775);
此目录下的所有内容(包括脚本文件)都将设置为0775,这对于大多数用途来说是标准的。