PHP 怎么打包项目

wen PHP项目 1

本文目录导读:

PHP 怎么打包项目

  1. 方案一:传统 Web 项目(部署到服务器)——压缩包/归档
  2. 方案二:使用 Composer 构建(现代 PHP 标准流程)
  3. 方案三:构建为 PHAR 文件(命令行工具/库)
  4. 方案四:打包为桌面应用(带 GUI 或内嵌服务器)
  5. 方案五:Docker 镜像(容器化部署)
  6. 重点防护:打包时必须排除的文件
  7. 总结建议

PHP 项目的打包方式取决于你的项目类型(是 Web 应用、命令行工具还是桌面应用)以及分发目标(是部署到服务器还是交付给用户),以下是几种主流的打包方案:


传统 Web 项目(部署到服务器)——压缩包/归档

这是最常见的场景,通常将整个项目代码打包成一个压缩包(如 .zip.tar.gz),然后上传到服务器解压。

步骤:

  1. 确定包含内容:通常不包含 vendor 目录(依赖包)和 node_modules,因为这些可以在服务器上用 composer installnpm install 重新安装。

  2. 使用 Git 导出(推荐):

    # 导出当前 Git 仓库的干净代码(不含 .git 目录)
    git archive --format=zip HEAD -o project.zip
    # 或者导出指定分支/标签
    git archive --format=tar.gz v1.0.0 -o project.tgz
  3. 使用命令行工具

    # 打包但不包含指定目录(Linux/macOS)
    zip -r project.zip . -x "vendor/*" -x "node_modules/*" -x ".git/*"
    # Windows 下推荐用 7-Zip 或 WinRAR 右键排除目录
  4. 添加部署脚本:在压缩包内包含一个 deploy.shREADME,说明如何安装依赖。


使用 Composer 构建(现代 PHP 标准流程)

这种方式侧重于依赖锁定自动安装,通常配合 CI/CD 流水线。

核心工具: Composer 的 install 命令。

流程:

  1. 本地执行 composer install 生成 composer.lock 文件(如果还没有)。

  2. 修改 composer.json,在 scripts 中添加打包后的清理命令(可选)。

  3. 在 CI/CD 环境(如 GitHub Actions)中执行:

     - name: Install Dependencies
       run: composer install --no-dev --optimize-autoloader
     - name: Build Zip
       run: |
         zip -r release.zip . -x "*.git*" -x "tests/*" -x "node_modules/*"

    优势: 确保服务器环境与本地一致(通过 composer.lock)。


构建为 PHAR 文件(命令行工具/库)

PHAR 类似于 Java 的 JAR,是一个独立的可执行文件,适合分发 CLI 工具或库。

工具: Box(最流行)或 Phar 扩展的手写代码。

使用 Box 打包:

  1. 安装 Box:composer require --dev humbug/box
  2. 创建 box.json 配置文件,指定入口文件和依赖。
  3. 运行 vendor/bin/box build,生成一个 myapp.phar 文件。

示例 box.json

{
    "main": "bin/index.php",
    "output": "myapp.phar",
    "force-autodiscovery": true,
    "exclude-composer-files": true
}

优势: 用户只需下载一个文件即可运行(php myapp.phar)。


打包为桌面应用(带 GUI 或内嵌服务器)

如果项目需要打包成可双击运行的桌面程序(如基于 PHP + SQLite 的工具),通常需要嵌入一个 PHP 二进制程序。

工具: PHPDesktopNativePHP(用 PHP 写桌面应用)或直接使用 php -S 内嵌服务器。

NativePHP 方法(较新):

composer require nativephp/cli
php artisan native:install

它会将你的 Laravel 应用打包为 Windows/macOS 应用,内嵌 PHP 运行时,产出 .exe.app 文件。


Docker 镜像(容器化部署)

如果开发环境是 Docker,这是最推荐的打包方式,因为它包含了 PHP 运行环境本身。

步骤:

  1. 编写一个 Dockerfile
     FROM php:8.2-fpm
     COPY . /var/www/html
     WORKDIR /var/www/html
     RUN composer install --no-dev
     # 或 RUN docker-php-ext-install pdo_mysql
  2. 打包命令:
     docker build -t myphpapp:v1.0 .

    分发: 构建完成后,可以 docker push 到私有仓库,或 docker save 导出为 .tar 文件。


重点防护:打包时必须排除的文件

无论使用哪种方案,建议将以下内容加入排除列表:

  • .git.svn
  • node_modules/(除非你确认要在本地跑构建)
  • tests/(测试代码)
  • .env(包含密码和密钥!重要
  • storage/logs/*.log
  • *.sql 备份文件
  • 开发工具缓存(如 .idea/.vscode/

总结建议

项目类型 最佳方案
最简 Web 部署 git archivezip 排除依赖包
严谨的服务器部署 Composer 锁定依赖 + CI 打包
命令行工具 构建为 .phar
桌面软件 NativePHP 或 PHPDesktop
微服务/K8s Docker 构建镜像

如果你的项目只是临时传给别人看看或者部署到虚拟主机(不支持 SSH),最稳妥的做法就是:压缩整个项目文件夹,但手动删除压缩包中的 vendor.env 文件,然后附上一份简短的部署说明(composer installcp .env.example .env

抱歉,评论功能暂时关闭!