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