当使用包含 ~、波形符的路径时,file_exists() 返回 false

2023-12-05

所以我有以下路径:/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(使用前将#替换为@)

当使用包含 ~、波形符的路径时,file_exists() 返回 false 的相关文章

  • 带单引号的 XPATH 查询[重复]

    这个问题在这里已经有答案了 有人知道如何解决这个问题吗 单引号让我陷入困境 nodes xml gt xpath item contains catalog Billy s Blogs title 我尝试以各种方式逃避它 但都抛出错误 no
  • Ace Editor 自动完成和多种语言

    如何为 Ace 编辑器创建自动完成功能以及如何突出显示 php 中的 html javascript 和 csshttp ace ajax org http ace ajax org
  • CodeIgniter加入选择为

    我的数据库中有 2 个表需要加入 一张表是 artikelen 表 另一张表是 Collections 表 我目前有 this gt db gt select this gt db gt from collecties this gt db
  • php / phpDoc - @return $this 类的实例?

    如何在 phpDoc 中将方法标记为 返回当前类的实例 在下面的示例中 我的 IDE Netbeans 将看到 setSomething 始终返回foo object 但如果我扩展对象 情况就不是这样了 它会返回 this 在第二个示例中是
  • 测试 CodeIgniter 会话变量的正确方法是什么?

    获取以下代码片段 测试确保会话变量不为空的最佳方法是什么 如果稍后在我的脚本中 我调用以下内容 第一个打印正确 但在第二个我收到消息 未定义的变量 已登录 我尝试过使用 empty and isset 但两者均未成功 我还尝试使用向后执行
  • 统计数据库中的注册用户数

    我想反映在我的网站上注册的人数 只有我拥有的代码不起作用 它让我知道它不可能 转换为字符串 另外 当我将其设置为在 HTML 中调用的函数时 我收到 connection 未定义的错误 require once connect php sq
  • Laravel 5.7:维护模式的自定义刀片模板,但不是 503.blade.php

    每次php artisan down开启后 Laravel 显示 503 页面 好的 我可以通过创建名为的新文件来自定义它503 blade php inside resources views errors 关键是 我在任何时候都不认为维
  • 如何从文件中获取整个函数

    好的 我现在正在逐行阅读一个文件 我知道文件中的每个函数名称 因为它是在 XML 文档中的其他位置定义的 应该是这样的 function function name 其中 function name 是函数的名称 我从 XML 文档中获取所
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • 软删除最佳实践(PHP/MySQL)

    Problem 在处理产品和订单的 Web 应用程序中 我想维护前员工 用户 与他们处理的订单之间的信息和关系 我想维护过时产品和包含这些产品的订单之间的信息和关系 然而 我希望员工能够整理管理界面 例如删除前员工 过时的产品 过时的产品组
  • 如何通过开始索引和结束索引提取子字符串?

    str HelloWorld sub substr str 3 5 echo sub prints loWor 我知道 substr 采用第一个参数 第二个参数是开始索引 而第三个参数是要提取的子字符串长度 我需要的是通过提取子字符串起始索
  • 类 Doctrine\Common\Collections\ArrayCollection 不是有效的实体或映射的超类

    我有三个实体 特征值 php
  • WordPress 子主题覆盖父主题包括

    我正在创建 WordPress 子主题 需要覆盖某些小部件模板 我正在尝试使用此方法来覆盖父主题调用 覆盖主题功能的正确方法 http www venutip com content right way override theme fun
  • PHP 使用主键和辅助键对多维数组进行排序[重复]

    这个问题在这里已经有答案了 如何按主键和辅助键对多维数组进行排序 例如 假设有以下数组 result array result 0 prio 1 result 0 date 2010 02 28 result 0 post February
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • Yii2 组件将数据传递给 __construct

    我有一个库 我想将其用作组件 在配置文件中我这样设置 components gt superLib gt class gt SuperLib construct gt first second Maybe Yii 2 have proper
  • 检查字符串是否编码为 UTF-8

    function seems utf8 str length strlen str for i 0 i lt length i c ord str i if c lt 0x80 n 0 0bbbbbbb elseif c 0xE0 0xC0
  • MySQL如何从多个表中获取数据

    我正在寻找 php MySQL jquery 的帮助 我有2张桌子 table1表 1 有 4 列 id 标题 desc thumb img tabel2表 2 有 3 列 id 表 id img 我只想将 2 个表与 get QS 的值进
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 当php脚本通过ajax运行时显示进度条

    我有一个通过 ajax 向服务器提交值的表单

随机推荐

  • Python继承结构和参数

    我正在尝试设计一个类结构 允许用户定义自己的类 以重载其他类中的预定义方法 在这种情况下 用户将创建 C 类来重载 D 中的 函数 方法 用户创建的 C 类与其他用户创建的类 A 和 B 具有共同的逻辑 因此它们继承自 C 来重载 函数 但
  • 将测试路径输出重定向到文本文件

    txt 文件只是一堆 UNC 路径 我试图在验证测试路径后将此文本文件中的 UNC 路径列表放入另一个文本文件中 它在屏幕上显示经过验证的路径 但不会填充文本文件 cfgs Get Content cfgpath txt cfgs if T
  • 本地序列不能在查询运算符的 LINQ to SQL 实现中使用(Contains() 运算符除外)

    我在我的项目中使用 LINQ 我的代码是 var SE from c in Shop Sections join c1 in obj SectionObjects on c SectionId equals c1 SectionId sel
  • 为什么我们不能在派生类中使用带参数的构造函数

    为什么这是不可能的 使用构造函数参数实例化 DerivedClass 时出现以下编译器错误 GenericParameterizedConstructor DerivedClass 不包含采用 1 个参数的构造函数 但调用一个非常相似的方法
  • 嵌套环境变量

    我正在尝试制作一个文件 要求您提供用户名和密码并进行注册 注册时 密码保存在变量中 问题是我必须为这些变量设置名称 这些名称将在您写下用户名时输入 例如 我需要用户 john 的密码 当用户写下用户名 john 时 它会存储在变量中 use
  • 表格视图中的滚动底部和性能

    我需要滚动到底部 我有一个聊天应用程序 例如 Whatsapp 因此 当视图出现时 表视图应该显示最后一行 我通过以下行实现了这一点并且效果很好 tableView setContentOffset CGPointMake 0 CGFloa
  • 如何用 Javascript 改变 CSS 样式?

    我有一个像这样的数组 var colors 1 FFFF00 2 FF0000 3 80FF00 4 00FFFF 5 FF00FF JavaScript 是这样的 var color Math floor Math random 5 1
  • 使用 MapStruct 将抽象类映射到 DTO

    我发现了很多与此相关的主题 但在我看来 所有解决方案都走向了错误的方向 那么 在这种情况下我该如何使用 MapStruct 映射 抽象类人 public abstract class Person implements Serializab
  • VB.NET:如何知道哪个系统空闲的时间?

    我正在制作一个正在实施的应用程序自动监控关闭当系统空闲时 即当用户未与系统交互时 我找到了一个链接 http www codeproject com KB system SystemIdleTimerComponent aspx 它确实提供
  • kableextra 表列中的背景颜色

    我有一个简单的 RMarkdown 文档 以 pdf 格式导出 其中包含一个只有 2 列的 kablextra 表 参见图片 我试图将两列的背景设置为蓝色阴影 其中高值用较深的颜色表示 低值用较浅的颜色表示 值的顺序不能更改 因为它们代表月
  • 如何判断两个字符串数组是否等于其他数组[重复]

    这个问题在这里已经有答案了 可能的重复 比较两个 List 是否相等 如何判断两个字符串数组是否相等 我用过这个 但它不起作用 即使两者的内容相同 string array1 new string A B string array2 new
  • 如何通过 flutter 从网站或(网络抓取)收集数据?

    我需要进行网络抓取并从网站收集数据https ipcost com并在我的 Flutter 应用程序中使用收集到的数据 在本例中为我的 IP 详细信息 我的问题是如何获取这些信息并将其显示在用户界面中 我尝试了 web scraper 包
  • 如何确定哪一行导致了 404 错误?

    对于 GET 请求 我遇到了严重的重复错误 404 not found 该调用在 JavaScript 控制台中看起来像这样 GET some path undefined 404 Not Found 它右边的所有内容是 undefined
  • MySQL - 如果表不存在则忽略查询

    我有这张桌子叫tableA它可能不存在于某些数据库中 我希望在执行此操作时忽略选择查询语句tableA数据库中不存在 我尝试从信息模式中选择计数 但其中之一if else声明仍然有select from tableA 这仍然会给我一个错误
  • NSNumberFormatter 用于舍入浮点值

    我有一个 CGFloat 值 我想将其四舍五入到小数点后 3 位数字 我该怎么做 Thanks NSString value NSString stringWithFormat 3f theFloat
  • Grails 2.1 单元测试命令对象 mockForConstraintsTests 不起作用?

    我对此命令对象使用了手动编写以及 Grails 生成的单元测试 package myapp grails validation Validateable class SearchCommand String basisBuild Strin
  • 在 gdb 中调用 std::~basic_string()

    根据 EvanED 在https stackoverflow com a 11311786 890753我创建了一个gdb命令newstr创建一个新的 std string 并将其放入 gdb 便利变量中 define newstr set
  • 在 Python 中使用用户输入调用/选择变量(浮点值)

    我一直在从事一个计算物理项目 绘制化学反应物之间的相关速率以显示振荡行为 并取得了相当大的成功 然而 我的一个模拟涉及两个以上的主动振荡剂 实际上是五个 这显然不适合任何单一的视觉图 因此 我的方案是让用户选择他们想要分别在 x 轴和 y
  • 为什么编译器隐式类型转换不适用于作为扩展接口实现的文字类型属性?

    为什么编译器隐式类型转换不适用于作为扩展接口实现的文字类型属性 Example typescript 3 4 5 interface INumContainer num 1 2 class myClass implements INumCo
  • 当使用包含 ~、波形符的路径时,file_exists() 返回 false

    所以我有以下路径 my user path to dir 当我将它传递给file exists 效果很好 但是 当我将其更改为 username path to dir 它返回 false realpath username path to