我的 Phar 脚本使用 fwrite 创建一个新文件,效果很好,它在 phar 外部创建新文件,与 phar 文件位于同一目录中。
但是当我使用 if(file_exists('file.php')) 它不会拾取它。
但随后包含并要求确实选择它。
有人知道这个问题吗?
经过一段时间的测试和研究,似乎找不到解决方案。
在 PHAR 的存根处,您可以使用__DIR__
获取 PHAR 文件文件夹的神奇常量。
考虑到这一点,您可以简单地使用
is_file(__DIR__ . DIRECTORY_SEPARATOR . $path);
检查 PHAR 之外的文件是否存在。
您只能从存根执行此操作,并且仅当它是自定义存根(而不是由 Phar::setDefaultStub() 生成的存根)时。如果您需要进一步检查文件,则必须以某种方式提供该常量的值,例如全局变量、自定义非魔法常量或静态属性或其他文件,然后其他文件会参考这些值。
编辑:实际上,你也可以使用dirname(Phar::running(false))
从 PHAR 中的任何位置获取 PHAR 的文件夹。如果您不在 PHAR 中,该函数会返回一个空字符串,因此无论您的应用程序是作为 PHAR 还是直接执行,它都应该可以正常工作,例如
$pharFile = Phar::running(false);
is_file(('' === $pharFile ? '' : dirname($pharFile) . DIRECTORY_SEPARATOR) . $path)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)