Hướng dẫn update project từ Laravel 5.4 lên Laravel 5.5
Sau đây Chung xin hướng dẫn các bạn update project từ Laravel 5.4 lên Laravel 5.5 nhé, quá trình update này Chung áp dụng trên chính project của mình luôn.
Update composer.json
Vì composer quản lý các package bạn cài trong app Laravel của mình nên cần phải cập nhật theo Laravel. Bạn hãy dùng tool code compare để so sánh file composer.json của Laravel 5.5 với file composer hiện tại của bạn. Sau khi merge code từ 2 file này lại ta sẽ có file composer.json
mới.
Sau khi có file mới, việc cập nhật sẽ không diễn ra suôn sẻ mà bạn phải thay đổi 1 chút đó là phần require trong file composer.json
phải đổi thành *
hết (nếu siêng thì bạn vào packagist để check xem package nào update lên version nào).
"require": {
"php": ">=7.0.0",
"fideloper/proxy": "~3.3",
"laravel/framework": "5.5.*",
"laravel/tinker": "*",
"artesaos/seotools": "*",
"baum/baum": "*",
"cviebrock/eloquent-sluggable": "*",
// ...
}
Chạy composer update
trong command
composer update
Automatic Package Discovery
Nếu bạn chưa biết thì trong Laravel 5.5 có sự thay đổi mới đó là Automatic Package Discovery bạn có thể xem tại đây
Như vậy các package có hỗ trợ discovery thì sẽ không cần phải khai báo trong config\app.php
chính vì vậy bạn có 2 sự lựa chọn để check xem package nào đã kịp thời cập nhật lên Laravel 5.5
Cách 1: Comment tất cả các Service Provider
mà bạn đã thêm vào danh sách providers
trong config\app.php
, chạy trang web của bạn (nhớ bật chế độ debug lên). Whoops (đọc bài về Sự trở lại của Whoops tại đây) sẽ chỉ ra Service Provider
nào cần phải có, vì package đó chưa hỗ trợ Package Discovery
Như hình trên thì mình sẽ biết là cần phải uncomment proivder dưới đây
Artesaos\SEOTools\Providers\SEOToolsServiceProvider::class,
Trong project của mình thì có 1 số package này chưa hỗ trợ Automatic Package Discovery cho bạn nào có package giống mình thì đỡ phải thử
Artesaos\SEOTools\Providers\SEOToolsServiceProvider::class,
Barryvdh\Elfinder\ElfinderServiceProvider::class,
Barryvdh\TranslationManager\ManagerServiceProvider::class,
Conner\Tagging\Providers\TaggingServiceProvider::class,
Cách 2: Cách này thì các bạn vào github và kiểm tra xem package đó có hỗ trợ Package Discovery trong composer.json
hay không? Nếu file composer.json
vừa được cập nhật khoảng vài ngày lại đây thì chắc chắn là có hỗ trợ, còn không thì bạn vào file composer.json
có đoạn này thì tức là có hỗ trợ, ví dụ mình check gói https://github.com/davejamesmiller/laravel-breadcrumbs thấy nó được cập nhật 9 ngày trước và file composer.json có đoạn này, tức là đã cập nhật hỗ trợ Laravel 5.5
"extra": {
"laravel": {
"providers": [
"DaveJamesMiller\\Breadcrumbs\\BreadcrumbsServiceProvider"
],
"aliases": {
"Breadcrumbs": "DaveJamesMiller\\Breadcrumbs\\Facades\\Breadcrumbs"
}
}
}
Lúc này trang https://chungnguyen.xyz/ đã lên version 5.5.1
Thay đổi file source chính
Tuy các package đã cập nhật nhưng source chính vẫn còn là 5.4 mình sẽ dùng tool code compare bên trên để check xem có những file nào thay đổi (các bạn nhớ download source Laravel 5.5 về nhé), dưới đây là những file có thay đổi
- app\Console\Kernel.php (cập nhật)
- app\Exceptions\Handler.php (cập nhật)
- app\Http\Controllers\Controller.php (cập nhật)
- app\Http\Middleware\EncryptCookies.php (đổi từ BaseTrimmer sang Middleware) (cập nhật)
- app\Http\Middleware\TrimStrings.php (đổi từ BaseTrimmer sang Middleware) (cập nhật)
- app\Http\Middleware\VerifyCsrfToken.php (đổi từ BaseTrimmer sang Middleware) (cập nhật)
- file app\Http\Middleware\TrustProxies.php (Thêm mới )
- app\Http\Kernel.php (cập nhật)
- app\Providers\BroadcastServiceProvider.php (cập nhật)
- app\Providers\RouteServiceProvider.php (cập nhật)
- routes\channels.php (Thêm mới )
- artisan (cập nhật) - quan trọng
- public\index.php (cập nhật) - quan trọng
- bootstrap\autoload.php (xóa bỏ) bây giờ artisan sẽ vào composer/autload.php chứ không còn vào bootstrap\autoload.php nữa
- bootstrap\cache\packages.php (xóa bỏ)
- bootstrap\cache\services.php (xóa bỏ)
Sau khi làm cẩn thận các bước trên bạn hãy chạy tất cả các lệnh sau trong command
composer dumpautoload
php artisan optimize
php artisan view:clear
php artisan cache:clear
php artisan config:clear
Nếu bạn quản lý vps hay có quyền truy cập ssh thì dễ rồi, còn không hãy đọc bài này của Chung nhé Hướng dẫn update code lên hosting khi cài package mới trong Laraevl 5.4
Chi tiết có trên Laravel Docs bạn có thể xem tham khảo thêm.
Trên đây là quá trình update blog Chung Nguyễn lên Laravel 5.5. Chúc các bạn thành công nhé 😜😜
Ủng hộ Chung Nguyễn Blog
Chung Nguyễn Blog sử dụng FlashVPS - Dịch vụ quản trị máy chủ chuyên nghiệp để quản lý VPS
#FlashVPS là dịch vụ cloud panel trên nền tảng web hỗ trợ khách hàng:
- * Quản lý máy chủ số lượng nhiều
- * Không có kinh nghiệm quản lý máy chủ
- * Thích sử dụng giao diện web đơn giản, trực quan hơn terminal
- * Quá nhàm chán với việc ghi nhớ và lặp lại việc gõ các câu lệnh
- * Muốn tự động hóa mọi thao tác
- * Muốn tiết kiệm thời gian quản trị máy chủ
- * Muốn tiết kiệm tiền bạc, nhân lực quản trị máy chủ 👉 https://flashvps.dev
Các bài viết trên website thường xuyên được đăng tải và cập nhật trên trang Facebook Chung Nguyễn Blog hãy tặng cho Chung một LIKE nhé! Mãi yêu các bạn!
813 👍
Bình luận