所以我有以下路径:/my_user/path/to/dir
,当我将它传递给file_exists()
,效果很好。
但是,当我将其更改为~username/path/to/dir
,它返回 false。
realpath("~username/path/to/dir")
也返回 false。
有什么问题吗?
Note:这不是重复的如何从 PHP CLI 脚本获取主目录?因为我更好奇为什么波浪线不起作用,而不是如何解决它。
波形符扩展是一个 shell 功能,因此不可能在 shell(或开发人员选择在其中实现此 shell 功能的另一个程序)上下文之外使用它,因为它不是文件系统或文件系统任何其他部分所固有的。操作系统。
该行为定义在POSIX 规范第 2.6.1 节。该章的引言指出:
shell 是一个命令语言解释器。本章描述了该命令语言的语法,因为它被使用sh
效用和system()
and popen()
POSIX.1-2017 系统接口卷中定义的函数。
如果你想使用这样的文件名,你可以使用 PHP 的一些内置函数来扩展它:
<?php
$dir = "~username/bar/baz/";
$dirparts = explode("/", $dir);
array_walk(
$dirparts,
function(&$v, $k) {
if ($v[0] ?? "" === "~") $v = posix_getpwnam(substr($v, 1))["dir"] ?? $v;
}
);
$expanded = implode("/", $dirparts);
echo $expanded;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)