Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在phar文件代码中获取.phar文件的真实目录?_Php_Command Line Interface_Phar - Fatal编程技术网

Php 如何在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:///

我试图创建一个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:///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即可。”