このエントリーをはてなブックマークに追加


PHPでファイルなのかディレクトリなのかを確認する方法

PHPでファイルなのかディレクトリなのかを確認するには以下の関数を使用します。


スポンサーリンク

関連記事

使用したPHPとテスト環境

使用したOSは、CentOS 5.8, PHPは5.1.6になります。

  • OS
    $ lsb_release -idc
    Distributor ID: CentOS
    Description:    CentOS release 5.8 (Final)
    Codename:       Final
  • PHP
    $ php -version
    PHP 5.1.6 (cli) (built: May  7 2012 15:03:06) 
    Copyright (c) 1997-2006 The PHP Group
    Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

ファイルかディレクトリかを確認するサンプルPHPスクリプト

本サンプルPHPスクリプトの動作確認は、コマンドラインから行いました。

<?php
  mkdir('a');
  touch('b');
  /* check a */
  if (is_file('a')) {
    echo 'a is file.' . PHP_EOL;
  }
  if (is_dir('a')) {
    echo 'a is directory' . PHP_EOL;
  }
  /* check b */
  if (is_file('b')) {
    echo 'b is file.' . PHP_EOL;
  }
  if (is_dir('b')) {
    echo 'b is directory' . PHP_EOL;
  }

  rmdir('a');
  unlink('b');
?>

上記のサンプルPHPスクリプトは、aディレクトリ、bファイルを作成しis_file, is_dir関数にてファイルかディレクトリかどうかの確認を行っています。
存在確認後、作成したaディレクトリとbファイルを削除しています。

サンプルPHPスクリプトの実行結果

サンプルPHPスクリプトの実行結果は以下のようになります。
ディレクトリかファイルかの判別がされています。

$ php is_file_dir.php 
a is directory
b is file.

file_exist関数と一緒につかう

ファイルが存在しないのに、is_dir, is_fileを使っても意味がないので、以下のようにすればファイルの存在をチェックしファイルかディレクトリかどうかを確認することができます。

<?php
  mkdir('a');

  if (file_exists('a')) {
    if (is_file('a')) {
      echo 'a is file.' . PHP_EOL;
    } elseif(is_dir('a')) {
      echo 'a is directory.' . PHP_EOL;
    } elseif(is_link('a')) {
      echo 'a is link file.' . PHP_EOL;
    } else {
      echo 'unknown' . PHP_EOL;
    }
  }

  rmdir('a');
?>

備考

シンボリックリンクかどうかは、is_link()関数を使用してください。


スポンサーリンク

添付ファイル: fileis_file_dir.php 374件 [詳細] fileis_file_dir2.php 372件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:36:04