import{_ as o,c as l,o as a,ah as i}from"./chunks/framework.Bhsyh9kO.js";const b=JSON.parse('{"title":"扩展注意事项","description":"","frontmatter":{},"headers":[],"relativePath":"zh/guide/extension-notes.md","filePath":"zh/guide/extension-notes.md"}'),s={name:"zh/guide/extension-notes.md"};function r(d,e,c,h,t,p){return a(),l("div",null,[...e[0]||(e[0]=[i('
因为是静态编译,扩展不会 100% 完美编译,而且不同扩展对 PHP、环境都有不同的要求,这里将一一列举。
HTTP3 支持默认未启用,需在编译时添加 --with-libs="nghttp2,nghttp3,ngtcp2" 以启用 PHP 8.4 及以上版本的 HTTP3 支持。
使用 curl 请求 HTTPS 时,可能存在 error:80000002:system library::No such file or directory 错误, 解决办法详见 FAQ - 无法使用 ssl。
swoole 扩展时不会完整开启支持的 Swoole 数据库协程 hook,如需使用请加入对应的 swoole-hook-xxx 扩展。zend_mm_heap corrupted 问题,暂未找到是什么原因导致的。swoole-hook-pgsql 不是一个扩展,而是 Swoole 的 Hook 特性。 如果你在编译时添加了 swoole,swoole-hook-pgsql,你将启用 Swoole 的 PostgreSQL 客户端和 pdo_pgsql 扩展的协程模式。
swoole-hook-pgsql 与 pdo_pgsql 扩展冲突。如需使用 Swoole 和 pdo_pgsql,请删除 pdo_pgsql 扩展,启用 swoole 和 swoole-hook-pgsql 即可。 该扩展包含了 pdo_pgsql 的协程环境的实现。
在 macOS 系统,pdo_pgsql 可能无法正常连接到 postgresql 服务器,请谨慎使用。
swoole-hook-mysql 不是一个扩展,而是 Swoole 的 Hook 特性。 如果你在编译时添加了 swoole,swoole-hook-mysql,你将启用 Swoole 的 mysqlnd 和 pdo_mysql 的协程模式。
swoole-hook-sqlite 不是一个扩展,而是 Swoole 的 Hook 特性。 如果你在编译时添加了 swoole,swoole-hook-sqlite,你将启用 Swoole 的 pdo_sqlite 的协程模式(Swoole 必须为 5.1 以上)。
swoole-hook-sqlite 与 pdo_sqlite 扩展冲突。如需使用 Swoole 和 pdo_sqlite,请删除 pdo_sqlite 扩展,启用 swoole 和 swoole-hook-sqlite 即可。 该扩展包含了 pdo_sqlite 的协程环境的实现。
swoole-hook-odbc 不是一个扩展,而是 Swoole 的 Hook 特性。 如果你在编译时添加了 swoole,swoole-hook-odbc,你将启用 Swoole 的 odbc 扩展的协程模式。
swoole-hook-odbc 与 pdo_odbc 扩展冲突。如需使用 Swoole 和 pdo_odbc,请删除 pdo_odbc 扩展,启用 swoole 和 swoole-hook-odbc 即可。 该扩展包含了 pdo_odbc 的协程环境的实现。
--enable-zts 构建中使用它。bin/spc build gd 不会引入和支持部分图形库,例如 libjpeg、libavif 等, 需要使用 --with-libs 参数补全。目前支持 freetype,libjpeg,libavif,libwebp 四个库的支持,所以这里可以使用以下命令来让 gd 库引入它们:bin/spc build gd --with-libs=freetype,libjpeg,libavif,libwebp --build-cli.a)或源代码,无法使用静态链接的方式将此扩展编译到 php 内,故无法支持。musl-static 外的其他 SPC_TARGET 构建目标。--build-shared=xdebug 将 Xdebug 编译为共享扩展。 编译后的 ./php 二进制文件可以通过指定 INI 文件进行配置和运行,例如 ./php -d 'zend_extension=/path/to/xdebug.so' your-code.php。common 扩展集合编译 phpmicro 存在问题。pgsql ssl 连接与 openssl 3.2.0 不兼容。相关链接:
pgsql 16.2 修复了这个 Bug,现在正常工作了。
在 pgsql 使用 SSL 连接时,可能存在 error:80000002:system library::No such file or directory 错误, 解决办法详见 FAQ - 无法使用 ssl。
使用基于 openssl 的扩展(如 curl、pgsql 等网络库)时,可能存在 error:80000002:system library::No such file or directory 错误, 解决办法详见 FAQ - 无法使用 ssl。
password_hash 函数的 PASSWORD_ARGON2ID 算法需要 libsodium 或 libargon2 才能工作。xhprof 扩展包含三部分:xhprof_extension、xhprof_html、xhprof_libs。编译的二进制中只包含 xhprof_extension。 如果需要使用 xhprof,请到 pecl.php.net/package/xhprof 下载源码,指定 xhprof_libs 和 xhprof_html 路径来使用。
event 扩展在 macOS 系统下编译后暂无法使用 openpty 特性。相关 Issue:
parallel 扩展只支持 PHP 8.0 及以上版本,并只支持 ZTS 构建(--enable-zts)。
--with-libs="mimalloc" 进行构建将覆盖默认分配器。