FrankenPHP 版本需通过 frankenphp --version 验证,其内置 PHP 版本以 frankenphp run 启动日志和 phpversion() 返回值为准,与系统 php -v 无关。

直接运行 frankenphp --version 看输出
FrankenPHP 是一个独立二进制,不依赖系统 PHP 安装,它的版本信息由自身二进制内建决定。执行 frankenphp --version 是最权威的验证方式——它不查环境变量、不读系统 php 命令,只反映当前使用的 FrankenPHP 实际版本。
常见错误现象:
-
command not found: frankenphp—— 二进制未加入$PATH或权限不足(Linux/macOS 需chmod +x) - 输出中版本号是
v1.0.0-rc.2但你下载的是v1.1.0—— 可能终端缓存了旧路径,用which frankenphp和ls -l $(which frankenphp)确认真实文件
检查 frankenphp run 启动时加载的 PHP 版本
FrankenPHP 内置 PHP 运行时,启动服务时会在控制台第一行打印实际加载的 PHP 版本,例如:
PHP 8.3.12 (cli) (built: Sep 15 2026 10:22:41) (NTS)
这个版本才是你应用真正运行的 PHP 引擎版本,和系统 php -v 完全无关。它由 FrankenPHP 二进制打包时固化,无法通过修改系统 php.ini 或重装系统 PHP 改变。
立即学习“PHP免费学习笔记(深入)”;
容易忽略的点:
- 即使你本地装了 PHP 8.4,
frankenphp run仍会使用它自带的 8.3 —— 这是设计行为,不是 bug - 若看到
PHP 8.2.x但期望是 8.3,说明你下载的是旧版 FrankenPHP,需重新下载匹配的 release 包
在 PHP 脚本里调用 phpversion() 确认运行时版本
创建一个 version.php 放在项目根目录:
<?php echo phpversion(); ?>
启动服务:frankenphp run,然后访问 http://localhost/version.php。返回值必须和 frankenphp run 启动日志中的 PHP 版本一致。
为什么这步不能省?
- CLI 下
frankenphp --version显示的是 FrankenPHP 自身版本(如v1.1.0),不是内置 PHP 版本 - Web 请求走的是 FrankenPHP 的 HTTP SAPI,
phpversion()返回的是该 SAPI 实际加载的 PHP 内核版本,是最终生效的依据 - 某些 FrankenPHP 构建版本(如 Alpine 小包)可能阉割部分扩展,
phpversion()能暴露是否加载了完整运行时
别拿 php -v 当验证依据
php -v 查的是系统 PATH 中的 php 命令,和 FrankenPHP 完全无关。它可能指向系统 PHP、XAMPP 自带 PHP、Homebrew PHP,甚至根本不存在。
典型误判场景:
- 你在 macOS 用 Homebrew 装了 PHP 8.4,
php -v显示 8.4 → 以为 FrankenPHP 也跑 8.4 - 你删掉了系统 PHP,
php -v报错 → 误以为 FrankenPHP 没装好
FrankenPHP 的 PHP 是“自带电池”的,验证必须锁定在它自己的命令和运行时上下文中。任何跨进程的版本比对(比如对比 php -v 和 frankenphp --version)都没有意义。



















