Debian上ThinkPHP版本升级指南
tar命令打包项目目录(如tar -czvf project_backup.tar.gz /var/www/your_project),并通过mysqldump导出数据库(如mysqldump -u root -p your_database > database_backup.sql)。php -v查看PHP版本;确认必要扩展(PDO、Mbstring、OpenSSL、Curl等)已安装(可通过apt install php-pdo php-mbstring php-openssl php-curl安装)。若使用Git管理项目,创建新的升级分支(如feature/upgrade-to-6.0),便于后续回滚:
git checkout -b feature/upgrade-to-6.0
修改项目根目录下的composer.json文件,将topthink/framework版本更新为目标版本(如升级到6.0需改为"topthink/framework": "^8.0"),然后执行以下命令更新依赖:
composer update topthink/framework --with-dependencies
若存在依赖冲突,需手动调整冲突包的版本(如降低第三方扩展版本以适配新框架)。
根据目标版本要求调整项目目录结构:
application改为app,配置文件统一移入config/目录(如database.php、app.php);入口文件public/index.php需更新引导逻辑(如引入thinkphp/base.php或使用require __DIR__ . '/../vendor/autoload.php')。config/目录下的route.php、database.php等文件是否有格式变更(如路由定义方式调整)。config/app.php需设置应用根目录和公共目录:return [
'app_name' => 'Your App',
'root' => __DIR__,
'public_path' => __DIR__ . '/public',
'config_path' => __DIR__ . '/config',
];
根据官方升级指南,修改应用代码中的废弃函数/类、调整路由注册方式、更新模型时间戳处理等:
removeOption方法已被移除,需替换为对应的新方法;middleware方法注册(如Route::get('admin', 'Admin/Index/index')->middleware(\app\middleware\Auth::class));create_time和update_time,需确保数据库表结构匹配。grep命令查找项目中废弃函数的使用(如grep -r "removeOption" ./application)。php vendor/bin/phpunit执行单元测试和集成测试;ab(Apache Benchmark)或wrk工具测试接口性能,确保升级后性能无明显下降。清理缓存
升级后清理ThinkPHP运行时缓存(如runtime/目录下的cache、temp文件夹),避免旧缓存导致功能异常:
rm -rf runtime/cache/* runtime/temp/*
启用安全配置
检查目标版本的安全特性(如CSRF保护、请求限制、XSS过滤),在配置文件中启用(如config/app.php中设置'csrf_on' => true)。
监控与回滚
runtime/log/中的错误日志、服务器资源占用),及时处理异常;git checkout main),或恢复备份的项目文件和数据库。composer update报依赖冲突,可使用composer why-not topthink/framework x.y.z查看冲突原因,调整冲突包的版本(如降低topthink/orm版本以适配新框架)。config/route.php中的路由定义是否符合新版本要求(如ThinkPHP 6.0中路由文件需放在route/目录下),并清理runtime/cache目录。whereExists方法需使用Db::raw包裹子查询)。