更新PHP网站通常涉及多个方面,包括代码更新、依赖管理、数据库迁移、安全加固和部署流程。以下是详细的步骤指南:

1. 代码更新

本地开发环境修改

  • 版本控制:使用Git管理代码,通过分支(如、)开发新功能,避免直接修改主分支。
  • dev
  • feature/xxx
  • bash
  • git checkout -b feature/new-login# 修改代码后提交git add .git commit -m "新增登录功能"git push origin feature/new-login
  • 测试:在本地运行测试(如PHPUnit、Codeception)确保功能正常。
  • bash
  • ./vendor/bin/phpunit tests/

代码审查

  • 通过Pull Request(GitHub/GitLab)或Merge Request提交代码,由团队成员审查后合并到主分支(如或)。
  • main
  • master

2. 依赖管理

  • 更新Composer依赖
  • bash
  • composer update # 更新所有依赖composer update vendor/package-name # 更新特定包
  • 检查兼容性:确保新版本依赖与PHP版本和框架兼容(如Laravel的约束)。
  • composer.json

3. 数据库迁移

  • 使用迁移工具(如Laravel的Artisan、Phinx):
  • bash
  • # Laravel示例:创建迁移文件php artisan make:migration add_email_verified_at_to_users# 编辑迁移文件后运行php artisan migrate
  • 备份数据库:更新前备份数据,避免迁移失败导致数据丢失。
  • bash
  • mysqldump -u username -p database_name > backup.sql

4. 安全加固

  • 更新PHP版本:升级到最新稳定版(如PHP 8.3),修复已知漏洞。
  • bash
  • # Ubuntu示例sudo apt updatesudo apt install php8.3
  • 检查依赖安全
  • bash
  • composer audit # 检查已知漏洞
  • 更新安全配置
    • 禁用危险函数(在中)。
  • disable_functions
  • php.ini
    • 强制HTTPS(修改或Nginx配置)。
  • .htaccess
    • 更新CSRF令牌、密码哈希算法(如)。
  • password_hash()

5. 部署流程

手动部署(简单场景)

  1. 上传代码
  • rsync
  1. bash
  2. rsync -avz --exclude='z' --exclude='storage/' ./ user@server:/var/www/html/
  3. 重启服务
  4. bash
  5. sudo systemctl restart apache2 # Apachesudo systemctl restart php8.3-fpm # PHP-