PHP 怎么PHP 交付物

wen PHP项目 1

本文目录导读:

PHP 怎么PHP 交付物

  1. 常见PHP交付物类型
  2. 交付物配置管理
  3. 部署脚本示例
  4. 不同框架的交付物特点
  5. CI/CD 配置示例
  6. 安全性交付清单
  7. 最佳实践建议

我来全面介绍PHP交付物,涵盖不同场景下的最佳实践和常见交付形式。

常见PHP交付物类型

A. 源代码包

project/
├── src/
│   ├── Controllers/
│   ├── Models/
│   └── Views/
├── config/
├── public/
│   └── index.php
├── vendor/          # Composer依赖
├── .env.example
├── composer.json
├── README.md
└── requirements.txt

B. Docker 镜像

# Dockerfile
FROM php:8.2-fpm
# 安装扩展
RUN docker-php-ext-install pdo_mysql mysqli gd
# 复制代码
COPY . /var/www/html
# 设置权限
RUN chown -R www-data:www-data /var/www/html
EXPOSE 9000
CMD ["php-fpm"]

C. Phar 包

// 创建Phar包
$phar = new Phar('app.phar');
$phar->buildFromDirectory('src/');
$phar->setStub($phar->createDefaultStub('index.php'));

交付物配置管理

环境配置示例

<?php
// config/app.php
return [
    'env' => getenv('APP_ENV') ?: 'production',
    'debug' => (bool) getenv('APP_DEBUG') ?: false,
    'database' => [
        'host' => getenv('DB_HOST') ?: 'localhost',
        'name' => getenv('DB_NAME') ?: 'app_db',
        'user' => getenv('DB_USER') ?: 'root',
        'password' => getenv('DB_PASSWORD') ?: '',
    ],
    'cache' => [
        'driver' => getenv('CACHE_DRIVER') ?: 'file',
        'prefix' => getenv('CACHE_PREFIX') ?: 'app_',
    ],
    'log' => [
        'level' => getenv('LOG_LEVEL') ?: 'warning',
        'path' => __DIR__ . '/../storage/logs/app.log',
    ],
];

部署脚本示例

自动化部署脚本

#!/bin/bash
# deploy.sh
# 1. 检查环境
echo "Checking PHP version..."
php -v | head -n 1
# 2. 安装依赖
echo "Installing dependencies..."
composer install --no-dev --optimize-autoloader
# 3. 配置环境
echo "Configuring environment..."
if [ ! -f .env ]; then
    cp .env.example .env
    echo "Please update .env file with production settings"
fi
# 4. 优化
echo "Optimizing..."
php artisan config:cache
php artisan route:cache
php artisan view:cache
# 5. 设置权限
echo "Setting permissions..."
chmod -R 755 storage bootstrap/cache
chmod -R 775 storage/logs
# 6. 数据库迁移
echo "Running migrations..."
php artisan migrate --force
# 7. 清理
echo "Cleaning up..."
php artisan optimize:clear

不同框架的交付物特点

Laravel 项目

# 典型的Laravel交付物结构
laravel-app/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
├── .env.example
├── artisan
├── composer.json
└── server.php

WordPress 插件

<?php
/**
 * Plugin Name: My Custom Plugin
 * Plugin URI: https://example.com
 * Description: Custom WordPress plugin
 * Version: 1.0.0
 * Author: Your Name
 * License: GPL v2 or later
 */
// 插件核心代码
class MyCustomPlugin {
    public function __construct() {
        add_action('init', [$this, 'init']);
    }
    public function init() {
        // 初始化代码
    }
}
new MyCustomPlugin();

CI/CD 配置示例

GitHub Actions

# .github/workflows/deploy.yml
name: PHP Deploy
on:
  push:
    branches: [ main ]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'
      - name: Install Dependencies
        run: composer install --no-progress --no-suggest
      - name: Run Tests
        run: vendor/bin/phpunit
  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to Production
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.KEY }}
          script: |
            cd /var/www/app
            git pull origin main
            composer install --no-dev
            php artisan migrate --force

安全性交付清单

# PHP 项目交付安全检查清单
## 代码安全
- [ ] 移除所有调试代码 (var_dump, dd, print_r)
- [ ] 关闭错误显示 (display_errors = Off)
- [ ] 删除所有测试文件和临时文件
- [ ] 检查SQL注入防护
- [ ] 验证XSS防护措施
## 配置安全
- [ ] 更新数据库密码为强密码
- [ ] 更改默认管理员密码
- [ ] 配置HTTPS
- [ ] 设置正确的文件权限
- [ ] 禁用危险PHP函数 (exec, system, shell_exec)
## 环境安全
- [ ] 更新composer.lock
- [ ] 移除.env文件中的敏感信息
- [ ] 配置正确的CORS策略
- [ ] 设置Rate Limiting
- [ ] 启用CSRF保护
## 部署检查
- [ ] 确认数据库迁移脚本就绪
- [ ] 验证缓存机制
- [ ] 测试备份恢复流程
- [ ] 核对日志轮转配置

最佳实践建议

交付物优化

// 1. 自动加载优化
composer dump-autoload -o
// 2. 启用OPcache
opcache.enable=1
opcache.memory_consumption=128
// 3. 压缩静态资源
public function optimizeAssets() {
    // 压缩CSS/JS
    $this->minifyCSS();
    $this->minifyJS();
    // 合并文件
    $this->combineAssets();
}

版本控制

# 使用Git标签管理版本
git tag -a v1.0.0 -m "Production release 1.0.0"
git push origin v1.0.0
# 或使用语义化版本
major.minor.patch

推荐交付方案:

  1. 小型项目:源码包 + README
  2. 中大型项目:Docker镜像 + CI/CD
  3. 企业应用:完整的部署脚本 + 监控配置

关键是要确保:

  • ✅ 环境配置分离
  • ✅ 依赖管理完善
  • ✅ 安全检查到位
  • ✅ 文档清晰完整

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