前段时间写了几个PHP的脚本,但是因为脚本的项目是基于composer安装的,给别人使用的时候不太方便,就希望能够打包成一个能直接使用的文件。
搜索了一下,发现可以使用phar打包。
假设我们有如下一个项目
入口文件是index.php,打包前的命令如下:
php index.php
再添加打包脚本之前,需要先修改一下PHP的配置,将phar.readonly改为Off,默认为On,表示只读,在php.ini文件中:
[Phar]; http://php.net/phar.readonlyphar.readonly = Off
编写构建phar包的脚本,命名为build.php
startBuffering();// 将后缀名相关的文件打包foreach ($exts as $ext) { $phar->buildFromDirectory($dir, '/\.' . $ext . '$/');}// 把build.php本身摘除$phar->delete('build.php');// 设置入口$phar->setStub($phar->createDefaultStub('index.php'));$phar->stopBuffering();// 打包完成echo "Finished {$file}\n";
执行php build.php
就可以看到生成的test.phar包了。
执行php test.phar
就跟之前执行php index.php
的效果一样了。
参考摘录: