🚀 将webman打包成二进制,PHP也可以打包成二进制了 🚀

walkor

webman打包成二进制,也就是将webman项目代码与PHP环境打包成一个二进制文件,无需部署php环境,也可以让webman在linux系统里运行起来。

安装 webman/console

composer require webman/console ^1.2.24

执行打包

php webman build:bin

运行

将生成的build/webman.bin 拷贝到linux系统,执行

./webman.bin start

更多webman打包二进制说明参考 webman手册打包成二进制

其它资源

如果只是下载可独立运行的PHP文件,参见 下载静态PHP

项目来源

https://github.com/crazywhalecc/static-php-cli
https://github.com/dixyes/phpmicro
https://github.com/easysoft/phpmicro
https://github.com/walkor/static-php-cli

感谢 easysoft dixyes crazywhalecc 包括我 为php社区做出的贡献

1799 15 11
15个回答

稚出

越来越好!

  • 暂无评论
evilk

文档终于出来了
大赞

  • 暂无评论
wolfcode

⭐Star

  • 暂无评论
鲁达

牛逼PLUS++

  • 暂无评论
kspade

千呼万唤始出来 ,
建议加个选项:打包后是否自动删除phar 以及 打包前把 bin 给删除一下

  • 暂无评论
liqianmo

是不是这样可以实现给php代码加密了

  • evilk 27天前

    代码加密和打包二进制是2个不同的概念

  • liqianmo 27天前

    @evilk 是不是意味着二进制文件包还是可以解压出源代码

  • 北月 27天前

    打包二进制只是把 php code 或者 phar 文件内容追加到 mirco 末尾,可以提取出来的。

  • kspade 27天前

    可以分离出来的,看似二进制,实则 = phar = 源代码 ,并不能有任何的加密保护作用。
    要是PHP可以编译后 无法逆向出源码就好了 就像GO 一样

jacknum1

哈哈哈 又增加了个厉害工具

  • 暂无评论
roczyl

也就是说,可以在win环境下打包?

  • luohonen 26天前

    可以在任何系统打包,只是运行暂时只能在linux下运行

  • kspade 26天前

    git上自己看 windows max linux 都可以打包,

mosquito

自己编译的php扩展是不是只能phar打包了

  • 北月 26天前

    如果想加入其他扩展,可以参考 https://github.com/walkor/static-php-cli 自己编译一下 mirco 文件,然后先打包成 phar ,再拼接成一个二进制文件即可

稚出

打包好之后怎么使用nginx代理呢

sunwenzheng

各位注意下,如果环境是用webman的二进制php运行的话,打包的时候会这样

lighthouse@VM-4-7-debian:~/project/webman/webman$ php webman build:bin

In BuildPharCommand.php line 142:

The 'phar.readonly' is 'On', build phar must setting it 'Off' or exec with 'php -d phar.readon
ly=0 ./webman build:bin'

build:bin [<version>]

lighthouse@VM-4-7-debian:~/project/webman/webman$ php -d phar.readonly=0 ./webman build:bin
Phar packing...

  • jediking 20天前

    你配置忘记改了吧 php.ini 把phar.readonly=Off加 文档写了的

  • kspade 12天前

    不修改配置文件就运行这个命令打包:php -d phar.readonly=0 ./webman build:bin

请问执行在Arm架构的代码是不是只能在Arm架构环境下打包?
还是说,在x86环境下打包,在Arm环境下也能执行?

  • damao 8天前

    文档说可以在任何环境打包,但是打包后的职能在linux x86下运行

  • kspade 8天前

    二进制页面有docker 或者 git上面有 linux arm windows 各种环境都可以打包运行,只是webman 没有做兼容适配,你可以自己打包,或者你也可以使用 swoole-cli 的 docker 修改以下就行了,任何系统环境都可以跑

jacknum1

二进制打包发布到Linux系统运行报错,不知道哪里出错了,希望各个大佬帮忙看看

  • 目录路径:project/webman.bin
  • 目录结构:|--project
    |---webman.bin
    |---public
    |---runtime
  • 启动命令: ./webman.bin start
  • 报错截图如下:
    截图
euii

我的疑问是,当业务的代码发生变化后,重新打包应该如何平滑的更新?是直接把老版本的覆盖掉然后 执行restart命令?还是先把服务停掉然后再上传覆盖掉老文件,然后再用start启动一遍呢?这样的话,在上传和覆盖这个时间段服务器就无法服务了。

  • kspade 1天前

    我是定义了一个 初始化进程,启动后 curl 链接远程判断:发现新版本1.2 是否更新(y/n)
    按y 就下载二进制包覆盖并 kill webman 进程并重新启动webman (脚本操作)

  • euii 5小时前

    你的初始化的进程是一个shell脚本吗?还是webman里的自定义进程

  • kspade 1小时前

    start.php 里面直接写代码就行了

ieras

静态php是不是只能在linux运行啊

  • kspade 1天前

    giuthub上 已经有arm ,macos,windows 的sfx了 ,下载覆盖到build 里面的 sfx文件就行了 全平台支持

🔝