ZetCode

PHP fileinode 函数

最后修改于 2025 年 4 月 3 日

PHP 的 fileinode 函数用于检索文件的 inode 号。Inode 是类 Unix 文件系统中用于存储文件元数据的唯一标识符。

基本定义

fileinode 函数返回指定文件的 inode 号。它接受一个参数:文件名(字符串)。

语法:fileinode(string $filename): int|false。成功时返回 inode 号,失败时返回 false。要求文件存在且可访问。

基本的 fileinode 示例

这展示了 fileinode 最简单的用法,用于获取文件的 inode。

basic_fileinode.php
<?php

declare(strict_types=1);

$filename = "example.txt";
$inode = fileinode($filename);

if ($inode !== false) {
    echo "Inode number: " . $inode;
} else {
    echo "Could not get inode number";
}

这将检索并显示 "example.txt" 的 inode 号。如果文件不存在或无法访问,该函数将返回 false。

检查文件标识

Inode 可用于检查两个路径是否指向同一个物理文件。

file_identity.php
<?php

declare(strict_types=1);

$file1 = "original.txt";
$file2 = "hardlink.txt";

$inode1 = fileinode($file1);
$inode2 = fileinode($file2);

if ($inode1 === $inode2) {
    echo "Files are the same (hardlinked)";
} else {
    echo "Files are different";
}

这将比较 inode 以确定文件是否是硬链接。具有相同 inode 的文件在磁盘上共享相同的数据。

目录 Inode 示例

fileinode 函数不仅适用于普通文件,也适用于目录。

directory_inode.php
<?php

declare(strict_types=1);

$dir = "/var/www";
$inode = fileinode($dir);

if ($inode !== false) {
    echo "Directory inode: " . $inode;
} else {
    echo "Could not get directory inode";
}

这获取了目录的 inode 号。在类 Unix 系统中,目录只是具有自己 inode 的特殊文件。

错误处理

在使用文件系统函数时,适当的错误处理非常重要。

error_handling.php
<?php

declare(strict_types=1);

$filename = "nonexistent.txt";
$inode = fileinode($filename);

if ($inode === false) {
    echo "Error: File not found or permission denied";
    // Additional error handling here
} else {
    echo "Inode: " . $inode;
}

这演示了正确的错误检查。在使用 inode 号之前,请始终验证返回值不是 false。

比较文件

Inode 可以帮助在不打开文件的情况下比较文件。

compare_files.php
<?php

declare(strict_types=1);

function areSameFile(string $file1, string $file2): bool {
    $inode1 = fileinode($file1);
    $inode2 = fileinode($file2);
    
    return $inode1 !== false && $inode2 !== false && $inode1 === $inode2;
}

$result = areSameFile("file1.txt", "file2.txt");
echo $result ? "Same file" : "Different files";

此函数使用 inode 来检查两个路径是否引用同一文件。比比较路径更可靠,因为路径可能因符号链接或硬链接而异。

最佳实践

来源

PHP fileinode 文档

本教程通过实际示例介绍了 PHP 的 fileinode 函数,展示了其在不同场景下的用法。

作者

我叫 Jan Bodnar,是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 文件系统函数