CodeIgniter ユーザガイド 日本語版 Version 2.0.3


ファイルヘルパー

ファイルヘルパーのファイルは、ファイルを処理するのに役立つ関数で構成されます。

ヘルパーのロード

このヘルパーは次のコードを使ってロードします:

$this->load->helper('file');

次の関数が利用できます:

read_file('path')

パスで特定されたファイルのデータを返します。例:

$string = read_file('./path/to/file.php');

パスは、サーバの相対パスかフルパスで指定します。読み込みに失敗した場合は FALSE (ブール値)を返します。

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

サーバで open_basedir の制限が有効になっている場合、 呼び出したスクリプトより上の階層にあるファイルにアクセスしようとするとき、このメソッドは動作しないかもしれません。

write_file('path', $data)

パスで指定されたファイルにデータを書き込みます。ファイルが存在しない場合には、このメソッドによってファイルが作成されます。例:

$data = 'Some file data';

if ( ! write_file('./path/to/file.php', $data))
{
echo 'ファイルに書き込めません';
}
else
{
echo 'ファイルが書き込まれました!';
}

第3引数に書き込みモードをオプションで指定できます:

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

デフォルトのモードは、wb です。指定できるモードについては、PHP ユーザガイドをご覧ください。

Note: この関数でファイルにデータを書き込めるようにするには、ファイルのパーミッションを書き込み可能なように (666、777、など)に設定しなければなりません。 ファイルがまだ存在しない場合は、保存先のディレクトリが書き込み可能でなければなりません。

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

delete_files('path')

パスに含まれるすべてのファイルを削除します。例:

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

第2引数を true にセットすると、指定したパスに含まれるいずれのディレクトリも削除されます。例:

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

Note: 削除するには、ファイルを書き込み可能にするか、所有者をシステムにしてください。

get_filenames('path/to/directory/')

サーバパスを入力として、そのパスに含まれる全ファイル名の配列を返します。 オプションで、第2引数を TRUE に設定すると、ファイルのパスがファイル名に付加されます。

get_dir_file_info('path/to/directory/', $top_level_only = TRUE)

指定されたディレクトリを読み、ファイル名、ファイルサイズ、日付、パーミッションから成る配列を作ります。 指定ファイル以下のサブフォルダは、第2引数で $top_level_onlyFALSE に指定した場合のみすべて同様に読まれます。

get_file_info('path/to/file', $file_information)

ファイルとパスを元に、名前、パス、サイズと変更された日付を返します。2つ目の引数で以下のどれだけを返すか明示的に指定できます:name (名前)、server_path (サーバーパス)、size (サイズ)、date (日付)、readable (読み込み可)、writable (書き込み可)、executable (実行可)、fileperms (ファイルパーミッション)。ファイルがみつからない場合は FALSE を返します。

注意:"writable" は PHP の is_writable() 関数を使いますが、この関数は IIS Web サーバで問題があることが知られています。PHP の fileperms() を使う fileperms を使うことを検討してください。

get_mime_by_extension('file')

config/mimes.php にある設定を元にファイル拡張子を mime タイプに変換します。タイプが分からないときや mime 設定ファイルが開けなかったときは FALSE を返します。

$file = "somefile.png";
echo $file . ' には以下のmimeタイプがついています ' . get_mime_by_extension($file);

注意: この方法は正確にファイルのmimeタイプを判別するものではなく、あくまで簡単に取得するためだけのものです。セキュリティ用には使わないでください。

symbolic_permissions($perms)

(fileperms() で返ってくるような) 数字のパーミッションを引数として渡すと、文字列のファイルパーミッションを返します。

echo symbolic_permissions(fileperms('./index.php'));

// -rw-r--r--

octal_permissions($perms)

(fileperms() で返ってくるような) 数字のパーミッションを引数として渡すと、8進数3文字のファイルパーミッションを返します。

echo octal_permissions(fileperms('./index.php'));

// 644