FrankenPHP 原生支持 Windows 了

简介: FrankenPHP 正式原生支持 Windows!基于 Go 1.26 对 MSVC Clang 的 CGO 支持,成功打通与官方 PHP(MSVC 编译)的链接难题,实现 100% 特性兼容——含 Worker Mode、Hot Reloading 及全部扩展。性能较 Nginx/PHP-FPM 提升超 260%,开箱即用。(239字)

FrankenPHP 原生支持 Windows 了

FrankenPHP 是什么

FrankenPHP 是一个基于 Caddy 和 PHP 构建的现代 PHP 应用服务器,目标是简化 PHP 应用的运行与部署。它既可以作为传统 PHP 应用的运行环境,也提供了 Worker Mode、Hot Reloading 等更偏现代化的能力,因此这两年在 PHP 社区里关注度一直不低。

FrankenPHP 现已正式提供官方 Windows 支持,并立即可用。

自项目发布以来,Windows 原生支持一直是 FrankenPHP 社区呼声最高的需求之一。现在,这项能力已经正式落地。也就是说,FrankenPHP 已经可以在 Windows 上原生运行,并实现 100% 兼容,包括 Worker Mode、Hot Reloading 等核心特性。

性能表现

这次支持并不只是“能用”,性能表现也相当可观。社区已经给出了一些早期基准测试结果。

有用户在同一台 Windows Server 2022 机器上,将 FrankenPHP 与一个已经过优化的 Nginx/PHP-FPM 环境进行了对比。结果很直接:仅仅切换服务器运行时,就获得了 3.6 倍性能提升,增幅超过 260%

此外,@henderkes 提供的一组更完整的基准测试,也进一步验证了 FrankenPHP 在 Windows 原生环境下、不同工作负载中的性能收益。

不过需要说明的是,原生 Windows 支持虽然已经足够快,在开发环境以及很多生产负载下也足够方便,但如果目标是追求更高的极限吞吐量,那么通过 WSL 运行 FrankenPHP 仍然更有优势,因为 Linux 在底层 I/O 和网络架构上依旧更强。如果生产环境允许,优先选择 Linux 仍然是更稳妥的方案。

难点:两个编译器体系的冲突

为什么这件事花了这么久?

实际上,此前已经有开发者尝试把 FrankenPHP 移植到 Windows。但除了常见的跨平台问题,例如文件路径和文件系统差异,更麻烦的是一个底层且结构性的兼容问题。

问题的核心可以概括为下面几点:

  • FrankenPHP 是一个 Go 库,它通过 CGO 调用 PHP 的 libphp
  • Windows 上的官方 PHP 构建使用 Visual Studio(MSVC)编译,以保证性能和稳定性
  • 但 Go 的 CGO 在 Windows 上长期不支持 Visual Studio,而是只支持 MinGW(GCC)
  • 这就留下了一个巨大的兼容性鸿沟:两边根本无法直接链接在一起

解决路径

围绕这个问题,项目曾尝试过几种方案,但最终都没有走通。

方案一:让 Windows 版 PHP 支持 GCC

第一种思路,是给 PHP 打补丁,让 Windows 版 PHP 支持 GCC 编译。但 PHP 维护者并不希望为此引入额外复杂度,这一点并不难理解。另一方面,项目本身也希望直接使用官方二进制,以保证稳定性并避免生态分裂。

因此,依赖 Visual Studio(MSVC)之外的其他编译器并不可行。毕竟,MSVC 是 PHP 官方唯一支持的 Windows 编译器。

方案二:“Frankenstein” 构建方案(llvm-mingw)

第二种思路是折中方案:使用 llvm-mingw 编译 FrankenPHP,再把它链接到官方 Visual Studio 编译的 PHP。

这个方案最终失败,原因是 标准库不匹配

当你把 MinGW 编译出来的二进制(使用 msvcrt.dll 或自己的运行时)与 MSVC 编译出来的二进制(使用 ucrt / vcruntime)混在一起时,就会遇到严重问题。比如一侧分配内存(malloc),另一侧去释放;或者尝试跨边界传递文件描述符,程序都会直接崩溃。

本质上,它们说的是两种不同方言的 “C”。

突破点:Go 1.26 与 clang

最终,项目找到了更合理的路径:为 CGO 增加对 Visual Studio 提供的 Clang/LLVM 前端的支持。

可以简单理解为,Visual Studio 自带一套 Clang,它可以作为 MSVC 编译器(cl.exe)的替代实现来工作。它接受 CGO 更适配的 GCC 风格参数,同时底层又使用微软的 STL 和运行时库。

也就是说,它结合了两边的优点。

在调研现有方案、准备给 Go 提交补丁的过程中,项目方还发现 Google 其实已经提交过一份非常关键、但几乎没有公开说明的实现,处理的正是这个问题。

这份补丁最终进入了 Go 1.26

借助 Go 新增的这项能力,再配合 lld-link 链接器,我们终于能够使用与 PHP 本身相同的工具链来编译 FrankenPHP。

测试结果

最终的成果,是拿到了一个 原生 Windows 二进制,并且它直接链接到 PHP 官方提供的稳定版本二进制。

更关键的是,因为链接的是官方 PHP 构建,所以所有 Windows 上受支持的原生 PHP 扩展,在 FrankenPHP 中都能直接工作,无需额外适配。

在处理完 Windows 特有的一些细节后,FrankenPHP 代码库也完成了相应更新。目前可以确认:全部测试均已通过

  • ✅ 原生 Windows 二进制
  • ✅ 完整扩展支持
  • ✅ Worker Mode
  • ✅ Hot Reloading

致谢与赞助

这项复杂工作之所以能够完成,要感谢 Intelligence X 和 Les-Tilleuls.coop 的慷慨赞助。

开源项目的可持续性并不容易。如果团队或公司依赖 FrankenPHP、Caddy 或 API Platform,可以考虑通过 GitHub 提供赞助。类似支持,往往也是这类底层技术问题能够持续推进的重要前提。

现在就可以使用

这项支持已经合并到 Pull Request #2119,最新版 Windows 二进制也已经可以从发布页直接下载。

原文最后也特别感谢了参与调研和实现的开发者,尤其是 @TenHian 在早期探索阶段的工作,以及 @henderkes 在最终实现中投入的大量精力。

如果日常主要在 Windows 上开发 PHP,现在已经可以直接试用 FrankenPHP。
FrankenPHP 原生支持 Windows 了

目录
相关文章
|
7天前
|
人工智能 安全 API
CoPaw:5分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
10天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
11197 89
|
8天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
7164 23
|
9天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
6769 14
|
6天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
5123 9
|
3天前
|
人工智能 JavaScript 测试技术
保姆级教程:OpenClaw阿里云及本地部署+Claude Code集成,打造全能 AI 编程助手
在AI编程工具百花齐放的2026年,Anthropic推出的Claude Code凭借72.5%的SWE-bench测试高分、25倍于GitHub Copilot的上下文窗口,成为开发者追捧的智能编程助手。但单一工具仍有局限——Claude Code擅长代码生成与审查,却缺乏灵活的部署与自动化执行能力;而OpenClaw(前身为Clawdbot)作为开源AI代理框架,能完美弥补这一短板,通过云端与本地双部署,实现“代码开发-测试-部署”全流程自动化。
2032 13
|
2天前
|
人工智能 安全 前端开发
Team 版 OpenClaw:HiClaw 开源,5 分钟完成本地安装
HiClaw 基于 OpenClaw、Higress AI Gateway、Element IM 客户端+Tuwunel IM 服务器(均基于 Matrix 实时通信协议)、MinIO 共享文件系统打造。
2791 7
|
11天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
6630 17
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
|
4天前
|
人工智能 JSON API
保姆级教程:OpenClaw阿里云及本地部署+模型切换流程+GLM5.0/Seedance2.0/MiniMax M2.5接入指南
2026年,GLM5.0、Seedance2.0、MiniMax M2.5等旗舰大模型相继发布,凭借出色的性能与极具竞争力的成本优势,成为AI工具的热门选择。OpenClaw作为灵活的AI Agent平台,支持无缝接入这些主流模型,通过简单配置即可实现“永久切换、快速切换、主备切换”三种模式,让不同场景下的任务执行更高效、更稳定。
2297 2

热门文章

最新文章