PHPでのディレクトリの作成と削除

  • PHP
  • 現在地

mkdir / ディレクトリの作成

存在しないディレクトリ(フォルダ)の作成は、関数 mkdir() で作成したいディレクトリのパスを入力するだけで行えます。(パス以外は任意です。)

  • mkdir(
    • 'ディレクトリのパス', パーミッション, 再起処理の可否, コンテキスト
  • );

任意で入力できるパラメータの説明です。

パーミッション

ディレクトリに対するアクセス権限(パーミッション)の設定です。

値は、最初に 0 をつけてから読み込み許可 (4)・書き込み許可 (2)・実行/一覧表示許可 (1) を足した最大値 7 となる数値を、左から所有者、グループ、その他の順に記述を行います。(初期値は 0777

実際はサーバー上で設定された umask の値を、設定した値から差し引いた値が適用されるので、umask の値が 0022 とされていれば、0777 と入力されていても 0755 となり、所有者以外は書き込み不可となります。

なお、値は八進数で記述されていますが、十進数で記述することも可能で、511 が 0777 と同様で最大値となります。

再起処理の可否

入れ子構造のディレクトリを作成するかどうかです。(初期値は false

true にすることで、第2階層に目的のディレクトリを作成したい場合、第1階層のディレクトリが存在しなければ、そのフォルダも作成されることになります。

コンテキスト
オプションとして作成したストリーム。

既存のディレクトリを作成しようとすると警告が返ってきますが、目的のディレクトリさえ作成できれば問題ないため、入れ子構造のディレクトリが存在していても警告されません。

rmdir / ディレクトリの削除

作成されたディレクトリを削除する場合も、関数 rmdir() で削除したいディレクトリのパスを入力するだけです。(任意のパラメータもコンテキストだけです。)

削除する際の注意

rmdir() は空のディレクトリしか削除できないので、あらかじめディレクトリ内のファイルを削除しておく必要があります。

後書き

ローカルではパーミッション値をミスっても問題が発生しないので、試しに mkdir() の、八進数のパーミッション値から 0 を外したディレクトリ作成コードを、サーバー上へアップして実行してみると、警告が出ながらもディレクトリが作成されました。

しかし、そのディレクトリ(a)にアクセスはできず、FTPでは応答として以下の一文が返ってきました。

550 can't change directory to a: permission denied

この状態だと、FTPからはアクセスできないため削除もできず困ったのですが、rmdir() でアクセスできないディレクトリを削除するコードを作成し、サーバーにアップして実行することで削除することができました。

関連ページ : PHPでディレクトリとファイルを一括削除する

ちなみに、パーミッション値をミスって作成されたディレクトリの場合は、中にファイルがあろうともディレクトリごと削除できるようです。

スポンサードリンク

inserted by FC2 system