PHP realpath 函数
最后修改于 2025 年 4 月 3 日
PHP 的 realpath 函数从相对或符号路径解析绝对规范路径。 它扩展了所有符号链接并解析了路径组件。
基本定义
realpath 函数返回绝对规范化路径名。 它解析所有符号链接、'/./'、'/../' 和额外的 '/' 字符。
语法:realpath(string $path): string|false。 成功时返回绝对路径,失败时返回 false。 该函数是二进制安全的。
基本的 realpath 示例
这展示了 realpath 的最简单用法,用于解析相对路径。
basic_realpath.php
<?php declare(strict_types=1); $path = "../config/settings.ini"; $absolute = realpath($path); echo $absolute; // Outputs absolute path like: /home/user/project/config/settings.ini
这会将相对路径转换为绝对路径。 确切的输出取决于您的文件系统结构。 如果路径不存在,该函数将返回 false。
解析符号链接
realpath 将符号链接解析为其实际路径。
symlink_resolution.php
<?php declare(strict_types=1); // Assuming /var/www is a symlink to /srv/www $path = "/var/www/html/index.php"; $absolute = realpath($path); echo $absolute; // Outputs: /srv/www/html/index.php
这里,该函数将符号链接解析为实际路径。 这对于获取符号链接背后文件的真实位置很有用。
处理不存在的路径
当路径不存在时,realpath 返回 false。
nonexistent_path.php
<?php declare(strict_types=1); $path = "/nonexistent/path/to/file.txt"; $absolute = realpath($path); var_dump($absolute); // Outputs: bool(false)
在使用返回值之前,请务必检查它。 这可以防止在使用可能在您的文件系统中不存在的路径时出现错误。
解析相对组件
该函数解析相对路径组件,例如 '../' 和 './'。
relative_components.php
<?php declare(strict_types=1); $path = "/var/www/../tmp/./file.log"; $absolute = realpath($path); echo $absolute; // Outputs: /tmp/file.log
这将 '/var/www/../tmp' 解析为 '/tmp',将 './file.log' 解析为 'file.log'。 结果是最简单的绝对路径表示形式。
Windows 路径示例
realpath 适用于使用反斜杠的 Windows 路径。
windows_path.php
<?php declare(strict_types=1); $path = "C:\\Windows\\System32\\..\\notepad.exe"; $absolute = realpath($path); echo $absolute; // Outputs: C:\Windows\notepad.exe
该函数正确处理 Windows 风格的路径并解析父目录引用。 它适用于正斜杠和反斜杠。
最佳实践
- 错误检查: 始终检查返回值是否为 false。
- 安全性: 在文件操作之前用于路径验证。
- 性能: 频繁使用时缓存结果。
- 跨平台: 在不同操作系统上一致运行。
来源
本教程介绍了 PHP realpath 函数,并提供了实用示例,展示了它在不同场景中的用法。
作者
列出 所有 PHP 文件系统函数。