如何将一个 PHP 脚本转换为 PHAR 文件?

5
该项目的目标是将一个php脚本转换成.phar格式。 我的项目由以下组成: 1个单独的index.php文件,调用/lib和/database文件夹中的类 目标是尽可能少地分发文件(理想情况下只有2个:index.php和assets.phar,后者将包括/lib和/database中的所有文件),甚至只有1个(index.phar)。 我尝试过一些方法但没有成功:有人以前做过吗? 是否有任何可用的教程?
2个回答

6

使用Phar类。例如,将以下内容放入compress.php文件中:

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

在命令行中运行php compress.php,你就拥有了一个Phar。


这个 phar 文件该如何使用?如何执行它? - yarek
@user300675:PHP 应该能像运行其他 PHP 文件一样运行它。我尝试了一下将一个我知道在命令行上可用的小 PHP 脚本打包成 Phar 文件,然后使用 php index.phar 命令来运行结果,它正常工作了。如果你将服务器配置为将 .phar 文件识别为 PHP,则在 Web 服务器上也应该可以顺利运行。 - icktoofay

4
我使用以下脚本:
<?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 存档文件的功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,