Skip to content

二进制打包 ​

webman 支持将项目打包成一个二进制文件,这使得 webman 无需 php 环境也能在 linux 系统运行起来。

注意 打包后的文件目前只支持运行在 x86_64 架构的 linux 系统上,不支持 windows 和 mac 系统 需要关闭 php.ini 的 phar 配置选项,既设置 phar.readonly = 0

安装命令行工具 ​

composer require webman/console ^1.2.24

打包 ​

运行命令

php webman build:bin

同时可以指定以哪个 php 版本打包,例如

php webman build:bin 8.1

打包后会在 bulid 目录生成一个 webman.bin 文件

启动 ​

将 webman.bin 上传至 linux 服务器,执行 ./webman.bin start 或 ./webman.bin start -d 即可启动。

原理 ​

  • 首先将本地 webman 项目打包成一个 phar 文件
  • 然后远程下载 php8.x.micro.sfx 到本地
  • 将 php8.x.micro.sfx 和 phar 文件拼接为一个二进制文件

注意事项 ​

  • 强烈建议本地 php 版本和打包版本一致,例如本地是 php8.1,打包也用 php8.1,避免出现兼容问题
  • 打包会下载 php8 的源码,但是并不会本地安装,不会影响本地 php 环境
  • webman.bin 目前只支持在 x86_64 架构的 linux 系统运行,不支持在 mac 系统运行
  • 打包后的项目不支持 reload,更新代码需要 restart 重启
  • 默认不打包 env 文件 ( config/plugin/webman/console/app.php 中 exclude_files 控制),所以启动时 env 文件应该放置与 webman.bin 相同目录下
  • 运行过程中会在 webman.bin 所在目录生成 runtime 目录,用于存放日志文件
  • 目前 webman.bin 不会读取外部 php.ini 文件,如需要自定义 php.ini,请在 /config/plugin/webman/console/app.php 文件 custom_ini 中设置
  • 有些文件不需要打包,可以设置 config/plugin/webman/console/app.php 排除掉,避免打包后的文件过大
  • 切勿将用户上传的文件存储在二进制包中,因为以 phar:// 协议操作用户上传的文件是非常危险的 (phar 反序列化漏洞)。用户上传的文件必须单独存储在包之外的磁盘中。
  • 如果你的业务需要上传文件到 public 目录,需要将 public 目录独立出来放在 webman.bin 所在目录,这时候需要配置 config/app.php 如下并重新打包。
'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',

单独下载静态 PHP ​

有时候你只是不想部署 PHP 环境,只需要一个 PHP 可执行文件,点击请点击这里下载静态 php 下载

提示 如需给静态 php 指定 php.ini 文件,请使用以下命令 php -c /your/path/php.ini start.php start -d

支持的扩展 ​

Core, date, libxml, openssl, pcre, sqlite3, zlib, amqp, apcu, bcmath, calendar, ctype, curl, dba, dom, sockets, event, hash, fileinfo, filter, gd, gettext, json, iconv, SPL, session, standard, mbstring, igbinary, imagick, exif, mongodb, msgpack, mysqlnd, mysqli, pcntl, PDO, pdo_mysql, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, readline, redis, Reflection, shmop, SimpleXML, soap, sodium, sqlsrv, sysvmsg, sysvsem, sysvshm, tokenizer, xlswriter, xml, xmlreader, xmlwriter, xsl, zip, memcache, Zend OPcache

项目出处 ​

https://github.com/crazywhalecc/static-php-clihttps://github.com/walkor/static-php-cli