PHP: 所有者apacheファイル(dir)をrootなしで権限変更!


ユーザー権限しかなくて、Laravelのフォルダを単純に削除しようとすると、
storage以下所有者apacheのフォルダが消せないんですよねー

PHPPermission変更かけてやると消せるんですが、ハマリポイントがあったんで備忘録です。

ディレクトリごと権限の変更

注:必ずブラウザから実行

chmod.php
<?php
function chmod_r($path) {
    $dir = new DirectoryIterator($path);
    foreach ($dir as $item) {
        if ($item->isDir() && !$item->isDot()) {
            //chomd()だとエラーがでたので。
            system('chmod 0777 ' . $item->getPathname());
            echo 'Dir : ' . $item->getPathname() . '<br>';
            //再帰的に変更
            chmod_r($item->getPathname());
        }
    }
}
//パーミッション変更したいフォルダをフルパス指定してください。
chmod_r('/var/www/html/laravel');
?>

こいつを実行できる場所(www以下等)においてブラウザから実行してください。
再帰的全フォルダのパーミッションが変更されていますので、rm -rf {フォルダ名} ですべてのapache所収者ディレクトリを消せるはずです!

追記:

ディレクトリごとではなく、1ファイルごとに権限の変更

注:ブラウザから実行

chmod_file.php
<?php
function chmodApacheFile($file) {
    if (file_exists($file)) {
        system('chmod 0777 ' . $file);
        echo 'file : ' . $file . '<br>';
    } else {
        echo 'ファイルが見つかりません';
    }
}
//ファイル名を適宜変更(フルパス)
chmodApacheFile('/path/filename.php');
?>

LGTMお願いします!
ストックのついでにお願いします!
モチベーションがあがります!