読者です 読者をやめる 読者になる 読者になる

phpで特定のディレクトリ配下のパーミッションを再帰的に変更する

php
// 出力バッファをクリアする  
ob_end_flush();  
ob_start('mb_output_handler');

// 検索対象の基点となるディレクトリ  
$base = "/path/to/parent/dir";  
$dir  = "target";

print(  "**start " . date("Y-m-d H:i:s"). "<br>");  
traceDir($base , $dir);  
print(  "**end " . date("Y-m-d H:i:s"). "<br>");

function traceDir( $base, $dir ) {  
    $path = "{$base}/{$dir}";  
    $dh  = opendir( $path );

    while (false !== ($filename = readdir($dh))) {  
        if( $filename == "." || $filename == ".." )  
            continue;

        // ここでパーミッションを変えている。  
        //  別に其れ以外の処理でも可能。  
        //  ディレクトリとファイルで処理を変えたいならもう少し後ろに  
        $ret = chmod($file, 0777);  
        if($ret) {  
            print( "Success");  
        }  
        else {  
            print(  "Error");  
        }  
        print(  "\t");

        if( is_dir( $file ) ) {  
            // ディレクトリの場合  
            traceDir( $path , $filename );  
            print(  "[D] {$file}<br>");  
        }  
        else {  
            // ファイルの場合  
            $ret = chmod($file, 0777);  
            print(  "[F] {$file} <br>");

            flush();  
            ob_end_flush();  
            ob_start();  
        }  
    }  
}