我正在尝试创建一个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