PHP编译器BPC 7.1发布,成功编译 webman-admin

heguangyu5

BPC是一个PHP Native Compiler,可以将PHP源码最终转译成C语言,然后编译成动态链接库或可执行程序.

BPC还内置软件授权机制,最终可实现源码保护、软件授权、二进制打包三合一!

彻底解决PHP项目的交付问题.

How BPC Works

  1. 官网 bpc.dev
  2. 安装使用文档
  3. Try BPC with Docker
  4. Run BPC Compiled Program with Docker
  5. BPC编译入门示例: Tiny File Manager

重要的事情放在开头加粗说三遍

目前BPC编译的 webman-admin 及其依赖 doctrine-* illuminate-* symfony-* carbon webman-* intervention-* 不一定完整且未经完善测试,当前仅是可行性验证,切勿用于生产环境!

目前BPC编译的 webman-admin 及其依赖 doctrine-* illuminate-* symfony-* carbon webman-* intervention-* 不一定完整且未经完善测试,当前仅是可行性验证,切勿用于生产环境!

目前BPC编译的 webman-admin 及其依赖 doctrine-* illuminate-* symfony-* carbon webman-* intervention-* 不一定完整且未经完善测试,当前仅是可行性验证,切勿用于生产环境!

0. 前置说明

本文所述的所有操作都是在 Ubuntu 18.04 amd64 上完成的,但这并不是说BPC只能在 Ubuntu 18.04 上运行.

BPC编译器自身已验证过可以在 Ubuntu 18.04 / 20. 04 / 22.04 上运行,编译结果还可以在 Debian 12 上运行, 参看 wordpress的例子.

1. 快速体验二进制版的webman-admin

  1. 创建一个临时目录 /tmp/x

  2. 下载编译好的二进制文件 start-webman-admin.gz/tmp/x/

  3. 解压并加上可执行权限 gunzip start-webman-admin.gz && chmod +x start-webman-admin

  4. 运行 WEBMAN_PLUGINS_WITH_CONFIG=admin ./start-webman-admin start

    注意要加上环境变量 WEBMAN_PLUGINS_WITH_CONFIG=admin

  5. 另外打开一个终端

    ~$ tree /tmp/x/
    /tmp/x/
    ├── runtime
    │   ├── logs
    │   │   └── workerman.log
    │   ├── views
    │   └── webman.pid
    └── start-webman-admin
    
    3 directories, 3 files
  6. 访问 http://localhost:8787/app/admin 完成安装,最后点击"进入后台"来到登录界面并登录.

  7. 再次执行一下 tree 命令

    ~$ tree /tmp/x/
    /tmp/x/
    ├── plugin-admin-config-database.json
    ├── runtime
    │   ├── login
    │   ├── logs
    │   │   └── workerman.log
    │   ├── sessions
    │   │   └── session_90bbb4525e57d9419be84de48e0ef76f
    │   ├── views
    │   └── webman.pid
    └── start-webman-admin
    
    5 directories, 5 files

    可以看到多了两个文件,一个是 session_xxxx , 另一个是 plugin-admin-config-database.json.

    BPC最终将PHP代码转译成了C语言, start-webman-admin 的运行是不需要PHP环境的,也无法执行php代码,因此数据库配置信息我们存储到了 json 文件中, plugin/admin/config/database.php 会读取这个json文件.

  8. 点一点后台的各项功能试试吧!

    插件管理-应用插件 是没有编译进来的,点这个菜单会报 /app/admin/plugin/index not found.

    原因同上,下载回来php代码是没有用的.

2. 亲自动手编译 start-webman-admin

2.1 - 2.3.1可以参看文章 PHP编译器BPC6.4发布,成功编译webman,二进制打包源码保护软件授权All in One! 及视频

  1. 【PHP编译器BPC的安装和基本使用】 https://www.bilibili.com/video/BV1b34y1u7as/?share_source=copy_web&vd_source=fb7701afa4e3c4faaffabbe49ab11ac2
  2. 【使用PHP编译器BPC来编译workerman和GatewayWorker】 https://www.bilibili.com/video/BV1Wy4y1w7HG/?share_source=copy_web&vd_source=fb7701afa4e3c4faaffabbe49ab11ac2
  3. 【使用PHP编译器BPC来编译webman】 https://www.bilibili.com/video/BV12N411x7ho/?share_source=copy_web&vd_source=fb7701afa4e3c4faaffabbe49ab11ac2

2.1 参看文档下载安装 BPC

2.2 下载安装phptobpc 来解决BPC不支持的语法特性

2.3 编译安装webman依赖

参照对应 git repo README.md 开头的 BPC Notes 依次执行 make make install 即可.

2.3.1 webman依赖梳理第1部分

webman-without-LaravelDb
    1. psr-log
    2. psr-container
    3. nikic-fast-route
    4. monolog
    5. workerman
    6. webman-framework

1- psr-log-1.1.4
2- psr-container-2.0.1
3- nikic-fast-route-1.3.0
4- monolog-2.x-branch
5- workerman-4.1-branch
6- webman-framework 先不要编译这个

2.3.2 webman依赖梳理第2部分: 加上LaravelDb

# Illuminate/Database依赖Carbon,Carbon又依赖Symfony的几个package
    7. symfony-polyfill-php80
    8. symfony-translation-contracts
    9. symfony-translation
    10. carbon
# Illuminate/Database还依赖doctrine-inflector及Illuminate的其它几个package
    11. doctrine-inflector
    12. illuminate-contracts
    13. illuminate-container
    14. illuminate-support
    15. illuminate-events
    16. illuminate-pagination
# 最后编译Illuminate/Database
    17. illuminate-database

7- symfony-polyfill-php80
8- symfony-translation-contracts-2.5-branch
9- symfony-translation-5.0-branch
10- carbon
11- doctrine-inflector-2.0.x-branch
12- illuminate-contracts-7.x-branch
13- illuminate-container-7.x-branch
14- illuminate-support-7.x-branch
15- illuminate-events-7.x-branch
16- illuminate-pagination-7.x-branch
17- illuminate-database-7.x-branch

2.3.3 webman-framework

Illuminate/Database 编译好后,就可以编译 webman-framework 了.

6- webman-framework

2.4 编译 webman-admin

同上, 参照对应 git repo README.md 开头的 BPC Notes 依次执行 make make install 即可.

webman-admin 依赖 webman-captcha 和 intervention-image.

18- webman-captcha
19- intervention-image-2.7-branch
20- webman-admin

2.5 编译运行 start-webman-admin

以上 20 个 package 编译安装完成后, 就可以编译 start-webman-admin 了.

~$ git clone git@github.com:heguangyu5/bpc-webman.git
~$ cd bpc-webman/
~/bpc-webman$ make start-webman-admin
output prologue
generate main.c
generate build.ninja
run ninja
[35/35] link ../start-webman-admin (statically linked)
mv start-webman-admin ../
make[1]: Leaving directory '~/bpc-webman/build'
~/bpc-webman$ mkdir /tmp/x
~/bpc-webman$ mv start-webman-admin /tmp/x/
~/bpc-webman$ cd /tmp/x/
/tmp/x$ WEBMAN_PLUGINS_WITH_CONFIG=admin ./start-webman-admin start
Workerman[./start-webman-admin] start in DEBUG mode
--------------------------------------------- WORKERMAN ----------------------------------------------
Workerman version:4.1.10          PHP version:7.2.19-bpc           Event-Loop:\Workerman\Events\Event
---------------------------------------------- WORKERS -----------------------------------------------
proto   user            worker          listen                 processes    status           
tcp     hgy             webman          http://0.0.0.0:8787    32            [OK]            
------------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
359 0 0
0个评论

heguangyu5

1540
积分
0
获赞数
0
粉丝数
2022-11-24 加入
🔝