ZetCode

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 风格的路径并解析父目录引用。 它适用于正斜杠和反斜杠。

最佳实践

来源

PHP realpath 文档

本教程介绍了 PHP realpath 函数,并提供了实用示例,展示了它在不同场景中的用法。

作者

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

列出 所有 PHP 文件系统函数