PHP

ディレクトリを削除する

  1. 最終更新日:
  2. 公開日:

rmdir関数を使ってディレクトリを削除する方法について解説します。

この記事のポイント

  • ディレクトリを削除するための条件は3つ
  • ディレクトリ内のファイルを全て削除してから、ディレクトリを削除する
  • ディレクトリが入れ子状態のときは注意が必要

ディレクトリを削除する

rmdir関数を使うと、指定したディレクトリを削除することができます。

PHP コード例

rmdir( './test/');

ディレクトリへのパス(ファイル名)を指定すると削除することができます。
正常に削除されるとtrueを返し、何らかの理由で失敗するとfalseを返します。

ディレクトリを削除するには3つ条件があり、全て満たしている場合のみ削除が実行されます。

  • ディレクトリ内にファイルが無い(空の状態)
  • ディレクトリが書き込み可能がある
  • 親ディレクトリが書き込み可能である

使用例

ディレクトリの削除を行うコードを紹介します。

PHP コード例

<?php

// ディレクトリへのパス
$parent_path = './test/';
$path = 'child/';
$result = false;

// 親ディレクトリ、削除するディレクトリが書き込み可能か確認
if( is_writable($parent_path) && is_writable($parent_path . $path) ) {

  // ディレクトリ内のファイルを取得
  $files = scandir($parent_path . $path);

  // ディレクトリ内のファイルを全て削除する
  foreach( $files as $file_name ) {

    if( !preg_match( '/^\.(.*)/', $file_name) ) {
      unlink($parent_path . $path . $file_name);
    }
  }

  // ディレクトリを削除
  $result = rmdir($parent_path . $path);

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

return;

is_writable関数で削除したいディレクトリと親ディレクトリがどちらも書き込み可能かを確認し、可能な場合のみディレクトリ削除を実行します。

ディレクトリを削除する前準備として、ディレクトリ内にあるファイル一覧をscandir関数で取得してからunlink関数でファイルを順に削除していきます。

ファイルを全て削除したら、rmdir関数でディレクトリを削除します。
削除が正常に行われたら「ディレクトリを削除しました。」という文言を表示し、失敗した場合は「ディレクトリの削除に失敗しました。」と表示して終了です。

ファイルを削除するunlink関数について詳しくは、「ファイルを削除する」をご覧ください。

Note

上記ディレクトリは中にファイルしかないことを前提としています。もし削除したいディレクトリの中にディレクトリが存在する可能性がある場合は注意してください。

記事一覧

関連記事