本文目录导读:

- 使用 PHP 内置的 PHAR(推荐)
- 使用 Box(最常用)
- 使用 PHPDism(跨平台)
- 使用 PHPCompiler(Windows)
- 使用 rd-based 方案(跨平台)
- 使用 Pholang(推荐)
- 使用 Node.js + Docker 方案
- 使用并发打包工具:Packer
- 注意事项
在 PHP 中生成独立可执行文件(即打包成单个可执行的二进制文件,无需安装 PHP 环境即可运行)主要有以下几种主流方案:
使用 PHP 内置的 PHAR(推荐)
PHAR(PHP Archive)是 PHP 官方的打包格式,可以生成单个 .phar 文件。
基本用法:
# 创建 PHAR 文件需要修改 php.ini phar.readonly = Off
示例代码:
<?php
// create-phar.php
$srcRoot = '/path/to/your/project/';
$buildRoot = '/path/to/build/';
$phar = new Phar($buildRoot . 'app.phar');
$phar->buildFromDirectory($srcRoot);
$phar->setDefaultStub('index.php');
$phar->setStub("#!/usr/bin/env php\n" . $phar->createDefaultStub('index.php'));
$phar->compressFiles(Phar::GZ);
运行:
php app.phar
使用 Box(最常用)
Box 是目前最流行的 PHP 打包工具,专门用于将 PHP 项目打包成独立可执行文件。
安装 Box:
composer global require humbug/box
配置文件 box.json:
{
"main": "bin/app.php",
"output": "dist/app.phar",
"compression": "GZ",
"directories": ["src"],
"files": ["vendor/autoload.php"],
"stub": true,
"chmod": "0755"
}
打包命令:
box compile
运行:
./dist/app.phar
使用 PHPDism(跨平台)
PHPDism 可以将 PHP 编译成独立的原生可执行文件。
安装:
git clone https://github.com/endoleg/phpdism.git cd phpdism python3 setup.py install
使用:
phpdism -i input.php -o output -v
使用 PHPCompiler(Windows)
安装:
composer require phplicengine/phpcompiler
示例:
<?php
require 'vendor/autoload.php';
use PHPLicengine\Compiler\Compiler;
$compiler = new Compiler();
$compiler->compile('source.php', 'output.exe');
使用 rd-based 方案(跨平台)
使用 static-php-cli:
# 下载预编译版本 wget https://github.com/crazywhalecc/static-php-cli/releases/download/v2.0.0/static-php-cli.phar # 使用 php static-php-cli.phar make
使用 Pholang(推荐)
PhoLoader 是一个轻量级的PHP打包工具。
安装:
composer require juninmd/pholoader
使用:
<?php
use PhoLoader\Loader;
$loader = new Loader();
$loader->setExecutable('app.php');
$loader->save('app.phar');
使用 Node.js + Docker 方案
虽然不是纯 PHP,但可以通过 Docker 来创建独立运行环境:
FROM php:8.2-cli COPY . /app WORKDIR /app CMD ["php", "app.php"]
然后构建并运行:
docker build -t myapp . docker run myapp
使用并发打包工具:Packer
composer require super-locaml/packer
$packer = new Packer();
$packer->setExecutable('app.php');
$packer->setOutput('app');
$packer->pack();
注意事项
- PHP 版本要求:确保目标系统有相应的 PHP 版本
- 扩展依赖:如果使用了特定扩展,需要在目标系统安装
- 性能影响:打包后的文件运行速度可能略有下降
- 平台兼容性:不同平台(Windows/Linux/macOS)需要分别打包
- 文件大小:打包后的文件可能较大,特别是包含第三方库时
| 需求 | 推荐工具 |
|---|---|
| 简单快速 | PHAR(内置) |
| 生产环境 | Box |
| 跨平台 | PHPDism / static-php-cli |
| Windows | PHPCompiler |
| 轻量级 | PhoLoader |
最推荐使用 Box,因为它功能强大、维护活跃、支持广泛,并且有完善的文档和社区支持。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播