カテゴリ: PHP 更新日: 2025/12/10

PHPでディレクトリを作成・操作する方法!初心者向けにmkdir・rmdir・scandirをやさしく解説

PHP でディレクトリを作成・操作する方法(mkdir, rmdir, scandir)
PHP でディレクトリを作成・操作する方法(mkdir, rmdir, scandir)

先生と生徒の会話形式で理解しよう

生徒

「PHPでフォルダを作ったり、中のファイルを調べたり、削除したりできますか?」

先生

「はい、できますよ。PHPにはmkdirrmdirscandirというディレクトリ(フォルダ)を扱うための関数があります。」

生徒

「ディレクトリって、パソコンの中のフォルダのことですよね?」

先生

「そのとおりです!今回はそのディレクトリをPHPで作ったり、調べたり、削除したりする方法を、プログラミング初心者にもわかりやすく説明していきます。」

-

1. ディレクトリとは何かを知ろう

1. ディレクトリとは何かを知ろう
1. ディレクトリとは何かを知ろう

ディレクトリとは、パソコンの中でファイルを整理する「入れ物」のようなものです。WindowsやMacでよく見る「フォルダ」と同じ意味です。
たとえば、「写真」や「書類」といったフォルダがそれにあたります。PHPではこのディレクトリをプログラムで操作することができます。

2. mkdir関数でディレクトリを作成する方法

2. mkdir関数でディレクトリを作成する方法
2. mkdir関数でディレクトリを作成する方法

mkdir(エム・ケー・ディー・アイ・アール)関数を使うと、新しくディレクトリを作成することができます。使い方はとても簡単です。


<?php
$dir = "example";
if (!is_dir($dir)) {
    mkdir($dir);
    echo "ディレクトリを作成しました。";
} else {
    echo "すでにディレクトリがあります。";
}
?>

このコードでは、exampleという名前のディレクトリを作ります。すでに存在していないかどうかをis_dirで確認しています。

3. scandir関数で中身を確認する

3. scandir関数で中身を確認する
3. scandir関数で中身を確認する

scandir(スキャンディア)関数は、指定したディレクトリの中にあるファイルやサブディレクトリの一覧を配列として取得する関数です。


<?php
$files = scandir("example");
foreach ($files as $file) {
    echo $file . "\n";
}
?>

scandirはとても便利ですが、「.(ドット)」と「..(ドットドット)」という特別な記号も一緒に表示されるので注意してください。

  • .は「今のディレクトリ」
  • ..は「一つ上の階層のディレクトリ」

4. rmdir関数でディレクトリを削除する方法

4. rmdir関数でディレクトリを削除する方法
4. rmdir関数でディレクトリを削除する方法

rmdir(アール・エム・ディー・アイ・アール)関数は、空のディレクトリを削除するために使います。中にファイルがあると削除できません。


<?php
$dir = "example";
if (is_dir($dir)) {
    rmdir($dir);
    echo "ディレクトリを削除しました。";
} else {
    echo "ディレクトリが見つかりません。";
}
?>

中にファイルや他のフォルダがある場合は、先にそれらを削除する必要があります。初心者はまず「空のフォルダ」の削除から試してみるのが安心です。

-

5. よくあるつまずきポイントと対策

5. よくあるつまずきポイントと対策
5. よくあるつまずきポイントと対策
  • パーミッションエラー:フォルダを作れない・消せないときは、パソコンやサーバーの「書き込み権限」が原因のことが多いです。
  • すでに存在している:同じ名前のフォルダがあると、mkdirでエラーになります。is_dirで確認しましょう。
  • 空でないディレクトリrmdirは空でないと削除できません。中のファイルをすべて削除する処理が必要です。

6. 応用編:ディレクトリ内のファイルをすべて削除する

6. 応用編:ディレクトリ内のファイルをすべて削除する
6. 応用編:ディレクトリ内のファイルをすべて削除する

中にファイルがあるディレクトリを削除したい場合は、scandirでファイル一覧を取得し、unlinkで削除してからrmdirを実行します。


<?php
$dir = "example";
if (is_dir($dir)) {
    $files = scandir($dir);
    foreach ($files as $file) {
        if ($file !== "." && $file !== "..") {
            unlink($dir . "/" . $file);
        }
    }
    rmdir($dir);
    echo "フォルダと中身を削除しました。";
}
?>

これは少し難しいですが、実務ではよく使われる処理です。初心者の方はまず動作を確認して、徐々に理解を深めていきましょう。

7. PHPでディレクトリを操作する場面とは?

7. PHPでディレクトリを操作する場面とは?
7. PHPでディレクトリを操作する場面とは?

PHPでフォルダ(ディレクトリ)を扱うシーンは意外と多くあります。たとえば:

  • 画像のアップロード時にフォルダを自動作成
  • ユーザーごとのデータ保存場所を用意
  • 定期的に古いファイルを削除するバッチ処理
  • 管理画面からフォルダの中身を確認する

このように、mkdir・scandir・rmdirを使いこなすことで、PHPのファイル管理がグッとレベルアップします。

まとめ

まとめ
まとめ

PHPでディレクトリを操作する方法は、初心者が最初につまずきやすい部分ですが、この記事で学んだように基礎となる関数をしっかり理解すれば確実に扱えるようになります。とくに、mkdirで新しいフォルダを生成する仕組み、scandirでフォルダの中身を一覧として取得する方法、そしてrmdirで安全にディレクトリを削除する流れは、ファイル管理を行ううえで欠かせない重要な操作です。これらを適切に組み合わせることで、画像管理やユーザーデータ管理といった実用的な処理にも応用できるようになります。

また、ディレクトリを扱う際には、書き込み権限の確認や「空でないディレクトリは削除できない」という基本ルールを忘れないことが大切です。実務では多くのアプリケーションで自動的にフォルダが生成されたり、不要なデータが削除されたりするため、今回の知識はPHP開発全体で役立ちます。特に、is_dirunlinkを組み合わせて状態を判断しながら処理を進めることで、安全にディレクトリ操作を行うことができます。

以下は今回の内容をふり返る意味で、基本的なディレクトリ操作をひとまとめにしたサンプルコードです。実際の開発ではこれを応用して、ユーザーごとにフォルダを作成したり、自動的に古いファイルを整理したりする機能に発展させることができます。

サンプルプログラムまとめ


<?php
$dir = "sample_dir";

// ディレクトリがなければ作成
if (!is_dir($dir)) {
    mkdir($dir);
    echo "新しいフォルダを作成しました。\n";
}

// フォルダの一覧を確認
$items = scandir($dir);
foreach ($items as $item) {
    echo "中身:" . $item . "\n";
}

// 中身を削除してからフォルダを削除
foreach ($items as $item) {
    if ($item !== "." && $item !== "..") {
        unlink($dir . "/" . $item);
    }
}
rmdir($dir);
echo "フォルダと中身を安全に削除しました。";
?>

このコードでは、フォルダの作成・確認・削除までの流れをひとつの処理として確認できます。ディレクトリ操作はファイルアップロードやキャッシュ管理など幅広い用途で必要となるため、確実に身につけておくと開発の幅が大きく広がります。初心者でも、ひとつひとつの動作を確認しながら学ぶことで理解が深まり、より実践的な処理にも対応できるようになります。

先生と生徒の振り返り会話

生徒
「今日の内容で、フォルダを作ったり中を調べたり、全部PHPでできることがわかりました。mkdirとscandirとrmdirの役割がはっきり見えてきました!」

先生
「その理解はとても良いですね。ディレクトリ操作はアプリケーションでよく使うので、今回の知識は必ず役に立ちますよ。特に、scandirで一覧を取得してから内容を処理する流れは実務でもよく使います。」

生徒
「フォルダの中が空じゃないとrmdirが失敗する理由もよくわかりました。unlinkで中身を削除してから実行するのも勉強になりました。」

先生
「とても良いですね。実際の開発でもまず状況を確認してから処理を進めるのが大切なので、今日学んだ流れをしっかり覚えておきましょう。」

生徒
「はい!次はもっと応用的なディレクトリ操作にも挑戦してみたいです!」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHPのマルチバイト文字列を正しく扱う方法!初心者向けにmb_strlenとmb_substrをやさしく解説
New2
PHP
PHP の break, continue の使い方を完全解説!初心者でもわかるループ制御
New3
Python
Pythonで日本の元号を扱う方法を徹底解説!令和・平成の変換もバッチリ対応
New4
Python
Pythonの三項演算子とは?一行で条件分岐を記述する方法
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.2
Java&Spring記事人気No2
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
Pythonのライブラリとは?標準ライブラリとサードパーティライブラリの違いを初心者向けに解説!
No.5
Java&Spring記事人気No5
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.6
Java&Spring記事人気No6
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.7
Java&Spring記事人気No7
PHP
PHP の基本構文(開始タグ・コメント・インデント)を完全ガイド!初心者向け解説
No.8
Java&Spring記事人気No8
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
-
-