frankenphp 1.3 worker 模式下扩展必须编译集成而非运行时加载:✅1. 官方内置扩展(如 curl、redis)启动即用;✅2. rpm/deb 系统包管理器安装 php-zts-* 扩展;✅3. 第三方扩展需用 pie 工具链编译;❌不支持 php.ini、pecl install 或 caddyfile 中 php_extensions 指令。

FrankenPHP 1.3 的 Worker 模式下,PHP 扩展的安装方式不依赖传统 php.ini 或 pecl install,因为 FrankenPHP 使用的是静态链接的 PHP 运行时(含预编译扩展),且 Worker 模式运行在 Go 进程内,无法动态加载 .so 文件。安装扩展必须在启动前完成编译集成,而非运行时启用。
以下分三类情况说明具体操作:
✅ 1. 官方已内置的常用扩展(推荐优先使用)
Linux/macOS 的 FrankenPHP 二进制默认包含:
-
curl,mbstring,json,xml,pdo,pdo_mysql,pdo_pgsql,redis,memcached,opcache,zip,gd(含 freetype/libpng)、exif等
这些扩展无需额外操作,启动即可用。可通过frankenphp version --php-info查看完整列表。
✅ 2. 通过系统包管理器安装(仅限 rpm/deb 发行版)
FrankenPHP 维护团队为主流 Linux 提供了与 PHP-ZTS(线程安全)兼容的扩展包:
-
RHEL/CentOS/Fedora(dnf):
sudo dnf install php-zts-gd php-zts-redis php-zts-opcache
-
Debian/Ubuntu(apt):
sudo apt install php-zts-gd php-zts-redis php-zts-opcache
⚠️ 注意:这些包会自动注册到 FrankenPHP 的扩展目录(如
/usr/lib/php/zts/extensions/),但需确保 FrankenPHP 启动时能读取该路径——通常由frankenphp.service配置或 Caddyfile 中php_extensions指令控制。
✅ 3. 第三方或自定义扩展(需 PIE 工具链)
对未打包的扩展(如 swoole, grpc, xdebug),FrankenPHP 推荐使用 PIE(PHP Integrated Extensions):
- 先安装 PIE 工具:
sudo dnf install pie-zts # RHEL系 # 或 sudo apt install pie-zts # Debian系
- 再用 PIE 编译安装(以
ext-redis为例):sudo pie-zts install predis/redis-extension
PIE 会自动适配 FrankenPHP 的 ZTS 构建环境,生成兼容的
.so并注册到扩展目录。
❌ 不支持的操作(常见误区)
- 直接复制
.so到任意目录 + 修改php.ini→ 无效(FrankenPHP 忽略php.ini) - 使用
pecl install→ 报错(无phpize环境,且非标准 SAPI) - 在
Caddyfile中写php_extensions /path/to/ext.so→ 语法错误(FrankenPHP 1.3 不支持该指令)
Worker 模式下扩展必须在进程启动前就位,本质是“编译时集成”而非“运行时加载”。只要扩展被正确安装到系统扩展路径,并且 FrankenPHP 二进制构建时启用了对应模块支持,它就能在常驻进程中稳定复用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











