php程序打包成phar

Phar的php程序打包

如果开发过Java程序,肯定知道Jar文件(Jar是Java ARchive的缩写)。一个应用,包括所有的可执行、可访问的文件,都打包进了一个JAR文件里,使得部署过程十分简单。
PHAR (“Php ARchive”) 是PHP里类似于JAR的一种打包文件。如果使用的是 PHP 5.3 或更高版本,那么Phar后缀文件是默认开启支持的,你不需要任何其他的安装就可以使用它。

开启phar可创建

PHAR文件缺省状态是只读的,现在需要创建一个Phar文件,需要允许写入Phar文件,这需要修改一下php.ini

phar.readonly = 0

现在,就可以把PHP应用打包成Phar文件了。

phar程序前置条件(注意点)

  1. !!!需是单一入口程序
  2. !!!php.ini 中的 phar.readonly 设为 Off 或者 0
  3. !!!程序里include引入php文件时 尽量用 __DIR__."path" 引入
  4. !!!静态资源不会被打包(js,css,jpg.....)

phar打包代码

$phar=new phar('app.phar');             //参数为要打包成的文件名
$phar->buildFromDirectory(__DIR__.'/','/\.php$/');  //从哪个文件夹打包 参数1为程序根目录(最好用__DIR__等魔术常量)  参数2是正则表达式(选填)表示要打包文件的后缀
$phar->compressFiles(phar::GZ);        //压缩方式
$phar->stopBuffering();            //停止缓冲
$a=$phar->createDefaultStub('./a.php'); //程序入口文件
$phar->setStub($a);

phar使用

phar包可以像普通php文件一样被include 或 require

include_once 'app.phar';  //全部引入
include_once 'phar://app.phar/conf.php'; //引入单个文件

往事如风~

178 声望
6 粉丝
0 条评论
推荐阅读
安装nodejs准备开发的前期设置
设置淘宝源npmnpm config set registry https://registry.npm.taobao.orgyarnyarn config set registry https://registry.npm.taobao.org设置全局下载目录npm {代码...} yarn {代码...} win10 PowerShell yarn 无...

zpfei阅读 435

初学后端,如何做好表结构设计?
这篇文章介绍了设计数据库表结构应该考虑的4个方面,还有优雅设计的6个原则,举了一个例子分享了我的设计思路,为了提高性能我们也要从多方面考虑缓存问题。

王中阳Go4阅读 1.8k评论 2

封面图
一分钟搞明白!快速掌握 Go WebAssembly
最近因为各种奇怪的原因,更多的接触到了 WebAssembly。虽然之前很多博客也翻过写过各种文章,但总感觉欠些味道。于是今天梳理了一版,和大家一起展开学习。

煎鱼4阅读 2.2k

Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.5k

我让chatGPT用PHP写一个MVC框架,不仅写出来,还能跑!
没想到写出来的框架确实挺简单的,但是又没觉得哪里不对,于是我尝试把这个框架放到服务器试试能不能跑起来,最后还真的可以跑起来,为了让大家能够看到这个框架的演示,我直接爬一个热搜,然后便于展示数据。

TANKING1阅读 1.7k

封面图
开发一个全网搜索引擎的大致流程
由于对搜索引擎技术很感兴趣,便开始尝试开发一个搜索引擎。在参考了网上有限的资料后,加上自己钻研,最终开发出了一个小型的全网搜索引擎,底部有项目地址和搜索测试图片。

会飞的鸟1阅读 5.7k评论 1

快速上手 Go CGO,掌握在 Go 里写 C!
大家好,我是煎鱼。最近因为各种奇怪的原因,接触到了 Go 特色之一 CGO。这方面的相关内容也相对少一些,给大家抛砖引玉。毕竟很多跨语言调用,还是会依赖 CGO 这个特性。希望大家在真正要用时有个前置知识垫肚子...

煎鱼1阅读 1.4k

往事如风~

178 声望
6 粉丝
宣传栏