tech.chakapoko.com
Home / PHP / ファイル操作

[PHP]ファイルの情報を調べる

ファイルが存在するかを調べる

ファイルが存在するかを調べるには file_exists 関数を使います。

$bool = file_exists('test.txt');

ファイルがディレクトリかを調べる

ファイルがディレクトリかどうかを調べるには is_dir 関数を使います。

$bool = is_dir('test.txt');

ファイルか通常のファイルかを調べる

ファイルが通常のファイルかどうかを調べるには is_file 関数を使います。

$bool = is_file('test.txt');

ファイルかシンボリックリンクかを調べる

ファイルがシンボリックリンクかどうかを調べるには is_link 関数を使います。

$bool = is_link('test.txt');

ファイルが読み込み可能かを調べる

ファイルが読み込み可能かを調べるには is_readable 関数を使います。

$bool = is_readable('test.txt');

ファイルが書き込み可能かを調べる

ファイルが書き込み可能かを調べるには is_writable 関数を使います。

$bool = is_writable('test.txt');

ファイルが実行可能かを調べる

ファイルが実行可能かを調べるには is_executable 関数を使います。

$bool = is_executable('test.txt');

ファイルのサイズを取得する

ファイルのサイズを取得するには filesize 関数を使います。

<?php
$size = filesize("test.txt");

echo $size . "\n";

ファイルの最終アクセス時刻を取得する

ファイルの最終アクセス時刻を取得するには fileatime 関数を使用します。

時間はUNIXタイムスタンプとして返されるので、date 関数などを使って文字列に変換できます。

<?php
$atime = fileatime("test.txt");

echo date('Y-m-d H:i:s', $atime);

ファイルの更新時刻を取得する

ファイルの更新時刻を取得するには filemtime 関数を使用します。

時間はUNIXタイムスタンプとして返されるので、date 関数などを使って文字列に変換できます。

<?php
$mtime = filemtime("test.txt");

echo date('Y-m-d H:i:s', $mtime);

ファイルのinode変更時刻を取得する

ファイルのinode変更時刻を取得するには filectime 関数を使用します。

時間はUNIXタイムスタンプとして返されるので、date 関数などを使って文字列に変換できます。

<?php
$ctime = filectime("test.txt");

echo date('Y-m-d H:i:s', $ctime);

ファイルのパーミッションを取得する

ファイルのパーミッションは fileperms 関数の結果からパーミッション情報を抜き出すことで取得できます。

<?php
$perms = fileperms("test.txt") & 0777;

printf("%o\n", $perms);

ファイルの所有者を取得する

ファイル所有者のIDを取得するには fileowner 関数を利用します。

取得したIDは posix_getpwuid 関数を使って所有者名に変換できます。

<?php
$owner_id = fileowner("test.txt");

$owner = posix_getpwuid($owner_id);

echo $owner_id . "\n";
echo $owner['name'] . "\n";

ファイルのグループを取得する

ファイルのグループIDを取得するには filegroup 関数を利用します。

取得したグループIDは posix_getgrgid 関数を使ってグループ名に変換できます。

<?php
$group_id = filegroup("test.txt");
$group = posix_getgrgid($group_id);

echo $group_id;
echo $group['name'];

ファイルタイプを取得する

ファイルタイプを取得するには filetype 関数を使います。

fifo、char、dir、 block、link、file、socket および unknownのいずれかの値が返されます。

<?php
$type = filetype("test.txt");

echo $type . "\n";

ファイルに関する情報を取得する

stat 関数を使うとファイルに関する様々な統計情報が取得できます。

<?php
$stat = stat("test.txt");

echo $stat['dev'] . "\n"; // デバイス番号
echo $stat['ino'] . "\n"; // inode 番号
echo $stat['mode'] . "\n"; // inode プロテクトモード
echo $stat['nlink'] . "\n"; // リンク数
echo $stat['uid'] . "\n"; // ユーザーID
echo $stat['gid'] . "\n"; // グループID
echo $stat['rdev'] . "\n"; // inode デバイス の場合、デバイスの種類
echo $stat['size'] . "\n"; // サイズ
echo $stat['atime'] . "\n"; // 最終アクセス時刻
echo $stat['mtime'] . "\n"; // 最終更新時刻
echo $stat['ctime'] . "\n"; // 最終inode変更時刻
echo $stat['blksize'] . "\n"; // ファイルIOのブロックサイズ
echo $stat['blocks'] . "\n"; // 512 バイトのブロックの確保数

statの結果はキャッシュされます。キャッシュを消すには clearstatcache 関数を使います。

stat の他にファイルをオープンして、そのポインタを利用して情報を得る fstat 関数もあります。

<?php
$f = fopen('a.php', 'r');

$stat = fstat($f);

fclose($f);

stat 関数はファイルがシンボリックリンクだった場合、リンク先のファイルに関する情報を返します。シンボリックリンク自体の情報が欲しい場合は stat 関数ではなく lstat 関数を使います。

ファイルの inode を取得する

ファイルの inode を取得するには fileinode 関数を使います。

<?php
$inode = fileinode('a.php');

echo $inode . "\n";