On the linux kernel, COW filesystems like BTRFS, BcacheFS, etc Inode numbers are not usable to determine if something is the same file.
This is intentional.
(PHP 4, PHP 5, PHP 7, PHP 8)
fileinode — ファイルの inode を取得する
filename
ファイルへのパス。
ファイルの inode 番号を返し、失敗した場合に false
を返します。
失敗したときは E_WARNING
が発生します。
例1 現在のファイルとのファイルの inode の比較
<?php
$filename = 'index.php';
if (getmyinode() == fileinode($filename)) {
echo 'You are checking the current file.';
}
?>
注意: この関数の結果は キャッシュされます。詳細は、clearstatcache() を参照してください。
PHP 5.0.0
以降、この関数は、
何らかの URL ラッパーと組合せて使用することができます。
どのラッパーが stat() ファミリーをサポートしているかを調べるには
サポートするプロトコル/ラッパー を参照してください。
On the linux kernel, COW filesystems like BTRFS, BcacheFS, etc Inode numbers are not usable to determine if something is the same file.
This is intentional.
As documented in https://www.php.net/manual/en/function.stat.php#refsect1-function.stat-returnvalues:
> On Windows, as of PHP 7.4.0, this is the identifier associated with the file, which is a 64-bit unsigned integer, so may overflow. Previously, it was always 0.
It appears that fileinode shares the same underlying implementation.