【PHP】これで分かる関数! – ディレクトリ操作その1 –

PHP

更新履歴

更新日更新者更新内容
2021/8/24JJI・サンプルプログラムの実行結果に画面の画像を追加

はじめに

この記事で載せているサンプルプログラムは次の記事で紹介する関数を使用している場合があります。

ディレクトリの作成

ディレクトリの作成はmkdir()関数を使用します。
mkdir()関数の引数でサブディレクトリまで一括で作成するできる方法もあるので、サンプルプログラムで合わせて紹介します。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】ディレクトリの作成<br>\n";

    // ディレクトリの作成
    $dirname = "data/dir1";
    echo "ディレクトリの作成:${dirname}:<br>\n";
    mkdir($dirname);

    if(is_dir($dirname)) {
        echo "ディレクトリ:${dirname}は存在します。<br>\n";
    }

    rmdir($dirname);
    echo "<br>\n";

    // ディレクトリの作成失敗
    $dirname = "data/dir2/subdir2";
    echo "ディレクトリの作成:${dirname}:<br>\n";
    $return = @mkdir($dirname);

    if($return === false) {
        echo "ディレクトリ:${dirname}の作成に失敗しました。<br>\n";
    }
    echo "<br>\n";

    // サブディレクトリも一括で作成する
    $dirname = "data/dir3/subdir3";
    echo "ディレクトリの作成:${dirname}:<br>\n";
    $return = @mkdir($dirname, 0777, true);

    if(is_dir($dirname)) {
        echo "ディレクトリ:${dirname}は存在します。<br>\n";
    }

    rmdir($dirname);
    rmdir(dirname($dirname));
    echo "<br>\n";

?>

実行結果です。

・画面

・HTML

ファイル名:sample02_08_21.php<br>
【PHP】ディレクトリの作成<br>
ディレクトリの作成:data/dir1:<br>
ディレクトリ:data/dir1は存在します。<br>
<br>
ディレクトリの作成:data/dir2/subdir2:<br>
ディレクトリ:data/dir2/subdir2の作成に失敗しました。<br>
<br>
ディレクトリの作成:data/dir3/subdir3:<br>
ディレクトリ:data/dir3/subdir3は存在します。<br>
<br>

ディレクトリの削除

ディレクトリの削除はrmdir()関数を使用します。
削除対象のディレクトリが空でない場合、rmdir()関数の処理は失敗します。
ディレクトリが空でない場合、exec()関数でOSコマンドを使用した方がコードを簡単に書くことができます。

rmdir()関数、OSコマンドを使用したサンプルプログラムは次の通りです。。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】ディレクトリの削除<br>\n";

    // ディレクトリの削除
    $dirname = "data/work/dir1";
    echo "ディレクトリの削除:${dirname}:<br>\n";
    $ret = @rmdir($dirname);

    if($ret !== false) {
        echo "ディレクトリ:${dirname}の削除に成功しました。<br>\n";
    }
    echo "<br>\n";

    // ディレクトリの削除失敗
    // ディレクトリが空ではない場合、rmdir()関数は失敗する
    $dirname = "data/work/dir2";
    echo "ディレクトリの削除:${dirname}:<br>\n";
    $return = @rmdir($dirname);

    if($return === false) {
        echo "ディレクトリ:${dirname}の削除に失敗しました。<br>\n";
    }
    echo "<br>\n";

    echo "ディレクトリの削除(OSコマンド使用):${dirname}:<br>\n";
    if(substr(PHP_OS,0, 3) === "WIN") {
        $cmd = "rmdir /S /Q " . conv_path($dirname);
        $ret = exec_win_cmd($cmd, true);
        echo "コマンドの実行結果:${ret}:<br>\n";
    }

    if(! is_dir($dirname)) {
        echo "ディレクトリ:${dirname}は存在しません。<br>\n";
    }

    mkdir("data/work/dir1");
    mkdir("data/work/dir2/sub2", 0777, true);
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_08_22.php<br>
【PHP】ディレクトリの削除<br>
ディレクトリの削除:data/work/dir1:<br>
ディレクトリ:data/work/dir1の削除に成功しました。<br>
<br>
ディレクトリの削除:data/work/dir2:<br>
ディレクトリ:data/work/dir2の削除に失敗しました。<br>
<br>
ディレクトリの削除(OSコマンド使用):data/work/dir2:<br>
rmdir /S /Q data\work\dir2<br>
コマンドの実行結果:0:<br>
ディレクトリ:data/work/dir2は存在しません。<br>

コメント