fileowner() 直接返回文件所有者的数字 UID,Windows 下恒为 -1;需检查返回值是否为 false 而非逻辑假,配合 getmyuid() 可判断进程与文件同属一用户,但权限还受 chmod 和安全模块约束。
PHP 怎么用 fileowner() 获取文件所属用户 ID
fileowner() 是最直接的方式,它返回文件系统中该文件所有者的 UID(数字形式),不是用户名。注意:在 Windows 上始终返回 -1,因为 NTFS 不使用 Unix 风格的 UID 概念。
实操要点:
- 必须确保 PHP 进程有权限读取文件元数据(例如 Web 服务器用户如
www-data能stat该路径) - 路径必须是真实存在的文件或目录,对符号链接默认解析目标(除非系统禁用 follow symlink)
- 返回值是整型 UID,如
1001;失败时返回false,需用=== false判断,不能只用!fileowner(...) - 示例:
<?php $uid = fileowner('/var/www/html/index.php'); if ($uid !== false) { echo "Owner UID: $uid"; } else { echo "Failed to get owner"; }
为什么 fileowner() 返回的是数字而不是用户名
Unix/Linux 文件系统在 inode 层面只存储 UID/GID 数字,用户名是用户数据库(/etc/passwd)里的映射。PHP 不自动查表转换,避免依赖 NSS 配置或权限问题。
如果需要用户名,得手动查: