【PHP8.x】is_file関数の使い方

is_file関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

is_file関数は、指定されたパスが通常のファイルであるかどうかを確認する関数です。この関数は、引数として検証したいファイルのパスを受け取ります。もし指定されたパスが実際に存在する通常のファイルであれば、true(真)を返します。一方、指定されたパスが存在しない場合、ディレクトリである場合、あるいはシンボリックリンクだがリンク先が通常ファイルではない場合、またはその他の特殊なファイル(デバイスファイルなど)である場合には、false(偽)を返します。

この関数は、ファイル操作を行う前に、対象が通常のファイルであることを確認する際に非常に役立ちます。例えば、ファイルの読み書きを始める前に、指定されたパスがディレクトリではなく、実際に内容を持つファイルであることをチェックするために使用します。シンボリックリンクが指定された場合でも、そのリンク先が通常のファイルであればtrueを返しますので、実際のファイル実体を基準に判断できます。

ファイルが存在するかどうかだけを確認したい場合はfile_exists()関数を使用しますが、is_file()関数はさらにそれが「通常のファイル」であるかまでを厳密に判断します。これにより、意図しないディレクトリへの書き込みや、存在しないファイルへのアクセスといった予期せぬエラーを防ぎ、より堅牢なファイル処理ロジックを構築することが可能になります。ファイルシステムを扱うアプリケーション開発において、安全なファイル操作を実現するための基本的なツールの一つとして利用されます。

構文(syntax)

1<?php
2$filepath = 'path/to/your/file.txt';
3$isFile = is_file($filepath);
4?>

引数(parameters)

string $filename

  • string $filename: 検査するファイルパスを指定する文字列

戻り値(return)

bool

指定されたファイルパスに、通常のファイルが存在するかどうかを判定します。ファイルが存在する場合は true を、存在しない場合やディレクトリである場合は false を返します。

サンプルコード

PHP is_file でファイル存在チェック

1<?php
2
3/**
4 * 指定されたパスが通常のファイルであるかどうかをチェックし、結果を出力します。
5 *
6 * is_file() 関数は、指定されたパスが存在し、それが通常のファイルである場合にのみ true を返します。
7 * ディレクトリ、シンボリックリンク、または存在しないパスに対しては false を返します。
8 *
9 * @param string $filePath チェックするファイルのパス。
10 * @return void
11 */
12function checkFileStatus(string $filePath): void
13{
14    echo "パス '{$filePath}' の状態を確認します。\n";
15
16    if (is_file($filePath)) {
17        echo "  結果: このパスは、存在する通常のファイルです。\n";
18    } else {
19        echo "  結果: このパスは、存在しないか、または通常のファイルではありません (例: ディレクトリ、シンボリックリンク)。\n";
20    }
21    echo "----------------------------------------\n";
22}
23
24// -----------------------------------------------------
25// サンプルコードの実行例
26// -----------------------------------------------------
27
28// 1. このスクリプト自身をチェック(存在する通常のファイル)
29//    __FILE__ は現在のPHPスクリプトのフルパスを表す定数です。
30checkFileStatus(__FILE__);
31
32// 2. 存在しないファイルをチェック
33checkFileStatus('non_existent_file.txt');
34
35// 3. ディレクトリをチェック(is_file() はディレクトリに対して false を返します)
36//    __DIR__ は現在のPHPスクリプトがあるディレクトリのフルパスを表す定数です。
37checkFileStatus(__DIR__);
38
39// 4. 一時的にファイルを作成し、それをチェックした後に削除する例
40//    (より実践的な例として、ファイル作成・削除の関数を利用)
41$tempFileName = 'temp_example_file.txt';
42file_put_contents($tempFileName, 'これはテストファイルです。');
43echo "一時ファイル '{$tempFileName}' を作成しました。\n";
44checkFileStatus($tempFileName);
45
46// 使用済みのテストファイルを削除
47unlink($tempFileName);
48echo "一時ファイル '{$tempFileName}' を削除しました。\n";
49echo "----------------------------------------\n";
50
51// 削除後のファイルを再度チェック(存在しないため false になります)
52checkFileStatus($tempFileName);
53
54?>

PHPのis_file()関数は、指定されたパスが通常のファイルであるかどうかを調べるために使用します。

引数には、調べたいファイルへのパスを文字列として渡します。この関数は、指定したパスが存在し、かつそれがディレクトリなどではない「通常のファイル」である場合にのみ、戻り値としてtrue(真)を返します。パスが存在しない場合や、ディレクトリやシンボリックリンクであった場合はfalse(偽)を返します。

このサンプルコードは、checkFileStatusという独自の関数を定義し、様々な条件のパスに対してis_file()を実行して結果を表示しています。まず、現在実行中のスクリプト自身のパス(__FILE__)を調べることで、存在するファイルにはtrueが返されることを示します。次に、存在しないファイル名や、ディレクトリのパス(__DIR__)を渡すと、これらは通常のファイルではないためfalseが返されることを確認できます。さらに、一時的にファイルを作成してチェックするとtrueとなり、そのファイルを削除した後に再度チェックするとfalseに変わる流れを通して、関数の正確な挙動を具体的に示しています。

このように、ファイル操作を行う前に、対象が意図した通り通常のファイルであるかを確認する際に便利な関数です。

is_file()関数は、指定されたパスが存在し、かつそれがディレクトリではなく「通常のファイル」である場合にtrueを返します。ディレクトリやシンボリックリンク、存在しないパスに対してはfalseとなる点が重要です。単にパスが存在するかを確認したい場合はfile_exists()関数の利用も検討してください。サンプルコードの__FILE__は現在のスクリプト、__DIR__はスクリプトのあるディレクトリのフルパスを示す定数です。一時ファイルを生成する際は、unlink()関数で必ず削除し、不要なファイルが残らないように注意しましょう。パスの指定は絶対パス、相対パスのどちらでも可能ですが、意図しないファイルにアクセスしないよう、特にウェブ環境では細心の注意を払ってください。

関連コンテンツ