FrankenPHP可一键启动支持HTTPS、HTTP/2的Symfony开发环境,内置Caddy免配Web服务器,仅需安装二进制、创建Caddyfile并执行frankenphp run即可。

要在本地快速启动一个支持现代HTTP特性的Symfony开发环境,必须绕过传统PHP-FPM+Apache/Nginx组合的繁琐配置,直接用FrankenPHP接管HTTP服务与PHP执行——它内置Caddy,开箱即用HTTPS、HTTP/2、Early Hints,且无需额外配置Web服务器或修改hosts。
确认系统基础条件
FrankenPHP要求Linux/macOS或Windows WSL2,不支持原生Windows CMD/PowerShell直跑;确保已安装curl和unzip命令,否则后续自动安装脚本会中断。
运行which curl unzip,若任一命令报“command not found”,请先安装:macOS用brew install curl unzip,Ubuntu/Debian用sudo apt install curl unzip。
【必须关闭已占用80/443端口的进程】,比如Docker Desktop、MAMP、XAMPP或另一个FrankenPHP实例,否则frankenphp run会立即退出并报错“address already in use”。
立即学习“PHP免费学习笔记(深入)”;
安装FrankenPHP二进制
推荐使用官方自动安装脚本,适配所有主流平台:
方法一:一键安装(macOS/Linux)
执行curl -L https://frankenphp.dev/install.sh | sh → 等待下载解压完成 → 脚本自动将frankenphp二进制移至/usr/local/bin/ → 运行frankenphp --version验证输出类似FrankenPHP v1.2.0 (Caddy v2.8.4)。
方法二:手动安装(Windows WSL2或需自定义路径)
访问https://github.com/dunglas/frankenphp/releases → 找到最新frankenphp_*.tar.gz文件 → 下载后解压 → 运行chmod +x frankenphp → sudo mv frankenphp /usr/local/bin/。
注意:不要用npm install -g frankenphp或pip install frankenphp——它根本不存在,那些是伪造包。
创建Symfony项目并适配FrankenPHP
第一步:用symfony new创建带完整Web栈的项目
执行symfony new myapp --webapp → 确保看到Flex: enabled和assets installed提示 → 进入cd myapp。
第二步:禁用Symfony内置PHP服务器冲突
删除symfony server:start可能残留的.symfony/目录,执行rm -rf .symfony → 否则FrankenPHP启动时会因端口竞争失败。
第三步:准备public目录结构
Symfony 7默认生成public/,但FrankenPHP要求入口为public/index.php且静态资源可直接访问。确认ls public/index.php存在,若无则运行composer require symfony/web-server-bundle --dev再执行php bin/console assets:install补全。
第四步:添加FrankenPHP专属配置文件
在项目根目录新建Caddyfile,内容仅一行:localhost { php_backend } → 这告诉Caddy把所有请求交给PHP处理,无需写路由重写规则。
启动并验证开发服务
进入项目根目录,执行frankenphp run → 终端输出INFO server running on https://localhost及http://localhost两个地址 → 不要关掉这个终端。
打开浏览器访问http://localhost → 看到Symfony欢迎页即成功;若显示404,检查是否误将Caddyfile放在public/内而非项目根目录。
访问https://localhost时浏览器会警告证书无效,点击“继续前往”即可——FrankenPHP自动生成的本地证书无需手动导入。
执行php bin/console debug:router → 输出至少包含_wdt、_profiler、_error三条路由 → 证明Symfony内核已由FrankenPHP完整加载。



















