本文目录导读:

我来全面介绍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
推荐交付方案:
- 小型项目:源码包 + README
- 中大型项目:Docker镜像 + CI/CD
- 企业应用:完整的部署脚本 + 监控配置
关键是要确保:
- ✅ 环境配置分离
- ✅ 依赖管理完善
- ✅ 安全检查到位
- ✅ 文档清晰完整
版权声明: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直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播