php打包phar文件
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2018-12-31 13:55:14
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
需求描述
有时候用php写一些小脚本处理一些东西很方便,但是带一大堆文件很不舒服,这个时候可以把文件功能整理成一个入口,打包成一个phar文件来使用,如下
打包
打包之前要把php.ini中的配置项phar.readonly 设置成Off
把脚本文件整理成所有功能都从一个入口文件进入。然后把所有文件放入一个目录里
$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('.'));