rmdir

関数の概要

PHPの rmdir 関数は、指定した空のディレクトリを削除するための関数です。ファイルが存在しないか空のフォルダのみを対象としており、中にファイルやフォルダがある場合は削除できません。サーバー上で不要になった空フォルダを整理したい時に便利です。

パラメータの説明

  • dirname(必須):削除したいディレクトリのパスを文字列で指定します。絶対パスまたは相対パスが使用可能です。

戻り値

削除に成功すると true を返し、失敗すると false を返します。削除に失敗する主な理由は、指定したディレクトリが存在しない、空ではない、または権限がない場合です。

使用例

基本的な使い方

<?php
$dir = 'testdir';

if (rmdir($dir)) {
    echo "ディレクトリ '{$dir}' を削除しました。";
} else {
    echo "ディレクトリ '{$dir}' の削除に失敗しました。";
}
?>

この例では、”testdir” という名前の空ディレクトリを削除します。削除に成功すると成功メッセージを表示し、失敗した場合はエラーメッセージを表示します。

存在チェックをしてから削除する方法

<?php
$dir = 'sampledir';

if (is_dir($dir)) {
    if (rmdir($dir)) {
        echo "ディレクトリ '{$dir}' を削除しました。";
    } else {
        echo "ディレクトリ '{$dir}' の削除に失敗しました。中身が空か権限を確認してください。";
    }
} else {
    echo "ディレクトリ '{$dir}' は存在しません。";
}
?>

まずディレクトリが存在するかどうかを is_dir() 関数で確認し、存在すれば削除を試みる安全な例です。

再帰的に空ディレクトリを削除する(簡易版)

<?php
function deleteEmptyDir($dir) {
    foreach (scandir($dir) as $item) {
        if ($item === '.' || $item === '..') continue;
        $path = $dir . DIRECTORY_SEPARATOR . $item;
        if (is_dir($path)) {
            // サブディレクトリを再帰的にチェック
            deleteEmptyDir($path);
        }
    }
    // 空になったディレクトリを削除
    if (@rmdir($dir)) {
        echo "空ディレクトリ '{$dir}' を削除しました。<br>";
    }
}

// 使用例
deleteEmptyDir('myfolder');
?>

このサンプルは、指定したディレクトリ以下の空のサブディレクトリを再帰的に探し、空になれば削除します。すべての階層の空ディレクトリをクリーンアップできます。

関連する関数

  • is_dir() – 指定したパスがディレクトリかどうかを判別する
  • scandir() – ディレクトリ内のファイルやフォルダの一覧を取り出す
  • unlink() – ファイルを削除する
  • mkdir() – 新しいディレクトリを作成する

まとめ

PHPの rmdir 関数は、空のディレクトリを削除するシンプルな関数です。ディレクトリが空であることやパーミッションに注意して使用すれば、ファイル管理やクリーンアップ処理に役立ちます。空ではないディレクトリを削除したい場合は、 unlink() でファイルを削除してから rmdir() を使うか、再帰的に処理を行う関数を自作すると良いでしょう。