laravel 9.x 升级到 laravel 10
Laravel 10 已于 2 月 14 日发布。Laravel 10 要求最低 PHP 版本为 8.1。在 Laravel 发行说明 中阅读有关该发行版的更多信息。
Laravel 从 9.x 升级到 10.x
Laravel 升级涉及以下步骤。
- 更新 PHP 版本
- 更新 Composer 版本
- 更新 Composer 依赖项
- 更新 Composer 最低稳定性
- 更新 Docker Composer
所有的升级步骤都可以在 Laravel 官方文档中找到。
更新 PHP 版本
Laravel 10 需要 PHP 8.1.0 或更高版本。如果你使用 8.1 以下的 PHP 版本。请先更新你的 PHP 版本。
现在我们将检查 Admin Panel PHP 版本。PHP 版本将会显示在 Admin Panel 或 Laravel 默认的首页。
你也可以使用以下命令在命令行中检查 PHP 版本和 Laravel 版本。
PHP 版本
./vendor/bin/sail php -v
// or
./vendor/bin/sail php --version
//If you not using sail
php -v
Laravel 版本
./vendor/bin/sail artisan -v
//or
./vendor/bin/sail artisan --version
//If you not using sail
php artisan --version
除此之外,你还可以在 ./vendor/laravel/framework/src/Illuminate/Foundation/Application.php
文件中检查 Laravel 版本。
本文中 Laravel 管理面板使用的是 Laravel sail(Docker 开发环境)。所以我们需要更新 docker-compose.yml
文件中的 PHP。 我们将在最后更新它。
Composer 版本更新
Laravel 10 需要 Composer 2.2.0 或更高版本。 如果你使用的是较低版本,请卸载并安装新版本。
可以使用以下命令检查你的 composer 版本
composer -v
composer -vvv about
如果你使用的是 sail,试试下面这种方式
./vendor/bin/sail composer -v
./vendor/bin/sail composer -vvv about
现在已经是 2.2.0 以上的 composer 版本。
更新 Composer 依赖项
对于 Laravel 10,我们需要在应用程序的 composer.json 文件中更新以下依赖项
- laravel/framework to ^10.0
- spatie/laravel-ignition to ^2.0
- php to ^8.1
管理面板更新了以下依赖项
diff --git a/composer.json b/composer.json
index 381f15d..b0be0bc 100644
--- a/composer.json
+++ b/composer.json
@@ -5,12 +5,12 @@
"keywords": ["framework", "laravel", "boilerplate", "admin panel"],
"license": "MIT",
"require": {
- "php": "^8.0.2",
+ "php": "^8.1",
"balajidharma/laravel-admin-core": "^1.0",
"guzzlehttp/guzzle": "^7.2",
- "laravel/framework": "^9.19",
- "laravel/sanctum": "^2.14.1",
- "laravel/tinker": "^2.7",
+ "laravel/framework": "^10.0",
+ "laravel/sanctum": "^3.2",
+ "laravel/tinker": "^2.8",
"spatie/laravel-permission": "^5.5"
},
"require-dev": {
@@ -19,11 +19,11 @@
"laravel/breeze": "^1.7",
"laravel/dusk": "^7.1",
"laravel/pint": "^1.0",
- "laravel/sail": "^1.0.1",
+ "laravel/sail": "^1.18",
"mockery/mockery": "^1.4.4",
- "nunomaduro/collision": "^6.1",
- "phpunit/phpunit": "^9.5.10",
- "spatie/laravel-ignition": "^1.0"
+ "nunomaduro/collision": "^7.0",
+ "phpunit/phpunit": "^10.0",
+ "spatie/laravel-ignition": "^2.0"
},
"autoload": {
"psr-4": {
修改 composer Minimum Stability
还有一个 composer 文件的更改。minimum-stability 选项需要被修改为 stable
"minimum-stability": "stable",
在修改完后运行 composer update
./vendor/bin/sail composer update
现在打开应用程序主页。
如果你需要更新的欢迎页面,请复制 raw.githubusercontent.com/laravel/... 并更新 resources/views/welcome.blade.php
文件
更新 Docker Composer
我们将使用 Laravel 上的最新更改更新 docker-compose.yml 文件。
最新的 Laravel sail 使用的是 PHP 8.2 版本。以下是最终版本的 docker-compose.yml 文件。
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.2
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.2/app
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
- meilisearch
- mailpit
- selenium
mysql:
image: 'mysql/mysql-server:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 1
volumes:
- 'sail-mysql:/var/lib/mysql'
networks:
- sail
healthcheck:
test:
- CMD
- mysqladmin
- ping
- '-p${DB_PASSWORD}'
retries: 3
timeout: 5s
redis:
image: 'redis:alpine'
ports:
- '${FORWARD_REDIS_PORT:-6379}:6379'
volumes:
- 'sail-redis:/data'
networks:
- sail
healthcheck:
test:
- CMD
- redis-cli
- ping
retries: 3
timeout: 5s
meilisearch:
image: 'getmeili/meilisearch:latest'
ports:
- '${FORWARD_MEILISEARCH_PORT:-7700}:7700'
volumes:
- 'sail-meilisearch:/meili_data'
networks:
- sail
healthcheck:
test:
- CMD
- wget
- '--no-verbose'
- '--spider'
- 'http://localhost:7700/health'
retries: 3
timeout: 5s
mailpit:
image: 'axllent/mailpit:latest'
ports:
- '${FORWARD_MAILPIT_PORT:-1025}:1025'
- '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025'
networks:
- sail
selenium:
image: 'selenium/standalone-chrome'
extra_hosts:
- 'host.docker.internal:host-gateway'
volumes:
- '/dev/shm:/dev/shm'
networks:
- sail
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql:mysql
ports:
- 8080:80
environment:
MYSQL_USERNAME: "${DB_USERNAME}"
MYSQL_ROOT_PASSWORD: "${DB_PASSWORD}"
PMA_HOST: mysql
networks:
- sail
networks:
sail:
driver: bridge
volumes:
sail-mysql:
driver: local
sail-redis:
driver: local
sail-meilisearch:
driver: local
我们已成功将管理面板升级到 Laravel 10.x