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

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

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

我想做的是在phar文件的同一层创建一个文件夹,然后在那里创建新文件,但是realpath(__DIR__.'/../')好像不行。

谢谢

如 所示,__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),它只是 returns 路径:

/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