PHP 可以**打包成 EXE 文件**,但并非“原生编译”(PHP 是脚本语言,需依赖解释器运行),核心原理是:将 **PHP 解释器(php.exe)、你的 PHP 脚本、依赖扩展/配置文件** 打包成一个独立的 EXE 可执行程序,运行时通过内置的解释器解析脚本,无需用户额外安装 PHP 环境。
### 一、核心说明
– 本质:**打包而非编译**,EXE 内部包含了完整的运行环境(解释器+脚本+依赖),并非将 PHP 代码编译为机器码(性能无本质提升,仅方便分发)。
– 适用场景:桌面小工具、离线运行的 PHP 程序、需保护源码(避免脚本被直接查看)、免环境部署给非技术用户。
– 限制:打包后的 EXE 仅支持对应系统(Windows 打包的 EXE 不能在 Linux/Mac 运行),文件体积较大(含解释器),性能略低于直接在 PHP 环境运行。
### 二、常用打包工具(Windows 平台为主)
以下是成熟、易用的工具,按“新手友好度”排序:
#### 1. ExeOutput for PHP(推荐新手)
– 特点:可视化操作,无需复杂配置,功能强大,支持打包 PHP+HTML+CSS+JS 为桌面应用(类似 Electron,但轻量)。
– 核心功能:
– 内置 PHP 解释器(支持 PHP 5.6~8.2 版本),自动处理依赖扩展。
– 支持加密源码(防止解压后泄露脚本)、自定义 EXE 图标、隐藏命令行窗口(生成 GUI 程序)。
– 支持打包 Web 应用(内置微型服务器,运行后通过浏览器访问)或控制台程序。
– 操作步骤:
1. 下载安装 ExeOutput for PHP(官网:https://www.exeoutput.com/)。
2. 新建项目,选择“PHP 脚本”或“Web 应用”模式。
3. 添加你的 PHP 文件(主文件设为 index.php)、依赖资源(如图片、配置文件)。
4. 配置 EXE 信息(图标、程序名称、运行模式)。
5. 点击“编译”,生成独立 EXE 文件。
#### 2. PHP Compiler (bcompiler)
– 特点:开源工具,基于 PHP 扩展实现脚本加密+打包,轻量但需手动配置。
– 注意:
– 仅支持 PHP 5.x~7.x(部分高版本 PHP 不兼容)。
– 需先安装 `bcompiler` 扩展(通过 PECL 或手动编译)。
– 简单用法:
1. 安装 bcompiler 扩展:`pecl install bcompiler`(需配置 PHP 环境变量)。
2. 编写打包脚本(示例):
“`php
‘main’, // 主脚本
‘utils.php’ => ‘utils’ // 依赖脚本
];
// 调用 bcompiler 打包
bcompiler_write_exe($outputExe, $exePath, $scripts);
echo “打包完成:$outputExe”;
?>
“`
3. 运行打包脚本:`php pack.php`,生成 EXE。
#### 3. Phalanger
– 特点:将 PHP 代码编译为 .NET 中间语言(IL),再打包为 EXE(支持 .NET Framework)。
– 适用场景:需与 .NET 程序交互、需要更好的性能(编译为 IL 后比脚本解释快)。
– 限制:部分 PHP 扩展(如 `gd`、`mysqli`)需适配 .NET 版本,兼容性略差。
– 操作:下载 Phalanger(官网:https://phalanger.codeplex.com/),通过 Visual Studio 插件或命令行编译 PHP 项目为 EXE。
### 三、关键注意事项
1. **源码保护**:打包后的 EXE 可被解压(部分工具支持加密,如 ExeOutput),若需高强度保护,可先加密 PHP 脚本(如用 Zend Guard、IonCube)再打包。
2. **依赖处理**:确保所有依赖的 PHP 扩展(如 `curl`、`json`)已包含在打包环境中(ExeOutput 会自动检测,手动打包需手动复制 `ext` 目录)。
3. **运行权限**:部分 EXE 需管理员权限(如操作系统文件),打包时可配置“以管理员身份运行”。
4. **跨平台**:Windows 打包的 EXE 仅能在 Windows 运行;若需 Linux/Mac 可执行文件,需用对应平台工具(如 Linux 用 `phar` 打包为可执行归档,Mac 用 `platypus` 打包)。
5. **性能**:打包后的 EXE 运行速度与直接用 PHP 解释器运行脚本基本一致,无明显提升(Phalanger 编译为 IL 除外)。
### 四、总结
– 新手/快速需求:优先用 **ExeOutput for PHP**(可视化、零配置、功能全)。
– 开源/轻量需求:用 **PHP Compiler (bcompiler)**(需手动配置,适合熟悉 PHP 环境的用户)。
– .NET 交互需求:用 **Phalanger**(编译为 IL,兼容性需测试)。
如果是开发 Web 应用,无需打包为 EXE,直接部署到 PHP 服务器(如 Nginx+PHP-FPM)即可;打包 EXE 更适合桌面端或离线运行的场景。