mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-06 16:25:39 +08:00
2 lines
6.1 KiB
JavaScript
2 lines
6.1 KiB
JavaScript
import{_ as e,c as r,o as t,aj as i}from"./chunks/framework.C2AwuPrQ.js";const d=JSON.parse('{"title":"构建指南","description":"","frontmatter":{},"headers":[],"relativePath":"zh/guide/index.md","filePath":"zh/guide/index.md"}'),o={name:"zh/guide/index.md"};function n(p,a,l,c,s,h){return t(),r("div",null,[...a[0]||(a[0]=[i('<h1 id="构建指南" tabindex="-1">构建指南 <a class="header-anchor" href="#构建指南" aria-label="Permalink to “构建指南”"></a></h1><div class="warning custom-block"><p class="custom-block-title custom-block-title-default">WARNING</p><p>你正在阅读 StaticPHP v3 版本的文档,v2 版本将在 v3 稳定发布后废弃。v3 版本目前仍处于 alpha 阶段, 你可以在 <a href="https://static-php.github.io/v2-docs/" target="_blank" rel="noreferrer">这里</a> 查看 v2 文档。</p></div><h2 id="staticphp-是什么" tabindex="-1">StaticPHP 是什么 <a class="header-anchor" href="#staticphp-是什么" aria-label="Permalink to “StaticPHP 是什么”"></a></h2><p>StaticPHP 是一个构建工具,能够将 PHP 解释器与你所需的扩展一起编译成一个独立的二进制文件,无需在目标系统上预先安装 PHP 或任何依赖库。 构建产物可以直接分发和运行,适用于 Linux、macOS 和 Windows 平台。</p><p>StaticPHP 的能力不止于 PHP。依托同一套构建基础设施,它还可以将 <code>curl</code>、<code>pkg-config</code>、<code>htop</code> 等常用命令行工具编译为独立的静态二进制,无需在目标机器上安装任何依赖即可直接运行。后续还会持续扩充内置支持的工具集。</p><h2 id="为什么要构建静态-php" tabindex="-1">为什么要构建静态 PHP <a class="header-anchor" href="#为什么要构建静态-php" aria-label="Permalink to “为什么要构建静态 PHP”"></a></h2><p>普通 PHP 安装依赖系统环境:你需要先安装 PHP、再装扩展、再处理各个发行版之间的差异。 将 PHP 构建为静态二进制之后,这些问题都不再存在——你得到的是一个单文件可执行程序,在任何相同架构的系统上开箱即用。</p><p>典型使用场景:</p><ul><li><strong>部署命令行工具</strong>:把 PHP 工具(如 Composer、PHPStan、自研 CLI)打包后直接分发,用户无需安装 PHP。</li><li><strong>容器和嵌入式环境</strong>:用最小体积的静态 PHP 替代臃肿的基础镜像。</li><li><strong>服务端应用</strong>:构建包含 FPM 或 FrankenPHP SAPI 的静态二进制,部署更简单,不依赖宿主机环境。</li></ul><h2 id="phpmicro-把-php-和你的代码打包成一个文件" tabindex="-1">phpmicro:把 PHP 和你的代码打包成一个文件 <a class="header-anchor" href="#phpmicro-把-php-和你的代码打包成一个文件" aria-label="Permalink to “phpmicro:把 PHP 和你的代码打包成一个文件”"></a></h2><p><a href="https://micro.static-php.dev" target="_blank" rel="noreferrer">phpmicro</a> 是一个第三方 PHP SAPI,StaticPHP 对其提供原生支持。 它能将 PHP 解释器本身和你的 <code>.php</code> 源文件(或 <code>.phar</code> 打包文件)合并成单个自解压可执行文件(<code>sfx</code>)。</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex="0" dir="ltr"><code><span class="line"><span>micro.sfx + your-app.phar = your-app (可直接运行,无任何依赖)</span></span></code></pre></div><p>这特别适合分发 PHP 编写的命令行工具:用户拿到的只是一个普通的可执行文件,完全感知不到背后是 PHP。</p><h2 id="改善你的项目分发与部署" tabindex="-1">改善你的项目分发与部署 <a class="header-anchor" href="#改善你的项目分发与部署" aria-label="Permalink to “改善你的项目分发与部署”"></a></h2><p><strong>取代臃肿的 Docker 基础镜像</strong></p><p>官方 <code>php:8.x</code> 镜像动辄数百 MB,大多数情况下只是为了提供一个 PHP 运行环境。 改用静态 PHP 二进制配合极简基础镜像(甚至 <code>FROM scratch</code>),镜像体积可以压缩到个位数 MB,启动速度也更快。</p><p><strong>构建可分发的 PHP CLI 工具</strong></p><p>用 <a href="https://symfony.com/doc/current/components/console.html" target="_blank" rel="noreferrer">symfony/console</a> 或 <a href="https://laravel-zero.com" target="_blank" rel="noreferrer">Laravel Zero</a> 写好你的 CLI 程序, 再用 <a href="https://github.com/box-project/box" target="_blank" rel="noreferrer">Box</a> 打包成 <code>.phar</code>,最后通过 phpmicro 合并为单文件可执行程序。 最终产物可以直接分发,用户无需安装任何 PHP 环境,和 Go、Rust 工具的体验完全一致。</p><p><strong>基于 FrankenPHP 构建单文件 Web 应用</strong></p><p><a href="https://frankenphp.dev" target="_blank" rel="noreferrer">FrankenPHP</a> 是一个现代 PHP 应用服务器,内置 HTTP/2、HTTP/3 和 HTTPS 自动管理。 StaticPHP 支持将 FrankenPHP 连同所需扩展一起静态编译, 最终产物是一个包含完整 Web 服务器的单一可执行文件,无需 Nginx、PHP-FPM,直接部署即可运行。</p><h2 id="社区" tabindex="-1">社区 <a class="header-anchor" href="#社区" aria-label="Permalink to “社区”"></a></h2><p>加入我们的 <a href="https://discord.gg/nrSRbpMJ" target="_blank" rel="noreferrer">Discord 服务器</a>,提问、分享构建成果,与其他 StaticPHP 用户交流。</p><h2 id="接下来" tabindex="-1">接下来 <a class="header-anchor" href="#接下来" aria-label="Permalink to “接下来”"></a></h2><ul><li><a href="./installation.html">安装 StaticPHP</a> — 安装 StaticPHP 构建工具</li><li><a href="./first-build.html">第一次构建</a> — 完整流程演示:从下载源码到得到可执行文件</li><li><a href="./cli-reference.html">命令行参考</a> — 所有命令与选项速查</li></ul>',24)])])}const f=e(o,[["render",n]]);export{d as __pageData,f as default};
|