Php 如何在phar文件代码中获取.phar文件的真实目录?
我试图创建一个php可执行文件(phar文件)来生成一些文件,我想知道如何获取phar文件的真实路径(在phar文件代码中) 我想做的是在phar文件的同一级别创建一个文件夹,并在那里创建新文件,但是Php 如何在phar文件代码中获取.phar文件的真实目录?,php,command-line-interface,phar,Php,Command Line Interface,Phar,我试图创建一个php可执行文件(phar文件)来生成一些文件,我想知道如何获取phar文件的真实路径(在phar文件代码中) 我想做的是在phar文件的同一级别创建一个文件夹,并在那里创建新文件,但是realpath(\uuu DIR\uu.'/../')似乎不起作用 谢谢如\uuuu文件所示常量具有方案的完整路径: phar:///home/cweiske/Dev/test/phar/test.phar/path/to/foo.php \uuuu DIR\uuuu与此类似: phar:///
realpath(\uuu DIR\uu.'/../')
似乎不起作用
谢谢如\uuuu文件所示
常量具有方案的完整路径:
phar:///home/cweiske/Dev/test/phar/test.phar/path/to/foo.php
\uuuu DIR\uuuu
与此类似:
phar:///home/cweiske/Dev/test/phar/test.phar/path/to
因此,在调用realpath(\uuuu DIR\uuuu)
时,仍然有phar://
前缀阻止加载文件
您必须删除phar://
方案以及.phar
中的文件路径,才能使用\uuuu DIR\uuu
获取phar位置
更简单的是,它只返回路径:
/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
只获取当前文件的路径,而不获取相对文件或其他文件的路径。Phar::running
和\uu file\uuuuu
的行为会在Phar存根的上下文中发生变化。在这些情况下,Phar::running(true/false)
将始终返回'
,而\uuuuu FILE\uuuu
将返回Phar路径,但在开始时不返回Phar://
。“在存档的存根中,Phar::running()返回”“。只需使用_FILE__;访问存根中当前正在运行的Phar即可。”