opendir

関数の概要

PHPの opendir 関数は、指定したディレクトリを開き、そのディレクトリハンドルを取得します。これによりディレクトリ内のファイルやサブディレクトリを読み込む準備ができ、ファイル操作や一覧表示に利用されます。ファイルシステムの操作でディレクトリを扱いたい場合に必須の関数です。

パラメータの説明

  • string $path — 開きたいディレクトリのパスを指定します。絶対パス、または相対パスで指定可能です。
  • resource $context(省略可能)— ストリームコンテキストリソース。通常は使用しませんが、詳細なストリーム設定を行いたい場合に使用します。

戻り値

正常にディレクトリが開けた場合は、そのディレクトリのハンドル(リソース)を返します。失敗した場合は false が返されます。取得したハンドルは後に closedir で閉じる必要があります。

使用例

基本的な使い方

<?php
$dir = 'example_dir';

if ($handle = opendir($dir)) {
    echo "ディレクトリ '$dir' を開きました。";
    closedir($handle);
} else {
    echo "ディレクトリ '$dir' を開けませんでした。";
}
?>

指定したディレクトリを開いて成功したかどうかを判定しています。成功すればメッセージを表示し、必ずハンドルを閉じています。

ディレクトリ内のファイル一覧を表示する例

<?php
$dir = './sample_dir';

if ($handle = opendir($dir)) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry !== '.' && $entry !== '..') {
            echo $entry . "<br>";
        }
    }
    closedir($handle);
} else {
    echo "ディレクトリを開けません。";
}
?>

opendirでディレクトリを開き、readdirで中のファイルやフォルダ名を一つずつ読み込み、...は除いて一覧表示しています。

ディレクトリ内の特定拡張子ファイルを取得する例

<?php
$dir = './logs';
$extension = '.log';
$files = [];

if ($handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) {
        if (pathinfo($file, PATHINFO_EXTENSION) === ltrim($extension, '.')) {
            $files[] = $file;
        }
    }
    closedir($handle);
}

foreach ($files as $file) {
    echo $file . "<br>";
}
?>

ログファイル(.log 拡張子のみ)をディレクトリから抽出し、配列に保存した後で一覧表示しています。実務でもログ解析やファイル管理に役立つ使い方です。

関連する関数

  • readdir — 開いたディレクトリからファイル名を1つずつ読み込む
  • closedir — 開いたディレクトリハンドルを閉じる
  • scandir — 指定ディレクトリのファイル一覧を配列で取得する
  • is_dir — パスがディレクトリかどうか判定する

まとめ

opendirはPHPでディレクトリを開くための基本的な関数であり、ディレクトリ内のファイル操作や一覧取得を行う際の第一歩です。readdirclosedirと組み合わせて使うことが多く、ログ管理やファイル整理など多くの実務場面で役立ちます。初心者でも理解しやすく、扱い方を覚えておくとPHPのファイル操作が一段と便利になります。