如何在 phar 文件代码中获取 .phar 文件真实目录


how to get a .phar file real directory within the phar file code?

我正在尝试创建一个php可执行文件(phar文件)来生成一些文件,我想知道如何获取phar文件的真实路径(在phar文件代码中)。

我想做的是在phar文件的同一级别创建一个文件夹并在那里创建新文件,但realpath(__DIR__.'/../')似乎不起作用。

谢谢

如 https://stackoverflow.com/a/28775172/282601 所示,__FILE__常量具有该方案的完整路径:

phar:///home/cweiske/Dev/test/phar/test.phar/path/to/foo.php

__DIR__类似:

phar:///home/cweiske/Dev/test/phar/test.phar/path/to

因此,在调用realpath(__DIR__)时,您仍然具有阻止您加载文件的 phar:// 前缀。

您必须删除phar://方案以及.phar内文件的路径才能获得带有__DIR__的phar位置。


Phar::running(false) 更容易,它只是返回路径:

/home/cweiske/Dev/test/phar/test.phar

答案是

 $string = 'phar://E:/php/www/my.phar';
 $string = pathinfo($string);
 $_dir_ = parse_url($string['dirname']);
 echo $_dir_['host'].':/'.$_dir_['path'];

结果

E:/php/www