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 — Liefert die Inode-Nummer einer Datei
filename
Pfad zu der Datei.
Gibt die Inode-Nummer der Datei zurück. Bei einem Fehler wird false
zurückgegeben.
Im Fehlerfall wird eine E_WARNING
ausgegeben.
Beispiel #1 Vergleich des Inodes einer Datei mit dem der aktuellen Datei
<?php
$filename = 'index.php';
if (getmyinode() == fileinode($filename)) {
echo 'Sie prüfen die aktuelle Datei.';
}
?>
Hinweis: Die Ergebnisse dieser Funktion werden zwischengespeichert. Weitere Details sind bei clearstatcache() zu finden.
Seit PHP 5.0.0 kann diese Funktion mit einigen URL-Wrappern benutzt werden. Schauen Sie in der Liste unter Unterstützte Protokolle und Wrapper nach, welcher Wrapper die Funktionalität von stat() unterstützt.
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.