php - 如何在执行的 phar 中获取 phar 存档元数据?

标签 php metadata phar

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

我可以获得如下所示的元数据,但是我在执行的 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 保留已加载的 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 文件的元数据。

关于php - 如何在执行的 phar 中获取 phar 存档元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35344338/

相关文章:

php - password_verify 返回 false

ios - 将元数据添加到我的图像并将其保存在文档目录中

php - 如何安装 Pecl Phar? (得到错误)

php - 我可以将 PHPUnit 打包为 phar 吗?

php - 帮我调试我的 SQL INSERT,好吗?

php - 在 MS Access PDO 查询中绑定(bind)日期字符串参数

php - 无法在 PHP 中删除 MySQL 表中的行内容?

ios - 我应该在回复元数据拒绝后重新提交二进制文件吗?

python - 使用 Beautiful Soup 获取特定的 tr 元数据

PHP Phar安装