PHP

PHPでディレクトリを削除

More than 1 year has passed since last update.

scandirやopendirを使う方法等もありますが、globが見易そうでしたのでglobを使って行う方法です。

フレームワーク側に実装されていることもあるので確認することをお勧めします。

/**
 * 指定したディレクトリを削除する
 *
 * @param string $directory_path
 * @return boolean
 */
public function remove_directory(string $directory_path): bool
{
    if ( ! is_dir($directory_path))
    {
        return false;
    }

    foreach (glob($directory_path . '/{*,.[!.]*,..?*}', GLOB_BRACE) as $path)// .と..以外の隠しファイルも対象とする
    {
        if (is_file($path))
        {
            if ( ! unlink($path))
            {
                return false;
            }
        }
        elseif (is_dir($path))
        {
            if ($this->remove_directory($path) === false)
            {
                return false;
            }
        }
    }

    return rmdir($directory_path);
}

globはファイルを検索する際に重宝します。

$txt_file_list = glob('document/*.txt');

http://php.net/manual/ja/function.glob.php

exec()でrmコマンドを使った方がワンライナーで実現できるので楽だと思います。コピーに関してもcpコマンドを使った方が同様に楽だと思います。

# 削除
rm -rf name

# コピー
cp -arf source dest

http://php.net/manual/ja/function.exec.php