PHP stat 函数
最后修改于 2025 年 4 月 3 日
PHP stat
函数用于检索文件状态信息。它返回一个包含文件或符号链接详细统计信息的数组。
基本定义
stat
函数收集文件信息。它返回一个包含数值和字符串索引的关联数组,其中包含文件统计信息。
语法:stat(string $filename): array|false
。失败时返回 false。该数组包含 13 个元素,同时具有数值和命名键。
基本 stat 示例
此示例显示了如何使用 stat
获取基本文件信息。
basic_stat.php
<?php declare(strict_types=1); $file = 'example.txt'; $stats = stat($file); if ($stats !== false) { echo "File size: " . $stats['size'] . " bytes\n"; echo "Last modified: " . date('Y-m-d H:i:s', $stats['mtime']); }
这将检索文件大小和修改时间。size
以字节为单位,mtime
是转换为可读格式的 Unix 时间戳。
检查文件类型
我们可以使用 stat
来确定路径是文件还是目录。
file_type.php
<?php declare(strict_types=1); $path = 'example.txt'; $stats = stat($path); if ($stats !== false) { $mode = $stats['mode']; if (($mode & 0x4000) === 0x4000) { echo "This is a directory"; } else { echo "This is a regular file"; } }
这会检查文件模式位以确定类型。位掩码 0x4000 在类 Unix 系统中标识目录。
文件权限
stat
可用于检查文件权限。
file_permissions.php
<?php declare(strict_types=1); $file = 'example.txt'; $stats = stat($file); if ($stats !== false) { $permissions = $stats['mode'] & 0777; echo "Permissions: " . decoct($permissions); }
这会从模式中提取权限位。八进制表示显示了类似 644 或 755 的 Unix 风格权限。
文件访问时间
该函数提供三种不同的文件访问时间戳。
file_times.php
<?php declare(strict_types=1); $file = 'example.txt'; $stats = stat($file); if ($stats !== false) { echo "Created: " . date('Y-m-d H:i:s', $stats['ctime']) . "\n"; echo "Modified: " . date('Y-m-d H:i:s', $stats['mtime']) . "\n"; echo "Accessed: " . date('Y-m-d H:i:s', $stats['atime']); }
这将显示创建、修改和访问时间。请注意,在 Unix 上 ctime
是 inode 更改时间,而不是创建时间。
符号链接统计
stat
默认会跟踪符号链接。使用 lstat
获取链接信息。
symlink_stats.php
<?php declare(strict_types=1); $link = 'symlink_to_file'; $stats = lstat($link); if ($stats !== false) { echo "Link size: " . $stats['size'] . " bytes\n"; echo "Is symlink: " . (is_link($link) ? 'Yes' : 'No'); }
这显示了如何获取符号链接本身而不是目标文件的信息。这里的 size
是链接路径的长度。
最佳实践
- 错误处理: 始终检查 stat 是否返回 false。
- 性能: 缓存结果以便重复访问。
- 安全: 在处理路径之前进行验证。
- 跨平台: 注意系统差异。
来源
本教程通过实际示例介绍了 PHP stat
函数,展示了其在文件信息检索中的用法。
作者
列出 所有 PHP 文件系统函数。