升级前必须备份项目文件(通过cp -r /path/to/laravel/project /backup/path)和数据库(通过mysqldump -u username -p database_name > backup.sql),避免升级失败导致数据丢失。
php -v查看版本;若版本过低,使用sudo apt install php8.1 php8.1-mbstring php8.1-openssl php8.1-pdo-mysql等命令升级。mbstring、openssl、pdo_mysql、tokenizer、xml、gd、bcmath),通过php -m检查是否启用,未启用的扩展修改php.ini(取消对应行注释)或重新安装。composer self-update),确保依赖解析准确性。使用Git等版本控制系统管理代码,升级前创建新分支(如git checkout -b update-laravel-11),便于后续回滚(git checkout main)。
小版本升级主要修复bug与优化性能,风险较低,步骤如下:
composer update laravel/framework,Composer会自动处理依赖兼容性。php artisan upgrade(Laravel 9及以上版本支持),自动处理配置文件、数据库迁移等任务。php artisan test)、功能测试或手动测试,确保所有功能正常。大版本升级可能引入重大变更(如路由语法调整、中间件重构),需谨慎操作:
git remote add laravel https://github.com/laravel/laravel.git);git pull laravel 9.x --no-ff --allow-unrelated-histories);composer.json、配置文件等关键文件);git add . && git commit -am '升级到Laravel 9.x')。composer update laravel/framework + php artisan upgrade)。Laravel的storage(日志、缓存、上传文件)和bootstrap/cache(框架缓存)目录需赋予Web服务器用户(如www-data)写权限,执行:
sudo chown -R www-data:www-data /path/to/laravel/storage /path/to/laravel/bootstrap/cache
sudo chmod -R 775 /path/to/laravel/storage /path/to/laravel/bootstrap/cache。
若composer update报依赖冲突,可尝试:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/);composer clear-cache);php -d memory_limit=256M composer update);composer.json中的依赖版本约束(如将冲突的包版本调整为兼容范围),再运行composer update。确保Web服务器(Nginx/Apache)正确指向Laravel的public目录,并配置PHP-FPM解析:
server {
listen 80;
server_name yourdomain.com;
root /path/to/laravel/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 根据PHP版本调整
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
启用配置(sudo ln -s /etc/nginx/sites-available/your-project /etc/nginx/sites-enabled/)并重启Nginx(sudo systemctl restart nginx)。<VirtualHost *:80>
ServerName yourdomain.com;
DocumentRoot /path/to/laravel/public;
<Directory /path/to/laravel/public>
AllowOverride All;
Require all granted;
</Directory>
</VirtualHost>
启用模块(sudo a2enmod rewrite)和站点(sudo a2ensite your-project.conf),重启Apache(sudo systemctl restart apache2)。