ファイルシステムヘルパー

ファイルシステムヘルパーファイルには、ファイルとディレクトリの操作を支援する関数が含まれています。

このヘルパーの読み込み

このヘルパーは、以下のコードを使用して読み込みます。

<?php

helper('filesystem');

使用可能な関数

以下の関数が使用可能です。

directory_map($sourceDir[, $directoryDepth = 0[, $hidden = false]])
パラメーター:
  • $sourceDir (string) – ソースディレクトリのパス

  • $directoryDepth (int) – 巡回するディレクトリの深さ(0 = 完全な再帰、1 = カレントディレクトリなど)

  • $hidden (bool) – 隠しパスを含めるかどうか

戻り値:

ファイルの配列

戻り値の型:

array

<?php

$map = directory_map('./mydirectory/');

注記

パスはほとんどの場合、メインのindex.phpファイルからの相対パスです。

ディレクトリに含まれるサブフォルダーもマップされます。再帰の深さを制御する場合は、2番目のパラメーター(整数)を使用できます。1の深さでは、最上位ディレクトリのみがマップされます。

<?php

$map = directory_map('./mydirectory/', 1);

デフォルトでは、隠しファイルは戻り値の配列に含まれず、隠しディレクトリはスキップされます。この動作をオーバーライドするには、3番目のパラメーターをtrue(ブール値)に設定します。

<?php

$map = directory_map('./mydirectory/', 0, true);

各フォルダー名は配列インデックスになり、その中に含まれるファイルは数値インデックスになります。典型的な配列の例を以下に示します。

Array (
    [libraries] => Array
        (
            [0] => benchmark.html
            [1] => config.html
            ["database/"] => Array
                (
                    [0] => query_builder.html
                    [1] => binds.html
                    [2] => configuration.html
                    [3] => connecting.html
                    [4] => examples.html
                    [5] => fields.html
                    [6] => index.html
                    [7] => queries.html
                )
            [2] => email.html
            [3] => file_uploading.html
            [4] => image_lib.html
            [5] => input.html
            [6] => language.html
            [7] => loader.html
            [8] => pagination.html
            [9] => uri.html
        )
)

結果が見つからない場合は、空の配列を返します。

directory_mirror($original, $target[, $overwrite = true])
パラメーター:
  • $original (string) – 元のソースディレクトリ

  • $target (string) – ターゲットの宛先ディレクトリ

  • $overwrite (bool) – ファイルの衝突時に上書きするかどうか

元のディレクトリのファイルとディレクトリをターゲットディレクトリに再帰的にコピーします。つまり、そのコンテンツを「ミラーリング」します。

<?php

try {
    directory_mirror($uploadedImages, FCPATH . 'images/');
} catch (\Throwable $e) {
    echo 'Failed to export uploads!';
}

3番目のパラメーターで、必要に応じて上書き動作を変更できます。

write_file($path, $data[, $mode = 'wb'])
パラメーター:
  • $path (string) – ファイルパス

  • $data (string) – ファイルに書き込むデータ

  • $mode (string) – fopen()モード

戻り値:

書き込みが成功した場合はtrue、エラーの場合はfalse

戻り値の型:

bool

指定されたパスにデータを書きます。ファイルが存在しない場合は、作成します。

<?php

$data = 'Some file data';

if (! write_file('./path/to/file.php', $data)) {
    echo 'Unable to write the file';
} else {
    echo 'File written!';
}

3番目のパラメーターで、書き込みモードをオプションで設定できます。

<?php

write_file('./path/to/file.php', $data, 'r+');

デフォルトモードは'wb'です。モードのオプションについては、PHPマニュアルのfopen()を参照してください。

注記

この関数がファイルにデータを書くには、書き込み可能なようにパーミッションを設定する必要があります。ファイルがまだ存在しない場合は、それを含むディレクトリが書き込み可能である必要があります。

注記

パスは、コントローラーやビューファイルではなく、メインサイトのindex.phpファイルからの相対パスです。CodeIgniterはフロントコントローラーを使用するため、パスは常にメインサイトのインデックスからの相対パスになります。

注記

この関数は、書き込み中にファイルへの排他的ロックを取得します。

delete_files($path[, $delDir = false[, $htdocs = false[, $hidden = false]]])
パラメーター:
  • $path (string) – ディレクトリパス

  • $delDir (bool) – ディレクトリも削除するかどうか

  • $htdocs (bool) – .htaccessファイルとindexページファイルを削除しないようにするかどうか

  • $hidden (bool) – 隠しファイル(ピリオドで始まるファイル)も削除するかどうか

戻り値:

成功時はtrue、エラーの場合はfalse

戻り値の型:

bool

指定されたパスに含まれるすべてのファイルを削除します。

<?php

delete_files('./path/to/directory/');

2番目のパラメータがtrueに設定されている場合、指定されたルートパス内に含まれるディレクトリも削除されます。

<?php

delete_files('./path/to/directory/', true);

注記

削除するファイルは、書き込み可能であるか、システムが所有している必要があります。

get_filenames($sourceDir[, $includePath = false[, $hidden = false[, $includeDir = true]]])
パラメーター:
  • $sourceDir (string) – ディレクトリパス

  • $includePath (bool|null) – ファイル名の一部としてパスを含めるかどうか。falseの場合はパスを含めず、nullの場合は$sourceDirに対する相対パス、trueの場合はフルパス。

  • $hidden (bool) – 隠しファイル(ピリオドで始まるファイル)を含めるかどうか

  • $includeDir (bool) – 配列出力にディレクトリを含めるかどうか

戻り値:

ファイル名の配列

戻り値の型:

array

サーバーパスを入力として受け取り、その中に含まれるすべてのファイル名の配列を返します。2番目のパラメータを「relative」に設定すると相対パス、それ以外の空でない値に設定するとフルファイルパスをファイル名に追加できます。

注記

v4.4.4より前のバージョンでは、バグにより、この関数はシンボリックリンクフォルダを辿りませんでした。

<?php

$controllers = get_filenames(APPPATH . 'Controllers/');
get_dir_file_info($sourceDir[, $topLevelOnly = true])
パラメーター:
  • $sourceDir (string) – ディレクトリパス

  • $topLevelOnly (bool) – 指定されたディレクトリのみを調べるか(サブディレクトリを除く)

戻り値:

指定されたディレクトリのコンテンツに関する情報を格納した配列

戻り値の型:

array

指定されたディレクトリを読み取り、ファイル名、ファイルサイズ、日付、パーミッションを含む配列を作成します。2番目のパラメータをfalseに設定しない限り、指定されたパス内に含まれるサブフォルダは読み取られません。これは、負荷の高い操作となる可能性があるためです。

<?php

$models_info = get_dir_file_info(APPPATH . 'Models/');
get_file_info($file[, $returnedValues = ['name', 'server_path', 'size', 'date']])
パラメーター:
  • $file (string) – ファイルパス

  • $returnedValues (array|string) – 配列またはコンマ区切り文字列として渡される、返す情報の種類

戻り値:

指定されたファイルに関する情報を格納した配列、またはエラーの場合はfalse

戻り値の型:

array

ファイルとパスを指定して、ファイルの *名前*、*パス*、*サイズ*、*変更日* の情報属性を(オプションで)返します。2番目のパラメータを使用して、返す情報を明示的に宣言できます。

有効な$returnedValuesオプションは、namesizedatereadablewriteableexecutablefilepermsです。

symbolic_permissions($perms)
パラメーター:
  • $perms (int) – パーミッション

戻り値:

シンボリックパーミッション文字列

戻り値の型:

文字列

fileperms()によって返されるような数値パーミッションを受け取り、ファイルパーミッションの標準的なシンボリック表記を返します。

<?php

echo symbolic_permissions(fileperms('./index.php'));  // -rw-r--r--
octal_permissions($perms)
パラメーター:
  • $perms (int) – パーミッション

戻り値:

8進数のパーミッション文字列

戻り値の型:

文字列

fileperms()によって返されるような数値パーミッションを受け取り、ファイルパーミッションの3文字の8進表記を返します。

<?php

echo octal_permissions(fileperms('./index.php')); // 644
same_file($file1, $file2)
パラメーター:
  • $file1 (string) – 最初のファイルへのパス

  • $file2 (string) – 2番目のファイルへのパス

戻り値:

両方のファイルが同一のハッシュで存在するかどうか

戻り値の型:

ブール値

2つのファイルが同じかどうか(MD5ハッシュに基づく)を比較します。

<?php

echo same_file($newFile, $oldFile) ? 'Same!' : 'Different!';
set_realpath($path[, $checkExistence = false])
パラメーター:
  • $path (string) – パス

  • $checkExistence (bool) – パスが実際に存在するかどうかをチェックするかどうか

戻り値:

絶対パス

戻り値の型:

文字列

この関数は、シンボリックリンクや相対ディレクトリ構造のないサーバーパスを返します。オプションの2番目の引数によって、パスを解決できない場合にエラーが発生します。

<?php

$file = '/etc/php5/apache2/php.ini';
echo set_realpath($file); // Prints '/etc/php5/apache2/php.ini'

$non_existent_file = '/path/to/non-exist-file.txt';
echo set_realpath($non_existent_file, true);    // Shows an error, as the path cannot be resolved
echo set_realpath($non_existent_file, false);   // Prints '/path/to/non-exist-file.txt'

$directory = '/etc/php5';
echo set_realpath($directory);  // Prints '/etc/php5/'

$non_existent_directory = '/path/to/nowhere';
echo set_realpath($non_existent_directory, true);   // Shows an error, as the path cannot be resolved
echo set_realpath($non_existent_directory, false);  // Prints '/path/to/nowhere'