2021-05-07 10:06:00 +08:00
|
|
|
|
# static-php-cli
|
2022-10-05 08:47:05 +08:00
|
|
|
|
Compile A Statically Linked PHP With Swoole and other Extensions. [English README](README-en.md)
|
2021-05-06 14:44:16 +08:00
|
|
|
|
|
2021-06-05 23:48:37 +08:00
|
|
|
|
编译纯静态的 PHP Binary 二进制文件,带有各种扩展,让 PHP-cli 应用变得更便携!
|
|
|
|
|
|
|
2022-05-16 17:02:57 +08:00
|
|
|
|
同时可以使用 micro 二进制文件,将 PHP 源码和 PHP 二进制构建为一个文件分发!
|
|
|
|
|
|
|
2023-03-18 14:19:45 +08:00
|
|
|
|
注:只能编译 CLI 模式,暂不支持 CGI 和 FPM 模式。
|
2021-04-26 16:32:26 +08:00
|
|
|
|
|
2022-01-10 10:14:06 +08:00
|
|
|
|
[]()
|
2021-04-28 00:03:14 +08:00
|
|
|
|
|
2021-07-28 14:26:28 +08:00
|
|
|
|
## 编译环境需求
|
2022-05-16 17:02:57 +08:00
|
|
|
|
|
2023-03-18 14:19:45 +08:00
|
|
|
|
是的,本项目采用 PHP 编写,编译前需要一个 PHP 环境,比较滑稽。
|
|
|
|
|
|
但本项目默认可通过自身构建的 micro 和 static-php 二进制运行,其他只需要包含 tokenizer 扩展和 PHP 版本大于等于 8.0 即可。
|
2022-04-17 22:07:56 +08:00
|
|
|
|
|
2023-03-18 14:19:45 +08:00
|
|
|
|
- Linux
|
|
|
|
|
|
- 支持架构: aarch64, amd64
|
|
|
|
|
|
- 支持发行版: alpine, ubuntu, centos
|
|
|
|
|
|
- 依赖工具: (TODO)
|
|
|
|
|
|
- macOS
|
|
|
|
|
|
- 支持架构: arm64, x86_64
|
|
|
|
|
|
- 依赖工具: make, bison, flex, pkg-config, git, autoconf, automake, tar, unzip, xz, gzip, bzip2, cmake
|
|
|
|
|
|
- Windows
|
|
|
|
|
|
- 支持架构: x86_64
|
|
|
|
|
|
- 依赖工具: (TODO)
|
|
|
|
|
|
- PHP
|
|
|
|
|
|
- 支持版本: 8.0, 8.1, 8.2
|
2022-05-16 17:02:57 +08:00
|
|
|
|
|
2023-03-18 14:19:45 +08:00
|
|
|
|
## 使用(WIP)
|
2022-05-16 17:02:57 +08:00
|
|
|
|
|
2023-03-18 14:19:45 +08:00
|
|
|
|
> 你正在看的是重构后的 static-php-cli 编译项目,新项目还未完全重构,所以还有大量的扩展没有完成。
|
|
|
|
|
|
> 你可以阅读使用 bash 编写的仅为 Linux 系统使用的静态编译脚本和 Docker,详见 bash-version 分支。 旧版本未来将会切换为次要版本,提供有限支持。
|
2021-04-26 16:32:26 +08:00
|
|
|
|
|
2023-03-18 14:19:45 +08:00
|
|
|
|
未来会提供一个直接可使用的 phar 包和一个 phpmicro 打包的二进制文件,你可以直接从 Release 中获取并使用:
|
2022-05-15 00:57:14 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2023-03-18 14:19:45 +08:00
|
|
|
|
chmod +x static-php-cli
|
|
|
|
|
|
# 拉取所有依赖库
|
|
|
|
|
|
./static-php-cli fetch --all
|
|
|
|
|
|
# 构建包含 bcmath 扩展的 php-cli 和 micro.sfx
|
|
|
|
|
|
./static-php-cli build "bcmath" "" --build-all
|
2022-05-15 00:57:14 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2023-03-18 14:19:45 +08:00
|
|
|
|
## 项目支持情况(WIP)
|
|
|
|
|
|
|
|
|
|
|
|
- [X] 基础结构编写(采用 symfony/console`)
|
|
|
|
|
|
- [X] 错误处理
|
|
|
|
|
|
- [ ] Windows 支持
|
|
|
|
|
|
- [ ] Linux 支持
|
|
|
|
|
|
- [ ] PHP 7.4 支持
|
|
|
|
|
|
|
|
|
|
|
|
## 支持的扩展情况(WIP)
|
|
|
|
|
|
|
|
|
|
|
|
> Yes 代表已支持,Pending 代表支持但未经测试,空白代表暂不支持.
|
|
|
|
|
|
|
|
|
|
|
|
| | Linux | macOS | Windows |
|
|
|
|
|
|
|------------|-------|----------|---------|
|
|
|
|
|
|
| bcmath | | yes | |
|
|
|
|
|
|
| calendar | | | |
|
|
|
|
|
|
| ctype | | | |
|
|
|
|
|
|
| curl | | | |
|
|
|
|
|
|
| date | | yes | |
|
|
|
|
|
|
| dom | | | |
|
|
|
|
|
|
| event | | | |
|
|
|
|
|
|
| exif | | | |
|
|
|
|
|
|
| filter | | | |
|
|
|
|
|
|
| fileinfo | | | |
|
|
|
|
|
|
| ftp | | | |
|
|
|
|
|
|
| gd | | untested | |
|
|
|
|
|
|
| hash | | yes | |
|
|
|
|
|
|
| iconv | | | |
|
|
|
|
|
|
| inotify | | | |
|
|
|
|
|
|
| json | | yes | |
|
|
|
|
|
|
| libxml | | | |
|
|
|
|
|
|
| mbstring | | | |
|
|
|
|
|
|
| mongodb | | | |
|
|
|
|
|
|
| mysqli | | | |
|
|
|
|
|
|
| mysqlnd | | | |
|
|
|
|
|
|
| openssl | | yes | |
|
|
|
|
|
|
| pcntl | | untested | |
|
|
|
|
|
|
| pcre | | yes | |
|
|
|
|
|
|
| pdo | | yes | |
|
|
|
|
|
|
| pdo_mysql | | | |
|
|
|
|
|
|
| pdo_sqlite | | yes | |
|
|
|
|
|
|
| pdo_pgsql | | | |
|
|
|
|
|
|
| phar | | | |
|
|
|
|
|
|
| posix | | | |
|
|
|
|
|
|
| protobuf | | | |
|
|
|
|
|
|
| readline | | | |
|
|
|
|
|
|
| redis | | | |
|
|
|
|
|
|
| Reflection | | yes | |
|
|
|
|
|
|
| shmop | | | |
|
|
|
|
|
|
| simplexml | | | |
|
|
|
|
|
|
| soap | | | |
|
|
|
|
|
|
| sockets | | | |
|
|
|
|
|
|
| sqlite3 | | untested | |
|
|
|
|
|
|
| swow | | | |
|
|
|
|
|
|
| swoole | | yes | |
|
|
|
|
|
|
| tokenizer | | | |
|
|
|
|
|
|
| xml | | | |
|
|
|
|
|
|
| xmlreader | | | |
|
|
|
|
|
|
| xmlwriter | | | |
|
|
|
|
|
|
| zip | | | |
|
|
|
|
|
|
| zlib | | | |
|
|
|
|
|
|
|
|
|
|
|
|
## 开源协议
|
|
|
|
|
|
|
|
|
|
|
|
本项目依据旧版本惯例采用 MIT License 开源,新版本采用了部分项目的源代码做参考,特别感谢:
|
|
|
|
|
|
|
|
|
|
|
|
- dixyes/lwmbs(木兰宽松许可证)
|
|
|
|
|
|
- swoole/swoole-cli(Apache 2.0 LICENSE+SWOOLE-CLI LICENSE)
|
|
|
|
|
|
|
|
|
|
|
|
因本项目的特殊性,使用项目编译过程中会使用很多其他开源项目,例如 curl、protobuf 等,它们都有各自的开源协议。
|
|
|
|
|
|
请在编译完成后,使用命令 `dump-license` 导出项目使用项目的开源协议,并遵守对应项目的 LICENSE。
|