zoukankan      html  css  js  c++  java
  • PHP的学习--使用phar打包

    前段时间写了几个PHP的脚本,但是因为脚本的项目是基于composer安装的,给别人使用的时候不太方便,就希望能够打包成一个能直接使用的文件。

    搜索了一下,发现可以使用phar打包。

    假设我们有如下一个项目

    入口文件是index.php,打包前的命令如下:

    php index.php
    

    再添加打包脚本之前,需要先修改一下PHP的配置,将phar.readonly改为Off,默认为On,表示只读,在php.ini文件中:

    [Phar]
    ; http://php.net/phar.readonly
    phar.readonly = Off
    

    编写构建phar包的脚本,命名为build.php

    <?php
    $exts = ['php'];            // 需要打包的文件后缀
    $dir = __DIR__;             // 需要打包的目录
    $file = 'test.phar';       // 包的名称, 注意它不仅仅是一个文件名, 在stub中也会作为入口前缀
    $phar = new Phar(__DIR__ . '/' . $file, FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME, $file);
    // 开始打包
    $phar->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}
    ";
    

    执行php build.php就可以看到生成的test.phar包了。

    执行php test.phar就跟之前执行php index.php的效果一样了。

    参考摘录:

    PHP中phar包的使用
    使用phar上线你的代码包

  • 相关阅读:
    package.json作用
    github 发布项目
    kubernetes --> ConfigMap
    kubernetes1.9 手动安装
    python3 BeautifulSoup模块
    python3 requests模块
    ununtu16.04+python3+selenium+firefox环境搭建
    QQ空间动态内容,好友信息,点赞爬虫脚本
    k8s使用ceph作为后端存储挂载
    ceph存储安装配置
  • 原文地址:https://www.cnblogs.com/CraryPrimitiveMan/p/6158196.html
Copyright © 2011-2022 走看看