FrankenPHP 在原生 Windows(非 WSL2)上完全不支持,因其官方仅提供 Linux/macOS 二进制包,无 windows_amd64.exe;强行运行会卡住、报错或静默失败,唯一可行方案是启用 WSL2 或使用 Docker。

Windows 环境下 FrankenPHP 启动失败,基本可以确定不是 FrankenPHP 本身不兼容,而是它根本没跑起来——因为 FrankenPHP 官方二进制只提供 Linux/macOS 版本,php artisan octane:start --server=frankenphp 在原生 Windows(非 WSL2)上必然失败。
FrankenPHP 在 Windows 上根本不支持
FrankenPHP 是用 Go 编译的静态二进制,官方 releases 页面 明确只发布 linux_amd64、darwin_arm64 等平台包,**没有 windows_amd64.exe**。所以你在 CMD 或 PowerShell 里执行 php artisan octane:start --server=frankenphp,大概率会卡住、报 command not found,或直接退出无提示。
- 检查
vendor/bin/frankenphp是否存在:运行ls -l vendor/bin/frankenphp(Git Bash)或dir vendor\bin\frankenphp*(CMD),如果文件不存在或后缀不是.exe,就坐实了“没下载到” - 即使你手动放了个 Windows 可执行文件进去,它也**不会工作**——Go 交叉编译未启用 Windows 支持,强行运行会报错或静默失败
- 官方文档和 Laravel Octane 源码里所有 FrankenPHP 相关逻辑都默认运行环境为 Unix-like,
proc_open调用、信号处理、socket 绑定方式均不兼容 Windows 原生子系统
替代方案只有 WSL2 或换服务器
想在 Windows 上用 FrankenPHP,唯一可行路径是启用 WSL2 并把整个开发环境(PHP、Laravel、Octane)移进去。这不是“推荐”,而是“必须”。
- 确认 WSL2 已启用:
wsl -l -v应显示一个正在运行的发行版(如 Ubuntu-22.04);若未安装,从 Microsoft Store 装 Ubuntu,再运行wsl --update - 在 WSL2 里安装 PHP ≥ 8.1(别用 Windows 的 php.exe)、Composer 和 Laravel,然后执行
php artisan octane:install --server=frankenphp - 启动前确保
vendor/bin/frankenphp有可执行权限:chmod +x vendor/bin/frankenphp - 不要试图在 Windows 主机上通过
localhost:8000访问 WSL2 的 FrankenPHP——需配置networkingMode: mirroring或直接用http://localhost:8000(WSL2 默认支持 localhost 互通)
别试 Swoole —— 它在 Windows 上同样残废
看到错误信息里带 swoole?也别抱希望。Swoole 扩展官方明确不支持 Windows(仅实验性支持,且自 4.8.0 起已移除 Windows 构建脚本)。你装上的 swoole.dll 很可能来自第三方非官方包,极易导致 php artisan octane:start 卡死、返回空白页、或报 Class 'Swoole\Http\Server' not found。
立即学习“PHP免费学习笔记(深入)”;
- 运行
php --ri swoole,如果输出为空或报错,说明扩展根本没加载 - 即使加载成功,Swoole 的异步 DNS、协程 MySQL 等关键特性在 Windows 上不可用,Octane 的大部分优化形同虚设
- 与其折腾,不如切回 Laravel 默认的
--server=php(内置服务器),或用 Docker 运行标准 LEMP 栈
FrankenPHP 和 Swoole 都不是“Windows 友好型”工具——它们的设计前提就是 Unix 环境。硬要在 CMD 里跑,只会陷入无限查日志、改权限、重装 VC++ 的循环。真正省时间的做法,是接受 WSL2 作为开发底座,或者直接用 Docker Desktop + laravel/sail。



















