Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

PHP辞典

  1. トップページ
  2. PHP辞典
  3. mkdir() / rmdir() / unlink() / copy() / rename()

mkdir() / rmdir() / unlink() / copy() / rename()対応: PHP 4(2000)

ファイルやディレクトリの作成・削除・コピー・移動・権限変更を行います。ファイルシステム上の基本的な操作を網羅した関数群です。

構文
// ディレクトリを作成します。
mkdir($directory, $permissions, $recursive);

// 空のディレクトリを削除します。
rmdir($directory);

// ファイルを削除します。
unlink($filename);

// ファイルをコピーします。
copy($source, $dest);

// ファイルまたはディレクトリの名前を変更・移動します。
rename($from, $to);

// ファイルのパーミッションを変更します。
chmod($filename, $permissions);
関数一覧
関数概要
mkdir($directory, $permissions, $recursive)ディレクトリを作成します。第3引数に『true』を指定すると、途中の階層も含めて再帰的に作成します。
rmdir($directory)空のディレクトリを削除します。ディレクトリ内にファイルがあると失敗します。
unlink($filename)ファイルを削除します。ディレクトリの削除には使えません。
copy($source, $dest)ファイルをコピーします。移動先に同名のファイルがあれば上書きされます。
rename($from, $to)ファイルまたはディレクトリの名前を変更します。異なるディレクトリへのパスを指定すれば移動にもなります。
chmod($filename, $permissions)ファイルのパーミッションを変更します。権限は8進数で指定します。
戻り値

すべて成功時に『true』、失敗時に『false』を返します。失敗する主な原因は、権限不足、パスの不正、ディレクトリが空でないなどです。

サンプルコード
<?php
// ディレクトリを作成します。
mkdir("/var/www/html/uploads", 0755);
echo "ディレクトリを作成しました。";

// 再帰的にディレクトリを作成します。途中の階層がなくても一括で作成されます。
mkdir("/var/www/html/data/2025/04", 0755, true);
echo "ネストされたディレクトリを作成しました。";

// ディレクトリを作成する前に存在チェックを行います。
$dir = "/var/www/html/cache";
if (!is_dir($dir)) {
    mkdir($dir, 0755, true);
}

// ファイルを削除します。
if (file_exists("/var/www/html/temp.txt")) {
    unlink("/var/www/html/temp.txt");
    echo "ファイルを削除しました。";
}

// 空のディレクトリを削除します。
rmdir("/var/www/html/old_cache");
echo "ディレクトリを削除しました。";

// ファイルをコピーします。
copy("/var/www/html/config.json", "/var/www/html/config_backup.json");
echo "バックアップを作成しました。";

// ファイルを移動します。
rename("/var/www/html/temp/report.pdf", "/var/www/html/archive/report.pdf");
echo "ファイルを移動しました。";

// ファイル名を変更します。
rename("/var/www/html/old_name.txt", "/var/www/html/new_name.txt");
echo "ファイル名を変更しました。";

// パーミッションを変更します。
chmod("/var/www/html/pvt/config.php", 0640); // 所有者は読み書き、グループは読み取りのみ
echo "パーミッションを変更しました。";

// ディレクトリ内のファイルを全て削除する実用例
$dir = "/var/www/html/temp";
$files = glob($dir . "/*");
foreach ($files as $file) {
    if (is_file($file)) {
        unlink($file);
    }
}
rmdir($dir); // 中身を全て削除してから空のディレクトリを削除します。
echo "ディレクトリを中身ごと削除しました。";
概要

ファイルシステム操作の基本関数群です。『mkdir()』の第3引数に『true』を指定すると、途中の階層ディレクトリも含めて一括で作成できます。『rmdir()』は空のディレクトリしか削除できないため、中にファイルがある場合は先に『unlink()』で全て削除する必要があります。

『rename()』はファイルの名前変更だけでなく、移動先のパスを指定することでファイルの移動にも使えます。ただし、異なるファイルシステム間での移動は失敗する可能性があるため、その場合は『copy()』で複製してから『unlink()』で元ファイルを削除します。

『chmod()』のパーミッションは必ず8進数で指定してください。『0755』のように先頭にゼロを付けるか、『octdec("755")』で変換します。10進数の『755』を渡すと意図しない権限が設定されます。ファイルの存在確認には『file_exists() / is_file() / is_dir()』を使用してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。