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,外网无法访问(这是安全设计,别折腾改绑定地址)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/,不能扁平放文件http://localhost:8080/api/xxx 被前端 JS 调用,不是直接执行 .php
python build.py win64,P
ython 3.7+ 必须已安装且在 PATHroadsend phpcompiler(已停止维护)或 ZZEE PHP GUI:别碰前者 2012 年后无更新,不支持 PHP 7+,生成的 .exe 在 Win10/11 上大概率触发 SmartScreen 拦截;后者仅支持 PHP 5.2,连 json_encode() 都不可用。网上教程还在推它们,是因为搜索排名老,不是因为好用。
bat + php.exe + php.ini 打 zip 包,比强行打包更可靠真正卡住新手的,从来不是选哪个工具,而是没想清楚:你到底要的是“能双击启动的 Web 应用”,还是“有图形按钮的本地程序”,还是“后台静默运行的工具”。目标模糊,再好的打包工具也救不了路径错误、扩展缺失、端口被占这些基础问题。