
BPC 是一个 PHP Native Compiler,可以将 PHP 源码最终转译成 C 语言,然后编译成动态链接库或可执行程序.
BPC 还内置软件授权机制,最终可实现源码保护、软件授权、二进制打包三合一!
彻底解决 PHP 项目的交付问题.

重要的事情放在开头加粗说三遍
目前 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- 不一定完整且未经完善测试,当前仅是可行性验证,切勿用于生产环境!
本文所述的所有操作都是在 Ubuntu 18.04 amd64 上完成的,但这并不是说 BPC 只能在 Ubuntu 18.04 上运行.
BPC 编译器自身已验证过可以在 Ubuntu 18.04 / 20. 04 / 22.04 上运行,编译结果还可以在 Debian 12 上运行, 参看 wordpress 的例子.
创建一个临时目录 /tmp/x
下载编译好的二进制文件 start-webman-admin.gz 到 /tmp/x/ 里
解压并加上可执行权限 gunzip start-webman-admin.gz && chmod +x start-webman-admin
运行 WEBMAN_PLUGINS_WITH_COnFIG=admin ./start-webman-admin start
注意要加上环境变量 WEBMAN_PLUGINS_WITH_COnFIG=admin
另外打开一个终端
~$ tree /tmp/x/ /tmp/x/ ├── runtime │ ├── logs │ │ └── workerman.log │ ├── views │ └── webman.pid └── start-webman-admin 3 directories, 3 files 访问 http://localhost:8787/app/admin 完成安装,最后点击"进入后台"来到登录界面并登录.
再次执行一下 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 文件.
点一点后台的各项功能试试吧!
插件管理-应用插件 是没有编译进来的,点这个菜单会报 /app/admin/plugin/index not found.
原因同上,下载回来 php 代码是没有用的.
2.1 - 2.3.1 可以参看文章 PHP 编译器 BPC6.4 发布,成功编译 webman,二进制打包源码保护软件授权 All in One! 及视频
参照对应 git repo README.md 开头的 BPC Notes 依次执行 make make install 即可.
webman-without-LaravelDb 1. psr-log 2. psr-container 3. nikic-fast-route 4. monolog 5. workerman 6. webman-framework 6- ~~[webman-framework]( https://github.com/heguangyu5/bpc-webman-framework)~~ 先不要编译这个
# 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 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
Illuminate/Database 编译好后,就可以编译 webman-framework 了.
同上, 参照对应 git repo README.md 开头的 BPC Notes 依次执行 make make install 即可.
webman-admin 依赖 webman-captcha 和 intervention-image.
18- webman-captcha/p>
19- intervention-image-2.7-branch
20- webman-admin
以上 20 个 package 编译安装完成后, 就可以编译 start-webman-admin 了.
~$ git clone [email protected]: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. 1 aogg 2023-12-28 08:57:46 +08:00 没说支持 laravel |
2 heguangyu5 OP @aogg laravel 东西太多了,我在编译 Illuminate/Database 的过程中领教了一下,我自己就不搞了,有需要的人自己编译吧. |
3 Sligcm 2024-01-17 11:00:35 +08:00 如何解决:插件管理-应用插件功能里动态下载的 PHP 文件的问题呢? |
4 heguangyu5 OP |
5 Sligcm 2024-02-22 10:41:53 +08:00 @heguangyu5 虽然不完美,略微有些麻烦,但必须给继续研究 PHP 的兄弟点个赞,加油! |
6 lhyannis 2024-06-28 17:53:48 +08:00 没说支持 thinkphp6 |