frankenphp 扩展检查需先确认其调用的 php 路径,再执行 php -m 或 get_loaded_extensions() 获取实际启用列表,并核对 php.ini 中 extension 指令及 extension_dir 设置是否正确。

FrankenPHP 是基于 PHP SAPI 的现代运行时,它复用标准 PHP 引擎,因此扩展管理方式与传统 CLI 或 FPM 完全一致。查看当前加载的扩展清单,本质就是查 FrankenPHP 进程所使用的 PHP 解释器实际启用的模块。
直接执行 php -m 命令
FrankenPHP 启动时会调用系统中配置的 PHP 二进制(默认为 php),所以最简单可靠的方式是运行:
- 在终端中执行 php -m —— 显示所有已启用的扩展(含内置和动态加载的)
- 若 FrankenPHP 使用了自定义 PHP 路径(如
/usr/local/bin/php82),请改用该路径: /usr/local/bin/php82 -m - 如需过滤掉常见内置模块、只看手动启用的扩展,可加管道筛选:
php -m | grep -vE '^(Zend|Core|date|json|pcre|hash|filter|SPL)$'
确认 FrankenPHP 实际调用的 PHP 版本
避免误查系统其他 PHP 环境,应先验证 FrankenPHP 正在使用哪一个 PHP:
- 查看 FrankenPHP 启动日志或配置文件(如
frankenphp.yaml),找php_bin或php_path字段 - 若未显式指定,FrankenPHP 默认调用
PATH中第一个php,可用 which php 确认路径 - 再用 php -v 和 php --ini 核对版本与配置文件位置,确保你查的是同一份环境
检查 php.ini 中 extension 指令是否生效
扩展是否真正加载,不仅取决于 extension=xxx 行是否存在,还依赖于路径正确性与顺序:
- 运行 php --ini 查出加载的 php.ini 路径,打开该文件
- 搜索
extension=行,确认你要查的扩展名(如swoole、curl)出现在未被注释的行中 - 注意
extension_dir设置是否指向正确的ext/目录,否则即使写了extension=swoole也会静默失败 - FrankenPHP 不修改 PHP 扩展加载逻辑,所有 .so/.dll 文件仍由 PHP 自行载入,无额外代理层
运行时验证(适用于 Web 请求场景)
若 FrankenPHP 以 Web 模式运行(如通过 Caddy 或内置 HTTP 服务),可通过脚本输出扩展信息:
- 新建一个
info.php,内容为:
- 用浏览器或 curl 访问该 URL,得到当前 Web 请求上下文中实际加载的扩展数组
- 该结果可能与
php -m略有差异——例如某些扩展(如 xdebug)可能仅在 CLI 下启用,Web 模式下被禁用
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











