diff --git a/README-zh.md b/README-zh.md
index 68602e84..9791335a 100755
--- a/README-zh.md
+++ b/README-zh.md
@@ -1,32 +1,44 @@
# 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/static-php/phpmicro)。
-
-[]()
-[]()
+[]()
[](https://github.com/crazywhalecc/static-php-cli/actions/workflows/tests.yml)
-[]()
-[]()
+[]()
+[]([https://static-php.dev/](https://static-php.dev/en/guide/extensions.html))
+[](https://discord.gg/RNpegEYW)
-> 项目名称是 static-php-cli,但其实支持 cli、fpm、micro 和 embed SAPI 😎
+**static-php-cli**是一个用于静态编译、构建 PHP 解释器的工具,支持众多流行扩展。
+
+目前 static-php-cli 支持 `cli`、`fpm`、`embed` 和 `micro` SAPI。
+
+**static-php-cli**也支持将 PHP 代码和 PHP 运行时打包为一个文件并运行。
+
+- [README - English](./README.md)
+- [README - 中文](./README-zh.md)
+
+## 特性
+
+static-php-cli(简称 `spc`)有许多特性:
+
+- :handbag: 构建独立的单文件 PHP 解释器,无需任何依赖
+- :hamburger: 构建 **[phpmicro](https://github.com/dixyes/phpmicro)** 自执行二进制(将 PHP 代码和 PHP 解释器打包为一个文件)
+- :pill: 提供一键检查和修复编译环境的 Doctor 模块
+- :zap: 支持多个系统:`Linux`、`macOS`、`FreeBSD`、[`Windows (WIP)`](https://github.com/crazywhalecc/static-php-cli/pull/301)
+- :wrench: 高度自定义的代码 patch 功能
+- :books: 自带编译依赖管理
+- 📦 提供由自身编译的独立 `spc` 二进制(使用 spc 和 [box](https://github.com/box-project/box) 构建)
+- :fire: 支持大量 [扩展](https://static-php.dev/zh/guide/extensions.html)
+
+**静态 php-cli:**
+
+
+**使用 phpmicro 打包 PHP 代码:**
+
## 文档
目前 README 编写了基本用法。有关 static-php-cli 所有的功能,请点击这里查看文档:。
-## 自托管直接下载
+## 直接下载
如果你不想自行编译 PHP,可以从本项目现有的示例 Action 下载 Artifact,也可以从自托管的服务器下载。
@@ -38,6 +50,10 @@ Build single static PHP binary, with PHP project together, with popular extensio
### 编译环境需求
+- PHP >= 8.1(spc 自身是用 PHP 写的)
+- 扩展:`mbstring,pcntl,posix,tokenizer,phar`
+- 系统安装了 `curl` 和 `git`
+
是的,本项目采用 PHP 编写,编译前需要一个 PHP 环境,比较滑稽。
但本项目默认可通过自身构建的 micro 和 static-php 二进制运行,其他只需要包含 mbstring、pcntl 扩展和 PHP 版本大于等于 8.1 即可。
@@ -50,11 +66,9 @@ Build single static PHP binary, with PHP project together, with popular extensio
| Windows | | |
| FreeBSD | :computer: | :computer: |
-> macOS-arm64 因 GitHub 暂未提供 arm runner,如果要构建 arm 二进制,可以使用手动构建。
-
目前支持编译的 PHP 版本为:`7.3`,`7.4`,`8.0`,`8.1`,`8.2`,`8.3`。
-### 支持的扩展情况
+### 支持的扩展
请先根据下方扩展列表选择你要编译的扩展。
@@ -63,7 +77,7 @@ Build single static PHP binary, with PHP project together, with popular extensio
> 如果这里没有你需要的扩展,可以提交 Issue。
-### 使用 Actions 构建
+### 在线构建(使用 GitHub Actions)
使用 GitHub Action 可以方便地构建一个静态编译的 PHP,同时可以自行定义要编译的扩展。
@@ -74,72 +88,77 @@ Build single static PHP binary, with PHP project together, with popular extensio
如果你选择了 `debug`,则会在构建时输出所有日志,包括编译的日志,以供排查错误。
-### 手动构建(使用 SPC 二进制)
+### 本地构建(使用 spc 二进制)
-本项目提供了一个 static-php-cli 的二进制文件,你可以直接下载对应平台的二进制文件,然后使用它来构建静态的 PHP。目前 `spc` 二进制支持的平台有 Linux 和 macOS。
+该项目提供了 static-php-cli 的二进制文件:`spc`。
+您可以使用 `spc` 二进制文件,无需安装任何运行时(用起来就像 golang 程序)。
+目前,`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
+# Download from self-hosted nightly builds (sync with main branch)
+# For Linux x86_64
+curl -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-linux-x86_64
+# For Linux aarch64
+curl -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-linux-aarch64
+# macOS x86_64 (Intel)
+curl -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-macos-x86_64
+# macOS aarch64 (Apple)
+curl -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-macos-aarch64
+
+# add x perm
+chmod +x ./spc
+./spc --version
+```
+
+自托管 `spc` 由 GitHub Actions 构建,你也可以从 Actions 直接下载:[此处](https://github.com/crazywhalecc/static-php-cli/actions/workflows/release-build.yml)。
+
+### 本地构建(使用 git 源码)
+
+```bash
+# clone 仓库即可
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`。
+如果您的系统上尚未安装 php,我们建议你使用内置的 setup-runtime 自动安装 PHP 和 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
+# it will download static php (from self-hosted server) and composer (from getcomposer)
+bin/setup-runtime
+# initialize composer deps
+bin/composer install
+# chmod
chmod +x bin/spc
+bin/spc --version
```
-### 使用 static-php-cli 命令行程序
+### 开始构建 PHP
-下面是使用 static-php-cli 编译静态 php 和 micro 的基础用法:
+下面是使用 static-php-cli 的基础用法:
-> 如果你使用的是打包好的 `spc` 二进制,你需要将下列命令的 `bin/spc` 替换为 `./spc`。
+> 如果你使用的是打包好的 `spc` 二进制,你需要将下列命令的 `./bin/spc` 替换为 `./spc`。
```bash
-# 检查环境依赖,并根据提示的命令安装缺失的编译工具
-./bin/spc doctor
+# 检查环境依赖,并根据尝试自动安装缺失的编译工具
+./bin/spc doctor --auto-fix
+
# 拉取所有依赖库
-./bin/spc fetch --all
-# 只拉取编译指定扩展需要的所有依赖
+./bin/spc download --all
+# 只拉取编译指定扩展需要的所有依赖(推荐)
./bin/spc download --for-extensions=openssl,pcntl,mbstring,pdo_sqlite
+# 下载编译不同版本的 PHP (--with-php=x.y,推荐 7.3 ~ 8.3)
+./bin/spc download --for-extensions=openssl,curl,mbstring --with-php=8.1
+
# 构建包含 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
+# 编译线程安全版本 (--enable-zts)
+./bin/spc build curl,phar --enable-zts --build-cli
```
-你也可以使用参数 `--with-php=x.y` 来指定下载的 PHP 版本,目前支持 7.3 ~ 8.3:
-
-```bash
-# 优先考虑使用 >= 8.0 的 PHP 版本,因为 phpmicro 不支持在 PHP7 中构建
-./bin/spc download --with-php=8.2 --all
-```
-
-其中,目前支持构建 cli,micro,fpm 三种静态二进制,使用以下参数的一个或多个来指定编译的 SAPI:
+其中,目前支持构建 cli,micro,fpm 和 embed,使用以下参数的一个或多个来指定编译的 SAPI:
- `--build-cli`:构建 cli 二进制
- `--build-micro`:构建 phpmicro 自执行二进制
@@ -151,17 +170,9 @@ chmod +x bin/spc
```bash
./bin/spc build openssl,pcntl,mbstring --debug --build-all
-./bin/spc fetch --all --debug
+./bin/spc download --all --debug
```
-此外,默认编译的 PHP 为 NTS 版本。如需编译线程安全版本(ZTS),只需添加参数 `--enable-zts` 即可。
-
-```bash
-./bin/spc build openssl,pcntl --build-all --enable-zts
-```
-
-同时,你也可以使用参数 `--no-strip` 来关闭裁剪,关闭裁剪后可以使用 gdb 等工具调试,但这样会让静态二进制体积变大。
-
## 不同 SAPI 的使用
### 使用 cli
diff --git a/README.md b/README.md
index aa7f1043..157e589f 100755
--- a/README.md
+++ b/README.md
@@ -1,28 +1,40 @@
# static-php-cli
-Build single static PHP binary, with PHP project together, with popular extensions included.
-
-🌐 **[中文](README-zh.md)** | **[English](README.md)**
-
-> Windows support will be added in v2.1.
-
-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/static-php/phpmicro) of [dixyes/phpmicro](https://github.com/dixyes/phpmicro).
-
-[]()
-[]()
+[]()
[](https://github.com/crazywhalecc/static-php-cli/actions/workflows/tests.yml)
+[]()
[]([https://static-php.dev/](https://static-php.dev/en/guide/extensions.html))
-[]()
+[](https://discord.gg/RNpegEYW)
+
+**static-php-cli** is a powerful tool designed for building static, standalone PHP runtime
+with popular extensions.
+
+Static PHP built by **static-php-cli** supports `cli`, `fpm`, `embed` and `micro` SAPI.
+
+**static-php-cli** also has the ability to package PHP projects
+along with the PHP interpreter into one single executable file.
+
+- [README - English](./README.md)
+- [README - 中文](./README-zh.md)
+
+## Features
+
+static-php-cli (you can call it `spc`) has a lot of features:
+
+- :handbag: Build single-file php executable, without any dependencies
+- :hamburger: Build **[phpmicro](https://github.com/dixyes/phpmicro)** self-extracted executable (glue php binary and php source code into one file)
+- :pill: Automatic build environment checker (Doctor module)
+- :zap: `Linux`, `macOS`, `FreeBSD`, [`Windows (WIP)`](https://github.com/crazywhalecc/static-php-cli/pull/301) support
+- :wrench: Configurable source code patches
+- :books: Build dependency management
+- 📦 Provide `spc` own standalone executable (built by spc and [box](https://github.com/box-project/box))
+- :fire: Support many popular [extensions](https://static-php.dev/en/guide/extensions.html)
+
+**Single-file standalone php-cli:**
+
+
+**Combine PHP code with PHP interpreter using phpmicro:**
+
## Documentation
@@ -31,7 +43,7 @@ see .
## Direct Download
-If you don't want to compile yourself, you can download example pre-compiled artifact from [Actions](https://github.com/static-php/static-php-cli-hosted/actions/workflows/build-php-common.yml), or from self-hosted server.
+If you don't want to build or want to test first, you can download example pre-compiled artifact from [Actions](https://github.com/static-php/static-php-cli-hosted/actions/workflows/build-php-bulk.yml), or from self-hosted server.
Below are several precompiled static-php binaries with different extension combinations,
which can be downloaded directly according to your needs.
@@ -40,14 +52,18 @@ which can be downloaded directly according to your needs.
- [Extension-Combination - bulk](https://dl.static-php.dev/static-php-cli/bulk/): `bulk` contains [50+](https://dl.static-php.dev/static-php-cli/bulk/README.txt) extensions and is about 70MB in size.
- [Extension-Combination - minimal](https://dl.static-php.dev/static-php-cli/minimal/): `minimal` contains [5](https://dl.static-php.dev/static-php-cli/minimal/README.txt) extensions and is about 6MB in size.
-## Use static-php-cli to build PHP
+## Build
### Compilation Requirements
-Yes, this project is written in PHP, pretty funny.
+- PHP >= 8.1 (static-php-cli is written in PHP)
+- Extension: `mbstring,pcntl,posix,tokenizer,phar`
+- Supported OS with `curl` and `git` installed
+
+You can say I made a PHP builder 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 :octocat: represents support for GitHub Action builds,
+Here is the supported OS and arch, where :octocat: represents support for GitHub Action builds,
:computer: represents support for local manual builds, and blank represents not currently supported.
| | x86_64 | aarch64 |
@@ -57,8 +73,6 @@ Here is the architecture support status, where :octocat: represents support for
| Windows | | |
| FreeBSD | :computer: | :computer: |
-> 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`.
### Supported Extensions
@@ -72,7 +86,7 @@ Please first select the extension you want to compile based on the extension lis
Here is the current planned roadmap for extension support: [#152](https://github.com/crazywhalecc/static-php-cli/issues/152) .
-### GitHub Actions Build
+### Build Online (using GitHub Actions)
Use GitHub Action to easily build a statically compiled PHP,
and at the same time define the extensions to be compiled by yourself.
@@ -84,80 +98,77 @@ and at the same time define the extensions to be compiled by yourself.
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.
+### Build Locally (using SPC 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.
+This project provides a binary file of static-php-cli: `spc`.
+You can use `spc` binary instead of installing any runtime like golang app.
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) or [self-hosted nightly builds](https://dl.static-php.dev/static-php-cli/spc-bin/nightly/).
-2. If you download from GHA, select the latest build task, select `Artifacts`, and download the binary file of the corresponding platform.
-3. If you download from GHA, unzip the `.zip` file. After decompressing, add execution permissions to it: `chmod +x ./spc`.
-4. If you download from self-hosted server, download `spc-$os-$arch` file and just use it (don't forget `chmod +x`).
-
-> SPC single-file binary is built by phpmicro and box, and it doesn't need to install PHP. Just treat `spc` as a standalone executable.
-
-### Manual build (using source code)
-
-Clone repo first:
+Download from self-hosted nightly builds using commands below:
```bash
+# Download from self-hosted nightly builds (sync with main branch)
+# For Linux x86_64
+curl -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-linux-x86_64
+# For Linux aarch64
+curl -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-linux-aarch64
+# macOS x86_64 (Intel)
+curl -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-macos-x86_64
+# macOS aarch64 (Apple)
+curl -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-macos-aarch64
+
+# add x perm
+chmod +x ./spc
+./spc --version
+```
+
+Self-hosted `spc` is built by GitHub Actions, you can also download from Actions artifacts [here](https://github.com/crazywhalecc/static-php-cli/actions/workflows/release-build.yml).
+
+### Build Locally (using git source)
+
+```bash
+# just clone me!
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`.
+If you have not installed php on your system, we recommend that you use the built-in setup-runtime to install PHP and Composer automatically.
```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
-
-# Initialize this project
-cd static-php-cli
-composer update
+# it will download static php (from self-hosted server) and composer (from getcomposer)
+bin/setup-runtime
+# initialize composer deps
+bin/composer install
+# chmod
chmod +x bin/spc
+bin/spc --version
```
-### Use static-php-cli
+### Start Building PHP
-Basic usage for building php and micro with some extensions:
+Basic usage for building php with some extensions:
> If you are using the packaged `spc` binary, you need to replace `bin/spc` with `./spc` in the following commands.
```bash
-# Check system tool dependencies, fix them if possible
-./bin/spc doctor
+# Check system tool dependencies, auto-fix them if possible
+./bin/spc doctor --auto-fix
+
# fetch all libraries
./bin/spc download --all
-# only fetch necessary sources by needed extensions
+# only fetch necessary sources by needed extensions (recommended)
./bin/spc download --for-extensions=openssl,pcntl,mbstring,pdo_sqlite
+# download different PHP version (--with-php=x.y, recommend 7.3 ~ 8.3)
+./bin/spc download --for-extensions=openssl,curl,mbstring --with-php=8.1
+
# 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
+# build thread-safe (ZTS) version (--enable-zts)
+./bin/spc build curl,phar --enable-zts --build-cli
```
-You can also use the parameter `--with-php=x.y` to specify the downloaded PHP version, currently supports 7.4 ~ 8.3:
-
-```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:
+Now we support `cli`, `micro`, `fpm` and `embed` SAPI. 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
@@ -169,17 +180,9 @@ 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
+./bin/spc download --all --debug
```
-In addition, we build NTS (non-thread-safe) 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.
-
## Different SAPI Usage
### Use cli
@@ -288,4 +291,3 @@ 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.
-