array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'zh', ), 'this' => array ( 0 => 'function.realpath.php', 1 => 'realpath', ), 'up' => array ( 0 => 'ref.filesystem.php', 1 => '文件系统函数', ), 'prev' => array ( 0 => 'function.realpath-cache-size.php', 1 => 'realpath_cache_size', ), 'next' => array ( 0 => 'function.rename.php', 1 => 'rename', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'zh', 'path' => 'reference/filesystem/functions/realpath.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
realpath — 返回规范化的绝对路径名
realpath() 扩展所有符号连接,并处理输入
path
中的 /./
、/../
和多余的
/
,并返回规范化的绝对路径名。
path
要处理的路径。
注意:
虽然必须提供路径,但该值可以是一个空字符串。 在这种情况下,该值将被解释为当前目录。
成功时返回规范化的绝对路径名。返回的路径中没有符号连接(symbolic link)、/./
或 /../
成分。
例如 \
和 /
这样的尾随分隔符也将被删除。
realpath() 失败时返回 false
,例如文件不存在。
注意:
当前运行的脚本必须对要处理的路径中的每层目录都具有可执行权限,否则 realpath() 将返回
false
。
注意:
对于不区分大小写的文件系统,realpath() 不一定会规范字符大小写。
注意:
realpath() 函数不适用于 Phar 内的文件,因为该路径是虚拟路径,而不是真实路径。
注意:
在 Windows 上,目录的结点和符号链接仅扩展一级。
注意: 因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型,对 2GB 以上的文件,一些文件系统函数可能返回无法预期的结果。
示例 #1 realpath() 例子
<?php
chdir('/var/www/');
echo realpath('./../../etc/passwd') . PHP_EOL;
echo realpath('/tmp/') . PHP_EOL;
?>
以上示例会输出:
/etc/passwd /tmp
示例 #2 Windows 上的 realpath()
在 Windows 上,realpath() 会将 unix 风格的路径改成 Windows 风格。
<?php
echo realpath('/windows/system32'), PHP_EOL;
echo realpath('C:\Program Files\\'), PHP_EOL;
?>
以上示例会输出:
C:\WINDOWS\System32 C:\Program Files