Skip to content

Latest commit

 

History

History
executable file
·
172 lines (121 loc) · 8.46 KB

File metadata and controls

executable file
·
172 lines (121 loc) · 8.46 KB

StaticPHP

English readme Chinese readme Releases CI License

StaticPHP 是一个用于构建静态编译可执行文件(包括 PHP、扩展等)的强大工具。

特性

  • 🐘 支持多 PHP 版本 - 支持 PHP 8.1, 8.2, 8.3, 8.4, 8.5
  • 👜 单文件 PHP 可执行文件 - 构建零依赖的独立 PHP
  • 🍔 phpmicro 集成 - 构建 phpmicro 自解压可执行文件(将 PHP 二进制文件和源代码合并为一个文件)
  • 💊 智能环境检查器 - 自动构建环境检查器,具备自动修复功能
  • 跨平台支持 - 支持 Linux、macOS、FreeBSD 和 Windows
  • 🔧 可配置补丁 - 可自定义的源代码补丁系统
  • 📚 智能依赖管理 - 自动处理构建依赖
  • 📦 自包含工具 - 提供使用 box 构建的 spc 可执行文件
  • 🔥 广泛的扩展支持 - 支持 75+ 流行 扩展
  • 💾 UPX 压缩 - 减小二进制文件大小 30-50%(仅 Linux/Windows)

单文件独立 php-cli:

out1

使用 phpmicro 将 PHP 代码与 PHP 解释器结合:

out2

快速开始

1. 下载 spc 二进制文件

# Linux x86_64
curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-linux-x86_64
# Linux aarch64
curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-linux-aarch64
# macOS x86_64 (Intel)
curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-macos-x86_64
# macOS aarch64 (Apple)
curl -fsSL -o spc https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-macos-aarch64
# Windows (x86_64, win10 build 17063 或更高版本,请先安装 VS2022)
curl.exe -fsSL -o spc.exe https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-windows-x64.exe

对于 macOS 和 Linux,请先添加执行权限:

chmod +x ./spc

2. 构建静态 PHP

首先,创建一个 craft.yml 文件,并从 扩展列表命令生成器 中指定要包含的扩展:

# PHP 版本支持:8.1, 8.2, 8.3, 8.4, 8.5
php-version: 8.4
# 在此处放置您的扩展列表
extensions: "apcu,bcmath,calendar,ctype,curl,dba,dom,exif,fileinfo,filter,gd,iconv,mbregex,mbstring,mysqli,mysqlnd,opcache,openssl,pcntl,pdo,pdo_mysql,pdo_sqlite,phar,posix,readline,redis,session,simplexml,sockets,sodium,sqlite3,tokenizer,xml,xmlreader,xmlwriter,xsl,zip,zlib"
sapi:
  - cli
  - micro
  - fpm
download-options:
  prefer-pre-built: true

运行命令:

./spc craft

# 输出完整控制台日志
./spc craft --debug

3. 静态 PHP 使用

现在您可以将 StaticPHP 构建的二进制文件复制到另一台机器上,无需依赖即可运行:

# php-cli
buildroot/bin/php -v

# phpmicro
echo '<?php echo "Hello world!\n";' > a.php
./spc micro:combine a.php -O my-app
./my-app

# php-fpm
buildroot/bin/php-fpm -v

文档

当前 README 包含基本用法。有关 StaticPHP 的所有功能, 请访问 https://static-php.dev

直接下载

如果您不想构建或想先测试,可以从 Actions 下载示例预编译工件,或从自托管服务器下载。

以下是几个具有不同扩展组合的预编译静态 PHP 二进制文件, 您可以根据需要直接下载。

组合名称 扩展数量 系统 备注
common 30+ Linux, macOS 二进制文件大小约为 7.5MB
bulk 50+ Linux, macOS 二进制文件大小约为 25MB
gnu-bulk 50+ Linux, macOS 使用 glibc 的 bulk 组合
minimal 5 Linux, macOS 二进制文件大小约为 3MB
spc-min 5 Windows 二进制文件大小约为 3MB
spc-max 40+ Windows 二进制文件大小约为 8.5MB

Linux 和 Windows 支持对二进制文件进行 UPX 压缩,可以将二进制文件大小减少 30% 到 50%。 macOS 不支持 UPX 压缩,因此 mac 的预构建二进制文件大小较大。

在线构建(使用 GitHub Actions)

上方直接下载的二进制不能满足需求时,可使用 GitHub Action 可以轻松构建静态编译的 PHP, 同时自行定义要编译的扩展。

  1. Fork 本项目。
  2. 进入项目的 Actions 并选择 CI
  3. 选择 Run workflow,填入您要编译的 PHP 版本、目标类型和扩展列表。(扩展用逗号分隔,例如 bcmath,curl,mbstring
  4. 等待一段时间后,进入相应的任务并获取 Artifacts

如果您启用 debug,构建时将输出所有日志,包括编译日志,以便故障排除。

贡献

如果您需要的扩展缺失,可以创建 issue。 如果您熟悉本项目,也欢迎发起 pull request。

如果您想贡献文档,请直接编辑 docs/ 目录。

现在有一个 static-php 组织,用于存储与项目相关的仓库。

赞助本项目

您可以从 GitHub Sponsor 赞助我或我的项目。您捐赠的一部分将用于维护 static-php.dev 服务器。

特别感谢以下赞助商

Beyond Code Logo

NativePHP Logo

开源许可证

本项目本身基于 MIT 许可证, 一些新添加的扩展和依赖可能来自其他项目, 这些代码文件的头部也会给出额外的许可证和作者说明。

这些是类似的项目:

本项目使用了 dixyes/lwmbs 的一些代码,例如 Windows 静态构建目标和 libiconv 支持。 lwmbs 基于 Mulan PSL 2 许可证。

由于本项目的特殊性, 项目编译过程中会使用许多其他开源项目,如 curl 和 protobuf, 它们都有自己的开源许可证。

请在编译后使用 bin/spc dump-license 命令导出项目中使用的开源许可证, 并遵守相应项目的 LICENSE。