【问题标题】:how to convert a php script into a phar file?如何将php脚本转换为phar文件?
【发布时间】:2015-11-24 19:22:24
【问题描述】:

项目的目标是将一个php脚本转换成.phar

我的项目是由: 1 个将类调用到 /lib 和 /database 的单个 index.php 文件夹

我们的目标是尽可能少地分发文件(最好是 2 个:index.php 和 assets.phar,这将包括 /lib 和 /database 中的所有文件)甚至 1 个(index.phar)

我尝试使用 empir 并取得了任何成功:以前有人这样做过吗?

有教程吗?

【问题讨论】:

    标签: php phar


    【解决方案1】:

    使用the Phar class。比如把这个放在compress.php:

    $phar = new Phar('index.phar');
    $phar->addFile('index.php');
    $phar->buildFromDirectory('lib');
    $phar->buildFromDirectory('database');
    

    从命令行运行php compress.php。瞧,你有一个 Phar。

    【讨论】:

    • 我该如何使用这个 phar 文件?如何执行?
    • @user300675:PHP 应该能够像任何其他 PHP 文件一样运行它。我尝试 Pharring 一个我知道在命令行上工作的小 PHP 脚本,并使用 php index.phar 运行结果,它正常工作。如果您将其配置为将 .phar 识别为 PHP,则在 Web 服务器上的操作应该同样顺利。
    【解决方案2】:

    我使用以下脚本:

    <?php
    $phar = new \Phar(__DIR__ . '/index.phar');    
    $phar->startBuffering(); // For performance reasons. Ordinarily, every time a file within a Phar archive is created or modified in any way, the entire Phar archive will be recreated with the changes.  
    $phar->addFile('index.php');
    $phar->addFile('composer.json');
    $phar->addFile('composer.lock');
    $phar->buildFromDirectory(__DIR__ . '/vendor');
    $phar->stopBuffering();
    

    运行以下命令运行之前的脚本:

    $ php -dphar.readonly=0 index.php
    

    (在 PHP 中默认禁用创建 phar 档案。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 2011-06-18
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多