import{_ as i,c as a,o as e,a1 as l}from"./chunks/framework.gjrnbxUT.js";const _=JSON.parse('{"title":"对 PHP 源码的修改","description":"","frontmatter":{},"headers":[],"relativePath":"zh/develop/php-src-changes.md","filePath":"zh/develop/php-src-changes.md"}'),t={name:"zh/develop/php-src-changes.md"},c=l('<h1 id="对-php-源码的修改" tabindex="-1">对 PHP 源码的修改 <a class="header-anchor" href="#对-php-源码的修改" aria-label="Permalink to &quot;对 PHP 源码的修改&quot;">​</a></h1><p>由于 static-php-cli 在静态编译过程中为了实现良好的兼容性、性能和安全性，对 PHP 源码进行了一些修改。下面是目前对 PHP 源码修改的说明。</p><h2 id="micro-相关补丁" tabindex="-1">micro 相关补丁 <a class="header-anchor" href="#micro-相关补丁" aria-label="Permalink to &quot;micro 相关补丁&quot;">​</a></h2><p>基于 phpmicro 项目提供的补丁，static-php-cli 对 PHP 源码进行了一些修改，以适应静态编译的需求。<a href="https://github.com/easysoft/phpmicro/tree/master/patches" target="_blank" rel="noreferrer">补丁列表</a> 包含：</p><p>目前 static-php-cli 在编译时用到的补丁有：</p><ul><li>static_opcache</li><li>static_extensions_win32</li><li>cli_checks</li><li>disable_huge_page</li><li>vcruntime140</li><li>win32</li><li>zend_stream</li><li>cli_static</li><li>macos_iconv</li><li>phar</li></ul><h2 id="php-8-1-libxml-补丁" tabindex="-1">PHP &lt;= 8.1 libxml 补丁 <a class="header-anchor" href="#php-8-1-libxml-补丁" aria-label="Permalink to &quot;PHP &lt;= 8.1 libxml 补丁&quot;">​</a></h2><p>因为 PHP 官方仅对 8.1 进行安全更新，旧版本停止更新，所以 static-php-cli 对 PHP 8.1 及以下版本应用了在新版本 PHP 中已经应用的 libxml 编译补丁。</p><h2 id="gd-扩展-windows-补丁" tabindex="-1">gd 扩展 Windows 补丁 <a class="header-anchor" href="#gd-扩展-windows-补丁" aria-label="Permalink to &quot;gd 扩展 Windows 补丁&quot;">​</a></h2><p>在 Windows 下编译 gd 扩展需要大幅改动 <code>config.w32</code> 文件，static-php-cli 对 gd 扩展进行了一些修改，使其在 Windows 下编译更加方便。</p><h2 id="yaml-扩展-windows-补丁" tabindex="-1">yaml 扩展 Windows 补丁 <a class="header-anchor" href="#yaml-扩展-windows-补丁" aria-label="Permalink to &quot;yaml 扩展 Windows 补丁&quot;">​</a></h2><p>yaml 扩展在 Windows 下编译需要修改 <code>config.w32</code> 文件，static-php-cli 对 yaml 扩展进行了一些修改，使其在 Windows 下编译更加方便。</p><h2 id="static-php-cli-版本信息插入" tabindex="-1">static-php-cli 版本信息插入 <a class="header-anchor" href="#static-php-cli-版本信息插入" aria-label="Permalink to &quot;static-php-cli 版本信息插入&quot;">​</a></h2><p>static-php-cli 在编译时会在 PHP 版本信息中插入 static-php-cli 的版本信息，以便于识别。</p><h2 id="加入硬编码-ini-的选项" tabindex="-1">加入硬编码 INI 的选项 <a class="header-anchor" href="#加入硬编码-ini-的选项" aria-label="Permalink to &quot;加入硬编码 INI 的选项&quot;">​</a></h2><p>在使用 <code>-I</code> 参数硬编码 INI 到静态 PHP 的功能中，static-php-cli 会修改 PHP 源码以插入硬编码内容。</p><h2 id="linux-系统修复补丁" tabindex="-1">Linux 系统修复补丁 <a class="header-anchor" href="#linux-系统修复补丁" aria-label="Permalink to &quot;Linux 系统修复补丁&quot;">​</a></h2><p>部分编译环境可能缺少一些头文件或库，static-php-cli 会在编译时自动修复这些问题，如：</p><ul><li>HAVE_STRLCAT missing problem</li><li>HAVE_STRLCPY missing problem</li></ul><h2 id="windows-系统下-fiber-问题修复补丁" tabindex="-1">Windows 系统下 Fiber 问题修复补丁 <a class="header-anchor" href="#windows-系统下-fiber-问题修复补丁" aria-label="Permalink to &quot;Windows 系统下 Fiber 问题修复补丁&quot;">​</a></h2><p>在 Windows 下编译 PHP 时，Fiber 扩展会出现一些问题，static-php-cli 会在编译时自动修复这些问题（修改 php-src 的 <code>config.w32</code>）。</p>',21),o=[c];function s(r,p,h,n,d,m){return e(),a("div",null,o)}const u=i(t,[["render",s]]);export{_ as __pageData,u as default};
