rmdir

関数の概要

PHPのrmdir関数は、指定したディレクトリを削除するための関数です。空のディレクトリのみ削除可能で、ディレクトリ内にファイルや他のディレクトリがある場合は削除できません。Webアプリケーションで不要になったフォルダの管理や整理に使われます。

パラメータの説明

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

戻り値

ディレクトリの削除に成功すると true、失敗すると false を返します。失敗の原因は、ディレクトリが存在しない、空でない、または権限が不足している場合などが考えられます。

使用例

基本的な使い方

<?php
$dir = 'test_dir';

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

この例では、現在のディレクトリにある「test_dir」という空のフォルダを削除し、成功・失敗をメッセージで表示しています。

空でないディレクトリの削除を試みた場合

<?php
$dir = 'sample_dir';

if (rmdir($dir)) {
    echo "ディレクトリ '{$dir}' を削除しました。";
} else {
    echo "ディレクトリ '{$dir}' は空でないため削除できません。";
}
?>

rmdirは空でないディレクトリは削除できません。中身がある場合、このコードは削除失敗し、メッセージを表示します。

サブディレクトリも含めて再帰的に削除する関数の例

<?php
function deleteDirectory($dir) {
    if (!is_dir($dir)) {
        return false;
    }
    $items = scandir($dir);
    foreach ($items as $item) {
        if ($item === '.' || $item === '..') {
            continue;
        }
        $path = $dir . DIRECTORY_SEPARATOR . $item;
        if (is_dir($path)) {
            deleteDirectory($path);
        } else {
            unlink($path);
        }
    }
    return rmdir($dir);
}

// 使用例
$targetDir = 'my_folder';
if (deleteDirectory($targetDir)) {
    echo "ディレクトリ '{$targetDir}' とその中身を削除しました。";
} else {
    echo "削除に失敗しました。";
}
?>

空でないディレクトリも中身をすべて削除してからフォルダ自体を消したい場合は、再帰的にファイルとサブディレクトリを処理する関数を使います。

関連する関数

  • mkdir – 新しいディレクトリを作成する
  • unlink – ファイルを削除する
  • scandir – ディレクトリ内のファイル一覧を取得する
  • is_dir – 指定パスがディレクトリかどうか調べる

まとめ

PHPの rmdir 関数は、空のディレクトリを削除したいときに使います。ただし、空でないディレクトリは削除できないため、再帰的な処理で中身を予め削除する工夫が必要です。ファイル操作を行う際は、対象の存在確認や権限設定も重要です。正しく使いこなせば、ディレクトリ管理を効率的に行えます。