frankenphp经典模式无需修改代码,完全兼容laravel等标准php应用;仅需确认php版本、扩展、.env权限及系统调用权限;worker模式才需适配启动方式与无状态约束。

不需要改造代码。
FrankenPHP 的经典模式(即默认启用模式)完全兼容传统 Laravel、Symfony 或其他标准 PHP 应用,你的 public/index.php 和整个项目结构无需任何修改。它只是把 Nginx + PHP-FPM 这套外部协作链路,换成一个内嵌 Caddy + PHP 运行时的单进程服务。HTTP 请求进来后,FrankenPHP 仍按 FastCGI 协议语义执行 index.php,环境变量(如 $_SERVER['REQUEST_URI'])、超全局数组、php.ini 行为、扩展加载机制全部保持一致。
真正需要关注的不是“改代码”,而是确认运行环境是否对齐:
- ✅ 检查内置 PHP 版本是否满足项目要求(例如 Laravel 11 要求 PHP 8.2+)
- ✅ 确保所有
composer.json中声明的ext-*扩展都已启用(如pdo_mysql、redis、intl、bcmath、fileinfo) - ✅ 验证
.env文件权限为600,且未被 Web 目录直接暴露(FrankenPHP 不改变文件权限逻辑,这点和原环境一致) - ✅ 若项目依赖
exec()、shell_exec()等函数,需确认 FrankenPHP 启动用户有对应系统权限(和原 PHP-FPM 用户权限策略相同)
只有当你主动选择开启 Worker 模式(性能翻倍但非零改动),才涉及代码适配:
- Laravel 必须安装
laravel/octane并使用其启动器 - 应用需满足无状态约束:不能在全局变量、静态属性中持久化请求相关数据
- 避免在
boot()或服务提供者中做一次性初始化以外的副作用(如打开文件句柄、监听信号、修改$_ENV) - Redis 连接、数据库连接池等应交由 Octane 管理,而非手动
new Pdo()或Redis::connect()
简言之:
只换服务器不换写法 → 不改代码;
想榨干性能开 Worker → 改启动方式 + 审视生命周期行为。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











