FrankenPHP仅支持PHP 8.5,不提供多版本切换功能;它是一个内置PHP 8.5的独立应用服务器,所有官方二进制、Docker镜像及Caddy插件均基于该版本构建,无法在同一实例中运行其他PHP版本。

FrankenPHP 不提供多版本 PHP 切换能力——它本身就是一个固定绑定 PHP 版本的独立应用服务器,不是像 phpenv 或 phpbrew 那样的版本管理工具。
它当前(截至 2026 年)默认内置并仅运行 PHP 8.5。所有官方发布的二进制(Linux/macOS/Windows)、Docker 镜像、以及 Caddy 插件集成,都基于 PHP 8.5 构建,并预编译了常用扩展(如 openssl、mbstring、gd、pdo_mysql 等)。你无法在同一个 FrankenPHP 实例里“切换”到 PHP 8.3 或 8.1。
✅ FrankenPHP 支持的 PHP 版本范围(事实情况)
- 唯一支持版本:PHP 8.5(稳定版,非 RC 或 nightly)
- 不支持安装或运行其他 PHP 版本(如 8.2、8.4、9.0)
- 没有
frankenphp version命令,也没有--php-version参数 - 官方明确说明:“FrankenPHP binaries contain PHP 8.5” —— 所有下载包都已锁定
⚠️ 注意:FrankenPHP ≠ PHP 运行时管理器。它把 PHP 解释器、Caddy Web 服务器、HTTP/3、Early Hints 等打包成一个开箱即用的“PHP 应用服务器”,目标是简化部署,而非兼容老项目。
❌ 为什么不能像 phpenv 那样切换?
-
phpenv/phpbrew/update-alternatives管理的是系统级 PHP CLI 和 FPM 二进制; - FrankenPHP 是一个自包含进程,启动时直接调用其内置的 PHP 8.5 运行时,不依赖外部
php命令; - 它没有加载多个 PHP SAPI 的机制,也不读取
php.ini路径变量来动态切换解释器。
✅ 如果你需要不同 PHP 版本,可行的替代方案
1. 为不同项目使用不同服务器
- Laravel 项目需 PHP 8.5 → 用 FrankenPHP(推荐 Worker 模式)
- WordPress 老项目需 PHP 7.4 → 用
phpbrew install 7.4.33 && phpbrew switch 7.4.33+ Nginx + php-fpm - 不混用,各司其职
2. Docker 多镜像隔离
# PHP 8.5 + FrankenPHP docker run -v $(pwd):/app dunglas/frankenphp # PHP 8.1 + Apache docker run -v $(pwd):/var/www/html -p 8081:80 php:8.1-apache # PHP 7.4 + FPM + Nginx(自定义 compose)
3. 本地共存:FrankenPHP + 其他 PHP 环境并行
- FrankenPHP 监听
:80(或:443),只服务特定项目(如/api) - 用
php -S或php-fpm+ Nginx 反向代理处理其他版本需求 - PATH 中的
php命令可由phpenv管理,与 FrankenPHP 互不影响
? 补充:FrankenPHP 自身如何“更新”PHP 版本?
只能等官方发布新版本二进制:
立即学习“PHP免费学习笔记(深入)”;
- 查看 frankenphp.dev/download
- 下载新版(例如未来某天发布
frankenphp-v0.12.0-php8.6) - 替换旧二进制文件,重启服务
- 无配置迁移成本(Caddyfile 和项目代码完全兼容)
? 提示:FrankenPHP 的升级节奏与 PHP 官方一致,通常在 PHP 新稳定版发布后 1–2 个月内跟进。PHP 8.5 是当前 LTS 级别选择,至少维护至 2027 年中。
FrankenPHP 的设计哲学是“专注、精简、现代”。它放弃兼容旧版 PHP,换来的是零配置 HTTPS、热重载、Worker 模式和 HTTP/3 原生支持。如果你的项目能迁移到 PHP 8.5,FrankenPHP 就是最轻快的选择。



















