PHPでディレクトリ作成を完全マスター!手順とサンプルコード10選

PHPでディレクトリを作成する方法を学ぶ人の手とコードのスクリーンショットPHP
この記事は約13分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

Web開発の世界では、データ管理は不可欠なスキルです。

その中で特に重要なのが、ディレクトリの作成です。

ディレクトリはファイルを整理し、管理しやすくするための手段で、特定の種類のファイルをまとめるのに役立ちます。

それはドキュメント、画像、ビデオなど、あらゆる種類のデータが含まれます。

PHPは広く使用されているサーバーサイドスクリプト言語で、動的なWebページを作成するのに役立ちます。

また、PHPはファイルやディレクトリの操作にも優れており、プログラマーが必要なデータ構造を簡単に作成できるようになっています。

この記事では、PHPでディレクトリを作成する方法について詳しく解説します。

また、これらの手順を理解して実践することで、PHPを用いたWeb開発のスキルをより高めることができます。

●PHPにおけるディレクトリ作成の基本

PHPには、ディレクトリを作成するための組み込み関数が存在します。

それが「mkdir」関数です。

この関数を使うことで、新しいディレクトリを作成したり、既存のディレクトリの中に新しいサブディレクトリを作成することが可能になります。

<?php
mkdir("新しいディレクトリ");
?>

この例では、”新しいディレクトリ”という名前のディレクトリが作成されます。

なお、この時点ではディレクトリのパーミッション(アクセス権)はデフォルトの状態となります。

次に進む前に、ここで一つ注意しておくべき重要な事項があります。

それは、PHPスクリプトが実行される場所(つまり、どのディレクトリが「現在のディレクトリ」と見なされるか)は、スクリプトがどこから呼び出されるかによって変わるということです。

スクリプトがWebサーバー経由で実行される場合、現在のディレクトリは通常、スクリプト自体が存在するディレクトリとなります。

しかし、コマンドラインからスクリプトを実行すると、現在のディレクトリは通常、そのコマンドが実行されるディレクトリとなります。

つまり、どのディレクトリが「現在のディレクトリ」と見なされるかは、スクリプトがどこから呼び出されるかによって変わるため、その点には注意が必要です。

○PHPの基本的なディレクトリ操作

PHPでディレクトリを操作する際は、主に次の関数を使用します。

  • mkdir():新しいディレクトリを作成します。
  • rmdir():空のディレクトリを削除します。
  • is_dir():指定したパスがディレクトリかどうかを確認します。
  • chdir():現在のディレクトリを変更します。
  • getcwd():現在のディレクトリの絶対パスを取得します。

これらの関数を使うことで、PHPでディレクトリを自由に操作することが可能になります。

それでは、PHPでディレクトリを作成する具体的な手順について見ていきましょう。

●PHPでディレクトリを作成する具体的な手順

PHPでディレクトリを作成する手順は比較的簡単です。

まず最初に、ディレクトリを作成したい場所のパスを特定します。

そして、mkdir関数を使用して新しいディレクトリを作成します。

この関数は、成功した場合にTRUEを、失敗した場合にFALSEを返します。

つまり、エラーハンドリングを行う場合にはこの戻り値を使用することが可能です。

<?php
$dir = '新しいディレクトリ';
if(!is_dir($dir)){
    if(mkdir($dir)){
        echo 'ディレクトリ「' . $dir . '」を作成しました。';
    } else {
        echo 'ディレクトリ「' . $dir . '」の作成に失敗しました。';
    }
} else {
    echo 'ディレクトリ「' . $dir . '」はすでに存在します。';
}
?>

このコードでは、まず変数$dirに新しく作成するディレクトリの名前を代入しています。

次に、is_dir関数を使用して、そのディレクトリがすでに存在するかどうかを確認します。

ディレクトリが存在しない場合、mkdir関数を使用してディレクトリを作成します。

そして、その結果に応じてメッセージを表示しています。

次に、様々な場面に対応したディレクトリ作成のためのPHPのサンプルコードをいくつか紹介します。

●PHPでディレクトリを作成するためのサンプルコード10選

○サンプルコード1:基本的なディレクトリ作成

このコードでは、”test_directory”という名前の新しいディレクトリを作成しています。

ディレクトリの作成に成功した場合は成功メッセージを、失敗した場合は失敗メッセージを表示します。

<?php
if (mkdir('test_directory')) {
    echo 'ディレクトリ "test_directory" が作成されました。';
} else {
    echo 'ディレクトリ "test_directory" の作成に失敗しました。';
}
?>

○サンプルコード2:条件を満たした場合のみディレクトリ作成

このコードでは、ディレクトリを作成する前に、まずそのディレクトリがすでに存在するかどうかを確認しています。

ディレクトリが存在しない場合のみ、ディレクトリの作成を試みます。

<?php
$dir = '条件ディレクトリ';
if (!file_exists($dir)) {
    if (mkdir($dir)) {
        echo 'ディレクトリ "' . $dir . '" が作成されました。';
    } else {
        echo 'ディレクトリ "' . $dir . '" の作成に失敗しました。';
    }
} else {
    echo 'ディレクトリ "' . $dir . '" はすでに存在します。';
}
?>

これらのコードを活用すれば、PHPでのディレクトリ操作が更に柔軟に行えるでしょう。

次のセクションでは、さらに複雑な操作を行うためのサンプルコードをいくつか紹介します。

○サンプルコード3:複数のディレクトリを一度に作成

このコードでは、複数のディレクトリ名を配列に格納し、foreachループを使用して各ディレクトリを一度に作成しています。

また、既にディレクトリが存在する場合はその情報を出力します。

<?php
$dirs = ['ディレクトリ1', 'ディレクトリ2', 'ディレクトリ3'];
foreach ($dirs as $dir) {
    if (!is_dir($dir)) {
        if (mkdir($dir)) {
            echo 'ディレクトリ "' . $dir . '" が作成されました。';
        } else {
            echo 'ディレクトリ "' . $dir . '" の作成に失敗しました。';
        }
    } else {
        echo 'ディレクトリ "' . $dir . '" はすでに存在します。';
    }
}
?>

○サンプルコード4:特定のパーミッションでディレクトリ作成

このコードでは、特定のパーミッション(この場合は0700)でディレクトリを作成しています。

ディレクトリのパーミッションは、ディレクトリの所有者や他のユーザーがそのディレクトリに対して実行できる操作(読み取り、書き込み、実行)を制御します。

<?php
$dir = '特定のパーミッションで作成するディレクトリ';
if (!is_dir($dir)) {
    if (mkdir($dir, 0700)) {
        echo 'ディレクトリ "' . $dir . '" がパーミッション 0700 で作成されました。';
    } else {
        echo 'ディレクトリ "' . $dir . '" の作成に失敗しました。';
    }
} else {
    echo 'ディレクトリ "' . $dir . '" はすでに存在します。';
}
?>

○サンプルコード5:親ディレクトリがない場合のディレクトリ作成

このコードでは、親ディレクトリが存在しない場合でもディレクトリを作成する方法を示しています。

mkdir関数の第三引数にtrueを設定することで、必要な親ディレクトリも自動的に作成します。

<?php
$dir = '親ディレクトリ/子ディレクトリ';
if (!is_dir($dir)) {
    if (mkdir($dir, 0777, true)) {
        echo 'ディレクトリ "' . $dir . '" が作成されました。';
    } else {
        echo 'ディレクトリ "' . $dir . '" の作成に失敗しました。';
    }
} else {
    echo 'ディレクトリ "' . $dir . '" はすでに存在します。';
}
?>

○サンプルコード6:エラーハンドリングを含むディレクトリ作成

このコードでは、エラーハンドリングを含むディレクトリ作成の方法を示しています。

ディレクトリの作成に失敗した場合には例外をスローし、それをcatchブロックで捕捉してエラーメッセージを出力します。

<?php
$dir = 'エラーハンドリングを含むディレクトリ';

try {
    if (!is_dir($dir)) {
        if (!mkdir($dir)) {
            throw new Exception('ディレクトリの作成に失敗しました。');
        }
        echo 'ディレクトリ "' . $dir . '" が作成されました。';
    } else {
        echo 'ディレクトリ "' . $dir . '" はすでに存在します。';
    }
} catch (Exception $e) {
    echo 'エラー: ' . $e->getMessage();
}
?>

○サンプルコード7:ディレクトリ作成後の操作

このコードでは、ディレクトリを作成した後にそのディレクトリ内で新しいファイルを作成する方法を紹介しています。

chdir関数で作成したディレクトリに移動し、file_put_contents関数を用いて新しいファイルを作成しています。

<?php
$dir = 'ディレクトリ作成後の操作';

if (!is_dir($dir)) {
    if (mkdir($dir)) {
        chdir($dir);
        file_put_contents('newfile.txt', 'ディレクトリ作成後の新しいファイル');
        echo '新しいファイルが "' . $dir . '" 内に作成されました。';
    } else {
        echo 'ディレクトリ "' . $dir . '" の作成に失敗しました。';
    }
} else {
    echo 'ディレクトリ "' . $dir . '" はすでに存在します。';
}
?>

○サンプルコード8:ディレクトリ名の変更

このコードでは、既存のディレクトリ名を変更する方法を紹介しています。

rename関数を用いて既存のディレクトリ名を新しい名前に変更します。

<?php
$old_dir = '古いディレクトリ名';
$new_dir = '新しいディレクトリ名';

if (!is_dir($old_dir)) {
    mkdir($old_dir);
}

if (rename($old_dir, $new_dir)) {
    echo 'ディレクトリ名が "' . $old_dir . '" から "' . $new_dir . '" に変更されました。';
} else {
    echo 'ディレクトリ名の変更に失敗しました。';
}
?>

○サンプルコード9:ディレクトリの削除

このコードでは、ディレクトリを削除する方法を紹介しています。

rmdir関数を用いて指定したディレクトリを削除します。

<?php
$dir = '削除するディレクトリ';

if (is_dir($dir)) {
    if (rmdir($dir)) {
        echo 'ディレクトリ "' . $dir . '" が削除されました。';
    } else {
        echo 'ディレクトリ "' . $dir . '" の削除に失敗しました。';
    }
} else {
    echo 'ディレクトリ "' . $dir . '" は存在しません。';
}
?>

○サンプルコード10:ディレクトリ内のファイル操作

このコードでは、ディレクトリ内のファイルを操作する方法を紹介しています。

ディレクトリ内の全てのファイル名を読み出し、それぞれについて操作を行います。

<?php
$dir = '操作するディレクトリ';

if (is_dir($dir)) {
    if ($handle = opendir($dir)) {
        while (($file = readdir($handle)) !== false) {
            if ($file != "." && $file != "..") {
                echo 'ファイル名: ' . $file . "\n";
            }
        }
        closedir($handle);
    }
} else {
    echo 'ディレクトリ "' . $dir . '" は存在しません。';
}
?>

●PHPでディレクトリを作成する際の注意点と対処法

PHPでディレクトリを作成する際には、次のような点に注意が必要です。

1.パーミッション

ディレクトリを作成するためには、適切なパーミッションが必要です。

通常、ウェブサーバーは限定的なパーミッションしか持っておらず、一部のディレクトリに対してのみ書き込みが許可されています。

ディレクトリを作成しようとした場所に適切なパーミッションがない場合、mkdir関数は失敗します

これを解決するためには、ディレクトリのパーミッションを適切に設定する必要があります。

2.ディレクトリの存在チェック

mkdir関数は、作成しようとしているディレクトリがすでに存在する場合には失敗します。

そのため、ディレクトリを作成する前に、is_dir関数を用いてそのディレクトリが存在しないことを確認することが重要です。

3.エラーハンドリング

PHPのmkdir関数は、ディレクトリの作成に失敗するとfalseを返します。

そのため、エラーハンドリングを適切に行い、ディレクトリの作成が失敗した場合にはその原因をユーザーに伝えるようにすることが重要です。

以上のような注意点を把握し、適切な対処法を行うことで、PHPでのディレクトリ作成をスムーズに行うことができます。

次に、ディレクトリ作成のカスタマイズ方法について説明します。

●ディレクトリ作成のカスタマイズ方法

PHPでディレクトリを作成する際には、次のようなカスタマイズが可能です。

1.パーミッションの設定

mkdir関数は第二引数としてパーミッションを指定することが可能です。

これにより、作成したディレクトリのパーミッションを制御することができます。

2.再帰的なディレクトリ作成

mkdir関数の第三引数をtrueにすることで、指定したディレクトリパスに存在しない上位ディレクトリも同時に作成することができます。

これは、深い階層のディレクトリを一度に作成する場合などに有用です。

以上が、PHPでディレクトリを作成する際の主なカスタマイズ方法です。

次に、この記事のまとめとなる部分を述べていきます。

まとめ

この記事では、PHPでディレクトリを作成する方法を詳しく解説しました。

PHPの基本的なディレクトリ操作関数の使い方から、エラーハンドリングやカスタマイズ方法までを一通り紹介しました。

これらの知識を身につけることで、PHPでディレクトリを自在に操作する力を身につけることができます。

ディレクトリの操作は、ウェブアプリケーションの開発において頻繁に行われる作業です。

これらの基本的な操作をマスターし、更に応用的な操作も行えるようになれば、より高度なウェブアプリケーションの開発が可能になります。

今後もPHPの学習を続け、さらなるスキルアップを目指していきましょう。