diff --git a/README-en.md b/README-en.md
index a6ce40fd..505fd70a 100755
--- a/README-en.md
+++ b/README-en.md
@@ -1,260 +1,3 @@
# static-php-cli
-Build single static PHP binary, with PHP project together, with popular extensions included.
-
-The project name is static-php-cli, but it actually supports cli, fpm, micro and embed SAPI 😎
-
-Compile a purely static php-cli binary file with various extensions to make PHP applications more portable! (cli SAPI)
-
-
-
-You can also use the micro binary file to combine php binary and php source code into one for distribution! (micro SAPI)
-
-
-
-> This SAPI feature is from the [Fork](https://github.com/crazywhalecc/phpmicro) of [dixyes/phpmicro](https://github.com/dixyes/phpmicro).
-
-
-[]()
-[]()
-[](https://github.com/crazywhalecc/static-php-cli/actions/workflows/build.yml)
-[](https://github.com/crazywhalecc/static-php-cli/actions/workflows/build.yml)
-
-[]()
-[]()
-
-## Compilation Requirements
-
-Yes, this project is written in PHP, pretty funny.
-But static-php-cli runtime only requires an environment above PHP 8.1 and `mbstring`, `pcntl` extension.
-
-Here is the architecture support status, where `CI` represents support for GitHub Action builds,
-`Local` represents support for local builds, and blank represents not currently supported.
-
-| | x86_64 | aarch64 |
-|---------|-----------|-----------|
-| macOS | CI, Local | Local |
-| Linux | CI, Local | CI, Local |
-| Windows | | |
-| FreeBSD | Local | Local |
-
-> macOS-arm64 is not supported for GitHub Actions, if you are going to build on arm, you can build it manually on your own machine.
-
-Currently supported PHP versions for compilation are: `7.3`, `7.4`, `8.0`, `8.1`, `8.2`, `8.3`.
-
-## Docs
-
-docs here: .
-
-## Simple Usage
-
-Please first select the extension you want to compile based on the extension list below.
-
-### Direct Download
-
-If you don't compile yourself, you can download pre-compiled artifact from Actions, or from self-hosted server: [Here](https://dl.static-php.dev/static-php-cli/common/)
-
-> self-hosted server contains extensions: `bcmath,bz2,calendar,ctype,curl,dom,exif,fileinfo,filter,ftp,gd,gmp,iconv,xml,mbstring,mbregex,mysqlnd,openssl,pcntl,pdo,pdo_mysql,pdo_sqlite,phar,posix,redis,session,simplexml,soap,sockets,sqlite3,tokenizer,xmlwriter,xmlreader,zlib,zip`
-
-### Supported Extensions
-
-[Supported Extension List](https://static-php.dev/en/guide/extensions.html)
-
-> If there is no extension you need here, you can submit an issue.
-
-### GitHub Actions Build
-
-Use GitHub Action to easily build a statically compiled PHP and phpmicro,
-and at the same time define the extensions to be compiled by yourself.
-
-1. Fork me.
-2. Go to the Actions of the project and select `CI`.
-3. Select `Run workflow`, fill in the PHP version you want to compile, the target type, and the list of extensions. (extensions comma separated, e.g. `bcmath,curl,mbstring`)
-4. After waiting for about a period of time, enter the corresponding task and get `Artifacts`.
-
-If you enable `debug`, all logs will be output at build time, including compiled logs, for troubleshooting.
-
-- When using ubuntu-latest, it will build linux-x86_64 binary.
-- When using macos-latest, it will build macOS-x86_64 binary.
-
-### Manual Build
-
-Clone repo first:
-
-```bash
-git clone https://github.com/crazywhalecc/static-php-cli.git
-```
-
-If you have not installed php on your system, you can use package management to install PHP (such as brew, apt, yum, apk etc.).
-
-And you can also download single-file php binary and composer using command `bin/setup-runtime`.
-The PHP runtime for static-php-cli itself will be downloaded at `bin/php`, and composer is at `bin/composer`.
-
-```bash
-cd static-php-cli
-chmod +x bin/setup-runtime
-# It will download php-cli from self-hosted server and composer from getcomposer.org
-./bin/setup-runtime
-
-# Use this php runtime to run static-php-cli compiler
-./bin/php bin/spc
-
-# Use composer
-./bin/php bin/composer
-```
-
-Basic usage for building php and micro with some extensions:
-
-```bash
-cd static-php-cli
-composer update
-chmod +x bin/spc
-# Check system tool dependencies, fix them automatically
-./bin/spc doctor
-# fetch all libraries
-./bin/spc fetch --all
-# with bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl extension, build both CLI and phpmicro SAPI
-./bin/spc build bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl --build-cli --build-micro
-```
-
-You can also use the parameter `--with-php=x.y` to specify the downloaded PHP version, currently supports 7.4 ~ 8.2:
-
-```bash
-# Using PHP >= 8.0 is recommended, because PHP7 cannot use phpmicro
-./bin/spc fetch --with-php=8.2 --all
-```
-
-Now we support `cli`, `micro`, `fpm`, you can use one or more of the following parameters to specify the compiled SAPI:
-
-- `--build-cli`: build static cli executable
-- `--build-micro`: build static phpmicro self-extracted executable
-- `--build-fpm`: build static fpm binary
-- `--build-embed`: build embed (libphp)
-- `--build-all`: build all
-
-If anything goes wrong, use `--debug` option to display full terminal output:
-
-```bash
-./bin/spc build openssl,pcntl,mbstring --debug --build-all
-./bin/spc fetch --all --debug
-```
-
-In addition, we build NTS by default. If you are going to build ZTS version, just add `--enable-zts` option.
-
-```bash
-./bin/spc build openssl,pcntl --build-all --enable-zts
-```
-
-Adding option `--no-strip` can produce binaries with debug symbols, in order to debug (using gdb). Disabling strip will increase the size of static binary.
-
-### php-cli Usage
-
-> php-cli is a single static binary, you can use it like normal php installed on your system.
-
-When using the parameter `--build-cli` or `--build-all`,
-the final compilation result will output a binary file named `./php`,
-which can be distributed and used directly.
-This file will be located in the directory `buildroot/bin/`, copy it out for use.
-
-```bash
-cd buildroot/bin/
-./php -v # check version
-./php -m # check extensions
-./php your_code.php # run your php code
-./php your_project.phar # run your phar (project archive)
-```
-
-### micro.sfx Usage
-
-> phpmicro is a SelF-extracted eXecutable SAPI module,
-> provided by [dixyes/phpmicro](https://github.com/dixyes/phpmicro).
-> It can put php runtime and your source code together.
-
-When using the parameter `--build-all` or `--build-micro`,
-the final compilation result will output a file named `./micro.sfx`,
-which needs to be used with your PHP source code like `code.php`.
-This file will be located in the path `buildroot/bin/micro.sfx`, simply copy it out for use.
-
-Prepare your project source code, which can be a single PHP file or a Phar file, for use.
-
-```bash
-echo " code.php
-cat micro.sfx code.php > single-app && chmod +x single-app
-./single-app
-
-# If packing a PHAR file, replace code.php with the Phar file path.
-```
-
-> In some cases, PHAR files may not run in a micro environment.
-
-### php-fpm Usage
-
-When using the parameter `--build-all` or `--build-fpm`,
-the final compilation result will output a file named `./php-fpm`,
-This file will be located in the path `buildroot/bin/`, simply copy it out for use.
-
-In normal Linux distributions and macOS systems, the package manager will automatically generate a default fpm configuration file after installing php-fpm.
-Because php-fpm must specify a configuration file before running, the php-fpm compiled by this project will not have any configuration files, so you need to write `php-fpm.conf` and `pool.conf` configuration files yourself.
-
-Specifying `php-fpm.conf` can use the command parameter `-y`, for example: `./php-fpm -y php-fpm.conf`.
-
-### Embed Usage
-
-When using the project parameters `--build-embed` or `--build-all`,
-the final compilation result will output a `libphp.a`, `php-config` and a series of header files,
-stored in `buildroot/`. You can introduce them in your other projects.
-
-If you know [embed SAPI](https://github.com/php/php-src/tree/master/sapi/embed), you should know how to use it.
-You may require the introduction of other libraries during compilation,
-you can use `buildroot/bin/php-config` to obtain the compile-time configuration.
-
-For an advanced example of how to use this feature, take a look at [how to use it to build a static version of FrankenPHP](https://github.com/dunglas/frankenphp/blob/main/docs/static.md).
-
-## Contribution
-
-If the extension you need is missing, you can create an issue.
-If you are familiar with this project, you are also welcome to initiate a pull request.
-
-The basic principles for contributing are as follows:
-
-- This project uses php-cs-fixer and phpstan as code formatting tools. Before contributing, please run `composer analyse` and `composer cs-fix` on the updated code.
-- If other open source libraries are involved, the corresponding licenses should be provided.
- Also, configuration files should be sorted using the command `sort-config` after modification.
- For more information about sorting commands, see the documentation.
-- Naming conventions should be followed, such as using the extension name registered in PHP for the extension name itself,
- and external library names should follow the project's own naming conventions. For internal logic functions, class names, variables, etc.,
- camelCase and underscore formats should be followed, and mixing within the same module is prohibited.
-- When compiling external libraries and creating patches, compatibility with different operating systems should be considered.
-
-If you want to contribute document content, please go to [crazywhalecc/static-php-cli-docs](https://github.com/crazywhalecc/static-php-cli-docs).
-
-Part of the English document is written by me, and part is translated by Google,
-and there may be inaccurate descriptions, strange or offensive expressions.
-If you are a native English speaker, some corrections to the documentation are welcome.
-
-
-## Sponsor this project
-
-You can sponsor my project on [this page](https://github.com/crazywhalecc/crazywhalecc/blob/master/FUNDING.md).
-
-## Open-Source License
-
-This project itself is based on MIT License,
-some newly added extensions and dependencies may originate from the following projects (including but not limited to),
-and the headers of these code files will also be given additional instructions LICENSE and AUTHOR:
-
-- [dixyes/lwmbs](https://github.com/dixyes/lwmbs) (Mulun Permissive License)
-- [swoole/swoole-cli](https://github.com/swoole/swoole-cli) (Apache 2.0 LICENSE+SWOOLE-CLI LICENSE)
-
-Due to the special nature of this project,
-many other open source projects such as curl and protobuf will be used during the project compilation process,
-and they all have their own open source licenses.
-
-Please use the `bin/spc dump-license` command to export the open source licenses used in the project after compilation,
-and comply with the corresponding project's LICENSE.
-
-## Advanced
-
-The refactoring branch of this project is written modularly.
-If you are interested in this project and want to join the development,
-you can refer to the [Contribution Guide](https://static-php.dev) of the documentation to contribute code or documentation.
+English README has been moved to [README.md](README.md).
diff --git a/README-zh.md b/README-zh.md
new file mode 100755
index 00000000..a03053d1
--- /dev/null
+++ b/README-zh.md
@@ -0,0 +1,248 @@
+# static-php-cli
+
+Build single static PHP binary, with PHP project together, with popular extensions included.
+
+🌐 **[中文](README-zh.md)** | **[English](README.md)**
+
+编译纯静态的 PHP Binary 二进制文件,带有各种扩展,让 PHP-cli 应用变得更便携!(cli SAPI)
+
+
+
+同时可以使用 micro 二进制文件,将 PHP 源码和 PHP 二进制构建为一个文件分发!(micro SAPI)
+
+
+
+> 该 SAPI 源自 [dixyes/phpmicro](https://github.com/dixyes/phpmicro) 的 [Fork 仓库](https://github.com/crazywhalecc/phpmicro)。
+
+[]()
+[]()
+[](https://github.com/crazywhalecc/static-php-cli/actions/workflows/build.yml)
+[](https://github.com/crazywhalecc/static-php-cli/actions/workflows/build.yml)
+[]()
+[]()
+
+> 项目名称是 static-php-cli,但其实支持 cli、fpm、micro 和 embed SAPI 😎
+
+## 编译环境需求
+
+是的,本项目采用 PHP 编写,编译前需要一个 PHP 环境,比较滑稽。
+但本项目默认可通过自身构建的 micro 和 static-php 二进制运行,其他只需要包含 mbstring、pcntl 扩展和 PHP 版本大于等于 8.1 即可。
+
+下面是架构支持情况,`CI` 代表支持 GitHub Action 构建,`Local` 代表支持本地构建,空 代表暂不支持。
+
+| | x86_64 | aarch64 |
+|---------|-----------|-----------|
+| macOS | CI, Local | Local |
+| Linux | CI, Local | CI, Local |
+| Windows | | |
+| FreeBSD | Local | Local |
+
+> macOS-arm64 因 GitHub 暂未提供 arm runner,如果要构建 arm 二进制,可以使用手动构建。
+
+目前支持编译的 PHP 版本为:`7.3`,`7.4`,`8.0`,`8.1`,`8.2`,`8.3`。
+
+## 文档
+
+点击这里查看文档:。
+
+## 使用
+
+请先根据下方扩展列表选择你要编译的扩展。
+
+### 自托管直接下载
+
+如果你不想自行编译,可以从本项目现有的 Action 下载 Artifact,也可以从自托管的服务器下载:[进入](https://dl.static-php.dev/static-php-cli/common/)
+
+> 自托管的服务器默认包含的扩展有:`bcmath,bz2,calendar,ctype,curl,dom,exif,fileinfo,filter,ftp,gd,gmp,iconv,xml,mbstring,mbregex,mysqlnd,openssl,pcntl,pdo,pdo_mysql,pdo_sqlite,phar,posix,redis,session,simplexml,soap,sockets,sqlite3,tokenizer,xmlwriter,xmlreader,zlib,zip`
+
+### 支持的扩展情况
+
+[扩展支持列表](https://static-php.dev/zh/guide/extensions.html)
+
+> 如果这里没有你需要的扩展,可以提交 Issue。
+
+### 使用 Actions 构建
+
+使用 GitHub Action 可以方便地构建一个静态编译的 PHP 和 phpmicro,同时可以自行定义要编译的扩展。
+
+1. Fork 本项目。
+2. 进入项目的 Actions,选择 CI。
+3. 选择 `Run workflow`,填入你要编译的 PHP 版本、目标类型、扩展列表。(扩展列表使用英文逗号分割,例如 `bcmath,curl,mbstring`)
+4. 等待大约一段时间后,进入对应的任务中,获取 `Artifacts`。
+
+如果你选择了 `debug`,则会在构建时输出所有日志,包括编译的日志,以供排查错误。
+
+### 手动构建(使用 SPC 二进制)
+
+本项目提供了一个 static-php-cli 的二进制文件,你可以直接下载对应平台的二进制文件,然后使用它来构建静态的 PHP。目前 `spc` 二进制支持的平台有 Linux 和 macOS。
+
+下面是从 GitHub Action 下载的方法:
+
+1. 进入 [GitHub Action](https://github.com/crazywhalecc/static-php-cli/actions/workflows/release-build.yml)。
+2. 选择一个最新的构建任务,进入后选择 `Artifacts`,下载对应平台的二进制文件。
+3. 解压 `.zip` 文件。解压后,为其添加执行权限:`chmod +x ./spc`。
+
+你也可以从自托管的服务器下载二进制文件:[进入](https://dl.static-php.dev/static-php-cli/spc-bin/nightly/)。
+
+### 手动构建(使用源码)
+
+先克隆本项目:
+
+```bash
+git clone https://github.com/crazywhalecc/static-php-cli.git
+```
+
+如果你本机没有安装 PHP,你需要先使用包管理(例如 brew、apt、yum、apk 等)安装 php。
+
+你也可以通过 `bin/setup-runtime` 命令下载静态编译好的 php-cli 和 Composer。下载的 php 和 Composer 将保存为 `bin/php` 和 `bin/composer`。
+
+```bash
+cd static-php-cli
+chmod +x bin/setup-runtime
+./bin/setup-runtime
+
+# 使用独立的 php 运行 static-php-cli
+./bin/php bin/spc
+
+# 使用 composer
+./bin/php bin/composer
+
+# 初始化本项目
+cd static-php-cli
+composer update
+chmod +x bin/spc
+```
+
+### 使用 static-php-cli 命令行程序
+
+下面是使用 static-php-cli 编译静态 php 和 micro 的基础用法:
+
+> 如果你使用的是打包好的 `spc` 二进制,你需要将下列命令的 `bin/spc` 替换为 `./spc`。
+
+```bash
+# 检查环境依赖,并根据提示的命令安装缺失的编译工具
+./bin/spc doctor
+# 拉取所有依赖库
+./bin/spc fetch --all
+# 构建包含 bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl 扩展的 php-cli 和 micro.sfx
+./bin/spc build "bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl" --build-cli --build-micro
+```
+
+你也可以使用参数 `--with-php=x.y` 来指定下载的 PHP 版本,目前支持 7.3 ~ 8.2:
+
+```bash
+# 优先考虑使用 >= 8.0 的 PHP 版本,因为 phpmicro 不支持在 PHP7 中构建
+./bin/spc download --with-php=8.2 --all
+```
+
+其中,目前支持构建 cli,micro,fpm 三种静态二进制,使用以下参数的一个或多个来指定编译的 SAPI:
+
+- `--build-cli`:构建 cli 二进制
+- `--build-micro`:构建 phpmicro 自执行二进制
+- `--build-fpm`:构建 fpm
+- `--build-embed`:构建 embed(libphp)
+- `--build-all`:构建所有
+
+如果出现了任何错误,可以使用 `--debug` 参数来展示完整的输出日志,以供排查错误:
+
+```bash
+./bin/spc build openssl,pcntl,mbstring --debug --build-all
+./bin/spc fetch --all --debug
+```
+
+此外,默认编译的 PHP 为 NTS 版本。如需编译线程安全版本(ZTS),只需添加参数 `--enable-zts` 即可。
+
+```bash
+./bin/spc build openssl,pcntl --build-all --enable-zts
+```
+
+同时,你也可以使用参数 `--no-strip` 来关闭裁剪,关闭裁剪后可以使用 gdb 等工具调试,但这样会让静态二进制体积变大。
+
+### 使用 php-cli
+
+> php-cli 是一个静态的二进制文件,类似 Go、Rust 语言编译后的单个可移植的二进制文件。
+
+采用参数 `--build-cli` 或`--build-all` 参数时,最后编译结果会输出一个 `./php` 的二进制文件,此文件可分发、可直接使用。
+该文件编译后会存放在 `buildroot/bin/` 目录中,名称为 `php`,拷贝出来即可。
+
+```bash
+cd buildroot/bin/
+./php -v # 检查版本
+./php -m # 检查编译的扩展
+./php your_code.php # 运行代码
+./php your_project.phar # 运行打包为 phar 单文件的项目
+```
+
+### 使用 micro.sfx
+
+> phpmicro 是一个提供自执行二进制 PHP 的项目,本项目依赖 phpmicro 进行编译自执行二进制。详见 [dixyes/phpmicro](https://github.com/dixyes/phpmicro)。
+
+采用项目参数 `--build-micro` 或 `--build-all` 时,最后编译结果会输出一个 `./micro.sfx` 的文件,此文件需要配合你的 PHP 源码使用。
+该文件编译后会存放在 `buildroot/bin/` 目录中,拷贝出来即可。
+
+使用时应准备好你的项目源码文件,可以是单个 PHP 文件,也可以是 Phar 文件。
+
+```bash
+echo " code.php
+cat micro.sfx code.php > single-app && chmod +x single-app
+./single-app
+```
+
+如果打包 PHAR 文件,仅需把 code.php 更换为 phar 文件路径即可。
+你可以使用 [box-project/box](https://github.com/box-project/box) 将你的 CLI 项目打包为 Phar,
+然后将它与 phpmicro 结合,生成独立可执行的二进制文件。
+
+```bash
+# 使用 static-php-cli 生成的 micro.sfx 结合,也可以直接使用 cat 命令结合它们
+bin/spc micro:combine my-app.phar
+cat buildroot/bin/micro.sfx my-app.phar > my-app && chmod +x my-app
+
+# 使用 micro:combine 结合可以将 INI 选项注入到二进制中
+bin/spc micro:combine my-app.phar -I "memory_limit=4G" -I "disable_functions=system" --output my-app-2
+```
+
+> 有些情况下的 phar 文件或 PHP 项目可能无法在 micro 环境下运行。
+
+### 使用 php-fpm
+
+采用项目参数 `--build-fpm` 或 `--build-all` 时,最后编译结果会输出一个 `./php-fpm` 的文件。
+该文件存放在 `buildroot/bin/` 目录,拷贝出来即可使用。
+
+在正常的 Linux 发行版和 macOS 系统中,安装 php-fpm 后包管理会自动生成默认的 fpm 配置文件。
+因为 php-fpm 必须指定配置文件才可启动,本项目编译的 php-fpm 不会带任何配置文件,所以需自行编写 `php-fpm.conf` 和 `pool.conf` 配置文件。
+
+指定 `php-fpm.conf` 可以使用命令参数 `-y`,例如:`./php-fpm -y php-fpm.conf`。
+
+### 使用 php-embed
+
+采用项目参数 `--build-embed` 或 `--build-all` 时,最后编译结果会输出一个 `libphp.a`、`php-config` 以及一系列头文件,存放在 `buildroot/`,你可以在你的其他代码中引入它们。
+
+如果你知道 [embed SAPI](https://github.com/php/php-src/tree/master/sapi/embed),你应该知道如何使用它。对于有可能编译用到引入其他库的问题,你可以使用 `buildroot/bin/php-config` 来获取编译时的配置。
+
+另外,有关如何使用此功能的高级示例,请查看[如何使用它构建 FrankenPHP 的静态版本](https://github.com/dunglas/frankenphp/blob/main/docs/static.md)。
+
+## 贡献
+
+如果缺少你需要的扩展,可发起 Issue。如果你对本项目较熟悉,也欢迎为本项目发起 Pull Request。
+
+另外,添加新扩展的贡献方式,可以参考下方 `进阶`。
+
+如果你想贡献文档内容,请到项目仓库 [crazywhalecc/static-php-cli-docs](https://github.com/crazywhalecc/static-php-cli-docs) 贡献。
+
+## 赞助本项目
+
+你可以在 [我的个人赞助页](https://github.com/crazywhalecc/crazywhalecc/blob/master/FUNDING.md) 支持我和我的项目。
+
+## 开源协议
+
+本项目依据旧版本惯例采用 MIT License 开源,部分扩展的集成编译命令参考或修改自以下项目:
+
+- [dixyes/lwmbs](https://github.com/dixyes/lwmbs)(木兰宽松许可证)
+- [swoole/swoole-cli](https://github.com/swoole/swoole-cli)(Apache 2.0 LICENSE、SWOOLE-CLI LICENSE)
+
+因本项目的特殊性,使用项目编译过程中会使用很多其他开源项目,例如 curl、protobuf 等,它们都有各自的开源协议。
+请在编译完成后,使用命令 `bin/spc dump-license` 导出项目使用项目的开源协议,并遵守对应项目的 LICENSE。
+
+## 进阶
+
+本项目重构分支为模块化编写。如果你对本项目感兴趣,想加入开发,可以参照文档的 [贡献指南](https://static-php.dev) 贡献代码或文档。
diff --git a/README.md b/README.md
index ca3d0f0f..3bd471fc 100755
--- a/README.md
+++ b/README.md
@@ -2,35 +2,35 @@
Build single static PHP binary, with PHP project together, with popular extensions included.
-**If you are using English, see [English README](README-en.md).**
+🌐 **[中文](README-zh.md)** | **[English](README.md)**
-> 项目别名:standalone-php-compiler
+The project name is static-php-cli, but it actually supports cli, fpm, micro and embed SAPI 😎
-编译纯静态的 PHP Binary 二进制文件,带有各种扩展,让 PHP-cli 应用变得更便携!(cli SAPI)
+Compile a purely static php-cli binary file with various extensions to make PHP applications more portable! (cli SAPI)
-
+
-同时可以使用 micro 二进制文件,将 PHP 源码和 PHP 二进制构建为一个文件分发!(micro SAPI)
+You can also use the micro binary file to combine php binary and php source code into one for distribution! (micro SAPI)
-
+
-> 该 SAPI 源自 [dixyes/phpmicro](https://github.com/dixyes/phpmicro) 的 [Fork 仓库](https://github.com/crazywhalecc/phpmicro)。
+> This SAPI feature is from the [Fork](https://github.com/crazywhalecc/phpmicro) of [dixyes/phpmicro](https://github.com/dixyes/phpmicro).
-[]()
+[]()
[]()
[](https://github.com/crazywhalecc/static-php-cli/actions/workflows/build.yml)
[](https://github.com/crazywhalecc/static-php-cli/actions/workflows/build.yml)
+
[]()
[]()
-> 项目名称是 static-php-cli,但其实支持 cli、fpm、micro 和 embed SAPI 😎
+## Compilation Requirements
-## 编译环境需求
+Yes, this project is written in PHP, pretty funny.
+But static-php-cli runtime only requires an environment above PHP 8.1 and `mbstring`, `pcntl` extension.
-是的,本项目采用 PHP 编写,编译前需要一个 PHP 环境,比较滑稽。
-但本项目默认可通过自身构建的 micro 和 static-php 二进制运行,其他只需要包含 mbstring、pcntl 扩展和 PHP 版本大于等于 8.1 即可。
-
-下面是架构支持情况,`CI` 代表支持 GitHub Action 构建,`Local` 代表支持本地构建,空 代表暂不支持。
+Here is the architecture support status, where `CI` represents support for GitHub Action builds,
+`Local` represents support for local builds, and blank represents not currently supported.
| | x86_64 | aarch64 |
|---------|-----------|-----------|
@@ -39,191 +39,244 @@ Build single static PHP binary, with PHP project together, with popular extensio
| Windows | | |
| FreeBSD | Local | Local |
-> macOS-arm64 因 GitHub 暂未提供 arm runner,如果要构建 arm 二进制,可以使用手动构建。
+> macOS-arm64 is not supported for GitHub Actions, if you are going to build on arm, you can build it manually on your own machine.
-目前支持编译的 PHP 版本为:`7.3`,`7.4`,`8.0`,`8.1`,`8.2`,`8.3`。
+Currently supported PHP versions for compilation are: `7.3`, `7.4`, `8.0`, `8.1`, `8.2`, `8.3`.
-## 文档
+## Docs
-点击这里查看文档:。
+docs here: .
-## 使用
+## Simple Usage
-请先根据下方扩展列表选择你要编译的扩展。
+Please first select the extension you want to compile based on the extension list below.
-### 自托管直接下载
+### Direct Download
-如果你不想自行编译,可以从本项目现有的 Action 下载 Artifact,也可以从自托管的服务器下载:[进入](https://dl.static-php.dev/static-php-cli/common/)
+If you don't compile yourself, you can download example pre-compiled artifact from Actions, or from self-hosted server: [Here](https://dl.static-php.dev/static-php-cli/common/)
-> 自托管的服务器默认包含的扩展有:`bcmath,bz2,calendar,ctype,curl,dom,exif,fileinfo,filter,ftp,gd,gmp,iconv,xml,mbstring,mbregex,mysqlnd,openssl,pcntl,pdo,pdo_mysql,pdo_sqlite,phar,posix,redis,session,simplexml,soap,sockets,sqlite3,tokenizer,xmlwriter,xmlreader,zlib,zip`
+> self-hosted server contains extensions: `bcmath,bz2,calendar,ctype,curl,dom,exif,fileinfo,filter,ftp,gd,gmp,iconv,xml,mbstring,mbregex,mysqlnd,openssl,pcntl,pdo,pdo_mysql,pdo_sqlite,phar,posix,redis,session,simplexml,soap,sockets,sqlite3,tokenizer,xmlwriter,xmlreader,zlib,zip`
-### 支持的扩展情况
+### Supported Extensions
-[扩展支持列表](https://static-php.dev/zh/guide/extensions.html)
+[Supported Extension List](https://static-php.dev/en/guide/extensions.html)
-> 如果这里没有你需要的扩展,可以提交 Issue。
+> If an extension you need is missing, you can submit an issue.
-### 使用 Actions 构建
+### GitHub Actions Build
-使用 GitHub Action 可以方便地构建一个静态编译的 PHP 和 phpmicro,同时可以自行定义要编译的扩展。
+Use GitHub Action to easily build a statically compiled PHP and phpmicro,
+and at the same time define the extensions to be compiled by yourself.
-1. Fork 本项目。
-2. 进入项目的 Actions,选择 CI。
-3. 选择 `Run workflow`,填入你要编译的 PHP 版本、目标类型、扩展列表。(扩展列表使用英文逗号分割,例如 `bcmath,curl,mbstring`)
-4. 等待大约一段时间后,进入对应的任务中,获取 `Artifacts`。
+1. Fork me.
+2. Go to the Actions of the project and select `CI`.
+3. Select `Run workflow`, fill in the PHP version you want to compile, the target type, and the list of extensions. (extensions comma separated, e.g. `bcmath,curl,mbstring`)
+4. After waiting for about a period of time, enter the corresponding task and get `Artifacts`.
-如果你选择了 `debug`,则会在构建时输出所有日志,包括编译的日志,以供排查错误。
+If you enable `debug`, all logs will be output at build time, including compiled logs, for troubleshooting.
-### 手动构建
+- When using ubuntu-latest, it will build linux-x86_64 binary.
+- When using macos-latest, it will build macOS-x86_64 binary.
-先克隆本项目:
+### Manual build (using SPC binary)
+
+This project provides a binary file of static-php-cli.
+You can directly download the binary file of the corresponding platform and then use it to build static PHP.
+Currently, the platforms supported by `spc` binary are Linux and macOS.
+
+Here's how to download from GitHub Actions:
+
+1. Enter [GitHub Actions](https://github.com/crazywhalecc/static-php-cli/actions/workflows/release-build.yml).
+2. Select the latest build task, select `Artifacts`, and download the binary file of the corresponding platform.
+3. Unzip the `.zip` file. After decompressing, add execution permissions to it: `chmod +x ./spc`.
+
+You can also download binaries from a self-hosted server: [enter](https://dl.static-php.dev/static-php-cli/spc-bin/nightly/).
+
+### Manual build (using source code)
+
+Clone repo first:
```bash
git clone https://github.com/crazywhalecc/static-php-cli.git
```
-如果你本机没有安装 PHP,你需要先使用包管理(例如 brew、apt、yum、apk 等)安装 php。
+If you have not installed php on your system, you can use package management to install PHP (such as brew, apt, yum, apk etc.).
-你也可以通过 `bin/setup-runtime` 命令下载静态编译好的 php-cli 和 Composer。下载的 php 和 Composer 将保存为 `bin/php` 和 `bin/composer`。
+And you can also download single-file php binary and composer using command `bin/setup-runtime`.
+The PHP runtime for static-php-cli itself will be downloaded at `bin/php`, and composer is at `bin/composer`.
```bash
cd static-php-cli
chmod +x bin/setup-runtime
+# It will download php-cli from self-hosted server and composer from getcomposer.org
./bin/setup-runtime
-# 使用独立的 php 运行 static-php-cli
+# Use this php runtime to run static-php-cli compiler
./bin/php bin/spc
-# 使用 composer
+# Use composer
./bin/php bin/composer
-```
-下面是使用 static-php-cli 编译静态 php 和 micro 的基础用法:
-
-```bash
-# 克隆本项目
+# Initialize this project
cd static-php-cli
composer update
chmod +x bin/spc
-# 检查环境依赖,并根据提示的命令安装缺失的编译工具
-./bin/spc doctor
-# 拉取所有依赖库
-./bin/spc fetch --all
-# 构建包含 bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl 扩展的 php-cli 和 micro.sfx
-./bin/spc build "bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl" --build-cli --build-micro
```
-你也可以使用参数 `--with-php=x.y` 来指定下载的 PHP 版本,目前支持 7.3 ~ 8.3:
+### Use static-php-cli
+
+Basic usage for building php and micro with some extensions:
+
+> If you are using the packaged `spc` binary, you need to replace `bin/spc` with `./spc` in the following commands.
```bash
-# 优先考虑使用 >= 8.0 的 PHP 版本,因为 phpmicro 不支持在 PHP7 中构建
+# Check system tool dependencies, fix them automatically
+./bin/spc doctor
+# fetch all libraries
+./bin/spc fetch --all
+# with bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl extension, build both CLI and phpmicro SAPI
+./bin/spc build bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl --build-cli --build-micro
+```
+
+You can also use the parameter `--with-php=x.y` to specify the downloaded PHP version, currently supports 7.4 ~ 8.2:
+
+```bash
+# Using PHP >= 8.0 is recommended, because PHP7 cannot use phpmicro
./bin/spc fetch --with-php=8.2 --all
```
-其中,目前支持构建 cli,micro,fpm 三种静态二进制,使用以下参数的一个或多个来指定编译的 SAPI:
+Now we support `cli`, `micro`, `fpm`, you can use one or more of the following parameters to specify the compiled SAPI:
-- `--build-cli`:构建 cli 二进制
-- `--build-micro`:构建 phpmicro 自执行二进制
-- `--build-fpm`:构建 fpm
-- `--build-embed`:构建 embed(libphp)
-- `--build-all`:构建所有
+- `--build-cli`: build static cli executable
+- `--build-micro`: build static phpmicro self-extracted executable
+- `--build-fpm`: build static fpm binary
+- `--build-embed`: build embed (libphp)
+- `--build-all`: build all
-如果出现了任何错误,可以使用 `--debug` 参数来展示完整的输出日志,以供排查错误:
+If anything goes wrong, use `--debug` option to display full terminal output:
```bash
./bin/spc build openssl,pcntl,mbstring --debug --build-all
./bin/spc fetch --all --debug
```
-此外,默认编译的 PHP 为 NTS 版本。如需编译线程安全版本(ZTS),只需添加参数 `--enable-zts` 即可。
+In addition, we build NTS by default. If you are going to build ZTS version, just add `--enable-zts` option.
```bash
./bin/spc build openssl,pcntl --build-all --enable-zts
```
-同时,你也可以使用参数 `--no-strip` 来关闭裁剪,关闭裁剪后可以使用 gdb 等工具调试,但这样会让静态二进制体积变大。
+Adding option `--no-strip` can produce binaries with debug symbols, in order to debug (using gdb). Disabling strip will increase the size of static binary.
-### 使用 php-cli
+### php-cli Usage
-> php-cli 是一个静态的二进制文件,类似 Go、Rust 语言编译后的单个可移植的二进制文件。
+> php-cli is a single static binary, you can use it like normal php installed on your system.
-采用参数 `--build-cli` 或`--build-all` 参数时,最后编译结果会输出一个 `./php` 的二进制文件,此文件可分发、可直接使用。
-该文件编译后会存放在 `buildroot/bin/` 目录中,名称为 `php`,拷贝出来即可。
+When using the parameter `--build-cli` or `--build-all`,
+the final compilation result will output a binary file named `./php`,
+which can be distributed and used directly.
+This file will be located in the directory `buildroot/bin/`, copy it out for use.
```bash
cd buildroot/bin/
-./php -v # 检查版本
-./php -m # 检查编译的扩展
-./php your_code.php # 运行代码
-./php your_project.phar # 运行打包为 phar 单文件的项目
+./php -v # check version
+./php -m # check extensions
+./php your_code.php # run your php code
+./php your_project.phar # run your phar (project archive)
```
-### 使用 micro.sfx
+### micro.sfx Usage
-> phpmicro 是一个提供自执行二进制 PHP 的项目,本项目依赖 phpmicro 进行编译自执行二进制。详见 [dixyes/phpmicro](https://github.com/dixyes/phpmicro)。
+> phpmicro is a SelF-extracted eXecutable SAPI module,
+> provided by [dixyes/phpmicro](https://github.com/dixyes/phpmicro).
+> It can put php runtime and your source code together.
-采用项目参数 `--build-micro` 或 `--build-all` 时,最后编译结果会输出一个 `./micro.sfx` 的文件,此文件需要配合你的 PHP 源码使用。
-该文件编译后会存放在 `buildroot/bin/` 目录中,拷贝出来即可。
+When using the parameter `--build-all` or `--build-micro`,
+the final compilation result will output a file named `./micro.sfx`,
+which needs to be used with your PHP source code like `code.php`.
+This file will be located in the path `buildroot/bin/micro.sfx`, simply copy it out for use.
-使用时应准备好你的项目源码文件,可以是单个 PHP 文件,也可以是 Phar 文件。
+Prepare your project source code, which can be a single PHP file or a Phar file, for use.
```bash
echo " code.php
cat micro.sfx code.php > single-app && chmod +x single-app
./single-app
-
-# 如果打包 PHAR 文件,仅需把 code.php 更换为 phar 文件路径即可
```
-> 有些情况下的 phar 文件可能无法在 micro 环境下运行。
+If you package a PHAR file, just replace `code.php` with the phar file path.
+You can use [box-project/box](https://github.com/box-project/box) to package your CLI project as Phar,
+It is then combined with phpmicro to produce a standalone executable binary.
-### 使用 php-fpm
+```bash
+# Use the micro.sfx generated by static-php-cli to combine,
+bin/spc micro:combine my-app.phar
+# or you can directly use the cat command to combine them.
+cat buildroot/bin/micro.sfx my-app.phar > my-app && chmod +x my-app
-采用项目参数 `--build-fpm` 或 `--build-all` 时,最后编译结果会输出一个 `./php-fpm` 的文件。
-该文件存放在 `buildroot/bin/` 目录,拷贝出来即可使用。
+# Use micro:combine combination to inject INI options into the binary.
+bin/spc micro:combine my-app.phar -I "memory_limit=4G" -I "disable_functions=system" --output my-app-2
+```
-在正常的 Linux 发行版和 macOS 系统中,安装 php-fpm 后包管理会自动生成默认的 fpm 配置文件。
-因为 php-fpm 必须指定配置文件才可启动,本项目编译的 php-fpm 不会带任何配置文件,所以需自行编写 `php-fpm.conf` 和 `pool.conf` 配置文件。
+> In some cases, PHAR files may not run in a micro environment.
-指定 `php-fpm.conf` 可以使用命令参数 `-y`,例如:`./php-fpm -y php-fpm.conf`。
+### php-fpm Usage
-### 使用 php-embed
+When using the parameter `--build-all` or `--build-fpm`,
+the final compilation result will output a file named `./php-fpm`,
+This file will be located in the path `buildroot/bin/`, simply copy it out for use.
-采用项目参数 `--build-embed` 或 `--build-all` 时,最后编译结果会输出一个 `libphp.a`、`php-config` 以及一系列头文件,存放在 `buildroot/`,你可以在你的其他代码中引入它们。
+In normal Linux distributions and macOS systems, the package manager will automatically generate a default fpm configuration file after installing php-fpm.
+Because php-fpm must specify a configuration file before running, the php-fpm compiled by this project will not have any configuration files, so you need to write `php-fpm.conf` and `pool.conf` configuration files yourself.
-如果你知道 [embed SAPI](https://github.com/php/php-src/tree/master/sapi/embed),你应该知道如何使用它。对于有可能编译用到引入其他库的问题,你可以使用 `buildroot/bin/php-config` 来获取编译时的配置。
+Specifying `php-fpm.conf` can use the command parameter `-y`, for example: `./php-fpm -y php-fpm.conf`.
-另外,有关如何使用此功能的高级示例,请查看[如何使用它构建 FrankenPHP 的静态版本](https://github.com/dunglas/frankenphp/blob/main/docs/static.md)。
+### Embed Usage
-## 贡献
+When using the project parameters `--build-embed` or `--build-all`,
+the final compilation result will output a `libphp.a`, `php-config` and a series of header files,
+stored in `buildroot/`. You can introduce them in your other projects.
-如果缺少你需要的扩展,可发起 Issue。如果你对本项目较熟悉,也欢迎为本项目发起 Pull Request。
+If you know [embed SAPI](https://github.com/php/php-src/tree/master/sapi/embed), you should know how to use it.
+You may require the introduction of other libraries during compilation,
+you can use `buildroot/bin/php-config` to obtain the compile-time configuration.
-贡献基本原则如下:
+For an advanced example of how to use this feature, take a look at [how to use it to build a static version of FrankenPHP](https://github.com/dunglas/frankenphp/blob/main/docs/static.md).
-- 项目采用了 php-cs-fixer、phpstan 作为代码规范工具,贡献前请对更新的代码执行 `composer analyze` 和 `composer cs-fix`。
-- 涉及到其他开源库的部分应提供对应库的协议,同时对配置文件在修改后采用命令 `sort-config` 排序。有关排序的命令,见文档。
-- 应遵循命名规范,例如扩展名称应采取 PHP 内注册的扩展名本身,外部库名应遵循项目本身的名称,内部逻辑的函数、类名、变量等应遵循驼峰、下划线等格式,禁止同一模块混用。
-- 涉及编译外部库的命令和 Patch 时应注意兼容不同操作系统。
+## Contribution
-另外,添加新扩展的贡献方式,可以参考下方 `进阶`。
+If the extension you need is missing, you can create an issue.
+If you are familiar with this project, you are also welcome to initiate a pull request.
-如果你想贡献文档内容,请到项目仓库 [crazywhalecc/static-php-cli-docs](https://github.com/crazywhalecc/static-php-cli-docs) 贡献。
+If you want to contribute document content, please go to [crazywhalecc/static-php-cli-docs](https://github.com/crazywhalecc/static-php-cli-docs).
-## 赞助本项目
+Part of the English document is written by me, and part is translated by Google,
+and there may be inaccurate descriptions, strange or offensive expressions.
+If you are a native English speaker, some corrections to the documentation are welcome.
-你可以在 [我的个人赞助页](https://github.com/crazywhalecc/crazywhalecc/blob/master/FUNDING.md) 支持我和我的项目。
-## 开源协议
+## Sponsor this project
-本项目依据旧版本惯例采用 MIT License 开源,部分扩展的集成编译命令参考或修改自以下项目:
+You can sponsor my project on [this page](https://github.com/crazywhalecc/crazywhalecc/blob/master/FUNDING.md).
-- [dixyes/lwmbs](https://github.com/dixyes/lwmbs)(木兰宽松许可证)
-- [swoole/swoole-cli](https://github.com/swoole/swoole-cli)(Apache 2.0 LICENSE、SWOOLE-CLI LICENSE)
+## Open-Source License
-因本项目的特殊性,使用项目编译过程中会使用很多其他开源项目,例如 curl、protobuf 等,它们都有各自的开源协议。
-请在编译完成后,使用命令 `bin/spc dump-license` 导出项目使用项目的开源协议,并遵守对应项目的 LICENSE。
+This project itself is based on MIT License,
+some newly added extensions and dependencies may originate from the following projects (including but not limited to),
+and the headers of these code files will also be given additional instructions LICENSE and AUTHOR:
-## 进阶
+- [dixyes/lwmbs](https://github.com/dixyes/lwmbs) (Mulun Permissive License)
+- [swoole/swoole-cli](https://github.com/swoole/swoole-cli) (Apache 2.0 LICENSE+SWOOLE-CLI LICENSE)
-本项目重构分支为模块化编写。如果你对本项目感兴趣,想加入开发,可以参照文档的 [贡献指南](https://static-php.dev) 贡献代码或文档。
+Due to the special nature of this project,
+many other open source projects such as curl and protobuf will be used during the project compilation process,
+and they all have their own open source licenses.
+
+Please use the `bin/spc dump-license` command to export the open source licenses used in the project after compilation,
+and comply with the corresponding project's LICENSE.
+
+## Advanced
+
+The refactoring branch of this project is written modularly.
+If you are interested in this project and want to join the development,
+you can refer to the [Contribution Guide](https://static-php.dev) of the documentation to contribute code or documentation.