需求描述
有时候用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('.'));