php打包phar文件

来源:赵克立博客 分类: PHP 标签:--发布时间:2018-12-31 11:41:59最后更新:2018-12-31 13:55:14浏览:1184
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2018-12-31 13:55:14
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

需求描述

有时候用php写一些小脚本处理一些东西很方便,但是带一大堆文件很不舒服,这个时候可以把文件功能整理成一个入口,打包成一个phar文件来使用,如下

打包

打包之前要把php.ini中的配置项phar.readonly 设置成Off 

image.png

把脚本文件整理成所有功能都从一个入口文件进入。然后把所有文件放入一个目录里

$phar = new Phar('test.phar');
// $phar->extractTo('fmt');
//指定压缩的目录,第二个参数为指定压缩的文件类型正则
$phar->buildFromDirectory(__DIR__ . '/phars/', '/\.php$/');
//压缩方式 Phar::GZ  PHAR::BZ2
$phar->compressFiles(Phar::GZ);
//设置默认的启动文件,也就是入口文件
$phar->setStub($phar->createDefaultStub('index.php'));

把上面代码保存到 phars 同级目录,打开命令行输入下面命令就可以在当前目录生成一个test.phar文件啦  

php.exe dabao.php

解压

解压后会自动创建目录

$phar = new Phar('test.phar');
$phar->extractTo('test');

注意事项

打包成phar后如果脚本里有使用  __dir__ 这些常量的话要把  phar://   替换掉,要不然file_get_content mkdir 等一些函数会报错找不到路径,但是require_once include等是可以用的

define('ROOT_PATH', str_replace('phar://', '', dirname(__dir__)));

或着用下面来取当前所在目录

define('ROOT_PATH', realpath('.'));



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python