如何在执行的phar中获取phar归档元数据?

mku*_*gla 6 php metadata phar

我已经将PHP应用程序打包成可执行的Phar存档,并且在一个Class内部有一个方法,该方法应该访问已执行的Phar archive元数据.

我可以获得如下所示的元数据,但是为了获得它的元数据,我PharPhar archive执行中加载相同的内容似乎很奇怪.

那么,有没有正确的路怎么走执行的Phar的元数据?也许读它并在Phar的Stub里面定义一些东西.

<?php
namespace MyPhar;
use \Phar;

class InsideThePhar {
    public function getPharMetaData() {
        $phar_self = new Phar(Phar::running(false));
        $metadata = $phar_self->getMetadata();
        var_dump($metadata);
        exit();
    }
}
Run Code Online (Sandbox Code Playgroud)

cwe*_*ske 1

PHP 保留已加载的 phar 文件的缓存,请参阅http://git.php.net/?p=php-src.git;a=blob;f=ext/phar/phar.c;h=65ebce0f0856fc5a90a62d32dd0bb5c00627706f;hb=头#l96

打开 phar 文件时会使用缓存,因此它不像打开完全不同的 phar 文件那么昂贵。


不,从 PHP 7.2 开始,没有更好的方法来获取当前“正在运行”的 phar 文件的元数据。