WSL2已就绪且更新完成:在管理员PowerShell中执行wsl -l -v确认状态为Running、VERSION为2;若未安装或需升级则运行wsl --update,再执行wsl --shutdown && wsl重启并更新Ubuntu系统。

确认WSL2已就绪并更新系统
先确保 WSL2 正在运行且为最新状态。打开 PowerShell(管理员),执行:
wsl -l -v —— 查看状态是否为 Running、版本是否为 2
若未安装或需升级,运行:
wsl --update
重启 WSL:
wsl --shutdown && wsl
进入 Ubuntu 后,更新系统:
sudo apt update && sudo apt upgrade -y
安装必要依赖和构建工具
FrankenPHP 需要 Go 语言环境和 C 编译支持。Ubuntu 默认不含 Go,需手动安装:
- 安装基础工具:
sudo apt install -y build-essential curl git wget unzip - 下载并安装 Go(推荐 1.23+):
cd /tmp && curl -OL https://go.dev/dl/go1.23.3.linux-amd64.tar.gz
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.23.3.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc && source ~/.bashrc - 验证:
go version 应输出 go1.23.3
获取并编译 FrankenPHP
FrankenPHP 官方不提供预编译二进制包,需从源码构建。截至 2026 年 10 月,主分支已稳定支持 PHP 8.4:
- 克隆仓库:
git clone https://github.com/dunglas/frankenphp.git ~/frankenphp - 进入目录并切换到稳定标签(如 v1.2.0):
cd ~/frankenphp && git checkout v1.2.0 - 构建(自动拉取 PHP 嵌入式 SAPI):
make build
成功后生成可执行文件:
./frankenphp - 建议安装到系统路径便于调用:
sudo cp ./frankenphp /usr/local/bin/
配置与启动服务
FrankenPHP 运行方式灵活,开发推荐使用内置 Web 服务器模式:
在 Windows 11 上"直接发声"的 TTS(从 WSL2/TUI 调用 powershell.exe + System.Speech)。适用于用户说"说出来/读出来/语音播报/用TTS",或反馈"没声音/tts 生成的 mp3 是空的/播不出来",以及需要中文语音但 OpenClaw 内置 tts 不可用时。
- 新建项目目录:
mkdir -p ~/projects/myapp && cd ~/projects/myapp - 创建最小 index.php 测试文件:
echo '<?php echo "FrankenPHP is running on WSL2"; ?>' > index.php - 启动服务(监听 127.0.0.1:8080):
frankenphp serve --workers=2 - Windows 主机访问:
打开浏览器访问 http://localhost:8080 —— 可直接连通,无需额外端口转发(WSL2 默认支持 localhost 映射)
可选:集成 PHP 扩展与 MySQL 支持
FrankenPHP 内置 PHP 引擎,但扩展需单独启用。若需 PDO MySQL,须确保 PHP 已安装对应模块(参考你已配好的 PHP 8.4.1 环境):
立即学习“PHP免费学习笔记(深入)”;
- 确认 pdo_mysql 已加载:
php -m | grep pdo_mysql - FrankenPHP 默认复用系统 PHP 配置,可通过环境变量指定:
PHP_INI_SCAN_DIR=/etc/php/8.4/cli/conf.d frankenphp serve - 数据库连接时,使用 WSL2 内 MySQL 的 127.0.0.1:3306(非 localhost),避免 Unix socket 权限问题


















