diff --git a/README-en.md b/README-en.md index 552dbfd4..f9a6c93f 100755 --- a/README-en.md +++ b/README-en.md @@ -92,7 +92,7 @@ chmod +x bin/spc # 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-all +./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: @@ -102,10 +102,17 @@ You can also use the parameter `--with-php=x.y` to specify the downloaded PHP ve ./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-all`: build all + If anything goes wrong, use `--debug` option to display full terminal output: ```bash -./bin/spc build openssl,pcntl,mbstring --debug +./bin/spc build openssl,pcntl,mbstring --debug --build-all ./bin/spc fetch --all --debug ``` @@ -113,7 +120,7 @@ If anything goes wrong, use `--debug` option to display full terminal output: > php-cli is a single static binary, you can use it like normal php installed on your system. -When using the parameter `--build-all` or not adding the `--build-micro` parameter, +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. @@ -149,6 +156,17 @@ cat micro.sfx code.php > single-app && chmod +x single-app > 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`. + ## Current Status - [X] Basic CLI framework (by `symfony/console`) @@ -157,7 +175,7 @@ cat micro.sfx code.php > single-app && chmod +x single-app - [X] Exception handler - [ ] Windows support - [X] PHP 7.4 support -- [ ] fpm support +- [X] fpm support More functions and features are coming soon, Bugs and TODOs: https://github.com/crazywhalecc/static-php-cli/issues/32 diff --git a/README.md b/README.md index d6ef8bce..ff865076 100755 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ chmod +x bin/spc # 拉取所有依赖库 ./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-all +./bin/spc build "bcmath,openssl,tokenizer,sqlite3,pdo_sqlite,ftp,curl" --build-cli --build-micro ``` 你也可以使用参数 `--with-php=x.y` 来指定下载的 PHP 版本,目前支持 7.4 ~ 8.2: @@ -99,10 +99,17 @@ chmod +x bin/spc ./bin/spc fetch --with-php=8.2 --all ``` +其中,目前支持构建 cli,micro,fpm 三种静态二进制,使用以下参数的一个或多个来指定编译的 SAPI: + +- `--build-cli`:构建 cli 二进制 +- `--build-micro`:构建 phpmicro 自执行二进制 +- `--build-fpm`:构建 fpm +- `--build-all`:构建所有 + 如果出现了任何错误,可以使用 `--debug` 参数来展示完整的输出日志,以供排查错误: ```bash -./bin/spc build openssl,pcntl,mbstring --debug +./bin/spc build openssl,pcntl,mbstring --debug --build-all ./bin/spc fetch --all --debug ``` @@ -110,7 +117,7 @@ chmod +x bin/spc > php-cli 是一个静态的二进制文件,类似 Go、Rust 语言编译后的单个可移植的二进制文件。 -采用参数 `--build-all` 或不添加 `--build-micro` 参数时,最后编译结果会输出一个 `./php` 的二进制文件,此文件可分发、可直接使用。 +采用参数 `--build-cli` 或`--build-all` 参数时,最后编译结果会输出一个 `./php` 的二进制文件,此文件可分发、可直接使用。 该文件编译后会存放在 `buildroot/bin/` 目录中,名称为 `php`,拷贝出来即可。 ```bash @@ -125,8 +132,8 @@ cd buildroot/bin/ > phpmicro 是一个提供自执行二进制 PHP 的项目,本项目依赖 phpmicro 进行编译自执行二进制。详见 [dixyes/phpmicro](https://github.com/dixyes/phpmicro)。 -采用项目参数 `--build-all` 或 `--build-micro` 时,最后编译结果会输出一个 `./micro.sfx` 的文件,此文件需要配合你的 PHP 源码使用。 -该文件编译后会存放在 `source/php-src/sapi/micro/` 目录中,拷贝出来即可。 +采用项目参数 `--build-micro` 或 `--build-all` 时,最后编译结果会输出一个 `./micro.sfx` 的文件,此文件需要配合你的 PHP 源码使用。 +该文件编译后会存放在 `buildroot/bin/` 目录中,拷贝出来即可。 使用时应准备好你的项目源码文件,可以是单个 PHP 文件,也可以是 Phar 文件。 @@ -140,6 +147,16 @@ cat micro.sfx code.php > single-app && chmod +x single-app > 有些情况下的 phar 文件可能无法在 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`。 + ## 项目支持情况 - [X] 基础结构编写(采用 `symfony/console`)