【问题标题】:How to get phar archive meta-data inside of executed phar?如何在执行的phar中获取phar存档元数据?
【发布时间】:2017-06-27 16:20:30
【问题描述】:

我已经将 PHP 应用程序打包到 executable Phar 存档 中,并在一个类中包含一个应该访问已执行的 Phar archive 元数据的方法。

我可以获得如下所示的元数据,但是我在执行的Phar archive 中加载相同的Phar 以获取它的元数据似乎很奇怪。

那么有没有正确的方法来获取执行 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();
    }
}

【问题讨论】:

    标签: php metadata phar


    【解决方案1】:

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

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


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

    【讨论】:

    • 感谢您在发布时指出来源,我找不到它
    猜你喜欢
    • 1970-01-01
    • 2013-10-31
    • 2015-04-10
    • 2018-06-14
    • 2013-02-20
    • 2012-06-20
    • 2015-03-06
    • 2014-04-21
    • 2010-12-07
    相关资源
    最近更新 更多