PHP无法真正编译为Windows原生.exe,所谓打包实为封装解释器与脚本;ExeOutput适合Web界面工具,PHP Desktop适合富客户端GUI应用,老旧工具如roadsend、ZZEE已淘汰且不安全。

PHP 本身不能直接编译成 Windows 可执行文件(.exe),所谓“PHP 打包成 exe”实际是把 PHP 解释器、你的 PHP 脚本、依赖资源一起封装进一个自解压/嵌入式运行环境。新手容易误以为存在“PHP 编译器”,结果选错工具,打出来的 .exe 启动就报错、访问不了页面、或根本没法分发。
用 ExeOutput for PHP:适合带 Web 界面的桌面工具(如内部数据录入、本地报表生成)
它把 PHP-CGI + SQLite + 内置轻量 Web 服务器(类似 php -S)全打包进一个 .exe,双击即开一个浏览器窗口访问 http://127.0.0.1:8080。不是真正“编译”,但对新手最友好。
- 必须用
index.php作入口,路径写死在配置里;改入口要重打包 - 不支持
$_SERVER['argv']命令行参数,只能走 HTTP 请求传参 - 内置服务器默认只监听
127.0.0.1,外网无法访问(这是安全设计,别折腾改绑定地址) - 打包后体积通常 20–40MB,因为含完整 PHP 运行时
ExeOutput 配置示例: - Project Type: "Web Application" - Startup URL: "/index.php" - PHP Version: "8.1 (x64)" - Output EXE: "mytool.exe"
用 PHP Desktop:适合需要 GUI 控件、本地文件操作、多窗口的富客户端
底层基于 Chromium Embedded Framework (CEF) + PHP,本质是把浏览器当外壳,PHP 做后端逻辑。比 ExeOutput 更灵活,能调用系统 API(如弹窗、托盘图标),但配置门槛高,Windows 上需手动处理 vc_redist.x64.exe 依赖。
- 项目结构强制为
www/+php/+resources/,不能扁平放文件 - PHP 脚本通过
http://localhost:8080/api/xxx被前端 JS 调用,不是直接执行.php - 调试靠打开内置 DevTools(F12),不能用 Xdebug 断点到桌面进程
- 打包命令是
python build.py win64,Python 3.7+ 必须已安装且在 PATH
用 roadsend phpcompiler(已停止维护)或 ZZEE PHP GUI:别碰
前者 2012 年后无更新,不支持 PHP 7+,生成的 .exe 在 Win10/11 上大概率触发 SmartScreen 拦截;后者仅支持 PHP 5.2,连 json_encode() 都不可用。网上教程还在推它们,是因为搜索排名老,不是因为好用。
立即学习“PHP免费学习笔记(深入)”;
- 遇到 “PHP to EXE converter free download” 类网站,90% 是捆绑广告软件或过期工具
- 所有声称“一键编译 PHP 为原生机器码”的工具,都是假消息——PHP 是解释型语言,没有真正的 AOT 编译器
- 如果需求只是“让同事双击运行一个脚本”,用
bat+php.exe+php.ini打 zip 包,比强行打包更可靠
真正卡住新手的,从来不是选哪个工具,而是没想清楚:你到底要的是“能双击启动的 Web 应用”,还是“有图形按钮的本地程序”,还是“后台静默运行的工具”。目标模糊,再好的打包工具也救不了路径错误、扩展缺失、端口被占这些基础问题。











