frankenphp 不提供独立 php 命令,必须用 frankenphp --php-version 查其内置 php 版本(如 8.2.15),该结果唯一可靠;php -v 查的是系统 php,与 frankenphp 无关,二者环境完全隔离。

frankenphp 二进制本身不提供 php -v 那样的独立 PHP CLI 命令,但它的内置 PHP 版本信息**必须通过其自身命令暴露**——直接运行 frankenphp --php-version 即可拿到准确结果,这是唯一可靠方式。
用 frankenphp --php-version 查版本
FrankenPHP 的 PHP 运行时是嵌入在二进制内部的,不依赖系统 php 命令。所以不能靠 php -v 或 which php 判断它用的是哪个 PHP。
正确做法是:
- 运行
frankenphp --php-version—— 输出形如8.2.15,即其内置 PHP 的确切版本 - 若报错
command not found,说明frankenphp未正确安装或不在PATH中,先执行which frankenphp确认路径 - 该命令输出不含编译日期、Zend 引擎等冗余信息,但足够用于版本比对和兼容性判断
为什么不能用 php -v 替代
php -v 查的是你系统里独立安装的 PHP CLI(比如 brew 或 apt 装的),和 FrankenPHP 内置的 PHP 完全是两套环境。
常见误判场景:
- 你本地装了 PHP 8.3,但
frankenphp --php-version返回8.2.15→ 表示 FrankenPHP 自带旧版,Web 请求实际跑在 8.2 上 -
php -v显示已启用 xdebug,但 Web 请求中phpinfo()找不到 xdebug → 因为 FrankenPHP 不加载系统php.ini,xdebug 未被其内置 PHP 加载 - 升级系统 PHP 后
php -v变了,但 FrankenPHP 仍用旧版 → 对 Web 服务完全无影响,也不需要重启 FrankenPHP
想看更详细的 PHP 配置怎么办
仅版本号不够?需要扩展列表、opcache 状态、extension_dir 路径等?必须进入 FrankenPHP 的运行时上下文查:
- 启动 FrankenPHP:
frankenphp run(或frankenphp在项目目录下) - 新建
public/info.php,内容为<?php phpinfo(); ?> - 访问
http://localhost:8080/info.php,看到的才是 FrankenPHP 实际加载的完整环境 - 特别注意 “Loaded Configuration File” 这一行——它指向 FrankenPHP 真正读取的
php.ini,不是/etc/php/8.2/cli/php.ini
frankenphp php-cli 和 --php-version 的关系
frankenphp php-cli script.php 用的就是 --php-version 报出的那个 PHP,但它是受限子命令:不加载 Web SAPI 配置、不走 opcache 预热逻辑、不触发 worker 生命周期。所以:
- 它适合跑一次性脚本(如数据迁移),但不适合调试 Web 请求行为
-
frankenphp php-cli -r "echo PHP_VERSION;"输出和--php-version一致,可作交叉验证 - 别指望它能执行
composer install—— 缺少phar、zlib等开发向扩展是常态
frankenphp-darwin-arm64 或重新构建,而不是改配置或装个扩展。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











