Skip to content

Blog Công Nghệ

MENUMENU
  • Trang chủ
  • Giới Thiệu
  • Lập Trình
    • Lập Trình Website
      • Laravel
        • Phân Tích Dự Án
      • PHP
      • SQL
      • HTML
      • CSS
      • Javascipt
      • My Project
      • Wordpress
    • Luyện Skill
    • Lập trình winform
    • CSDL
    • Lập Trình Android
    • Trí tuệ nhân tạo
    • Khai Khoáng Dữ Liệu
    • Arduino
    • Khác
    • Đồ án
  • Phần Mềm
    • Powerpoint
    • Tool
  • Cuộc sống và Giải trí
    • Hợp âm
    • web5ngay - youtube
    • Công Giáo
    • Kỹ Năng Sống
    • Street Workout
  • Danh sách bài viết
  • Guide line
    • Guild line phỏng vấn
    • Guide lines Laravel
    • Guide line Module Frontend
  • Tóm tắt sách
  • Fanpage

Blog Công Nghệ

Nơi chia sẻ kiến thức

Tổng hợp các exceptions thường gặp trong Laravel

26 Tháng Mười Một, 2020 by admin
Lượt xem: 29

Contents

  • 1. Giới thiệu
  • 2. Các lỗi thường gặp
    • 2.1. RuntimeException in EncryptionServiceProvider.php
    • 2.2. Whoops, looks like something went wrong… require(../vendor/autoload.php)
    • 2.3. [PDO Exception] SQLSTATE[HY000] [1045] Access denied for user ****@’localhost’ (using password: YES)
    • 2.4. [ReflectionException] Class CategoryTableSeeder does not exist
    • 2.5. TokenMismatchException in VerifyCsrfToken.php
    • 2.6. NotFoundHttpException in RouteCollection.php
    • 2.7. [Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
    • 2.8. MassAssignmentException
    • 2.9. MethodNotAllowedHttpException
    • 2.10. ModelNotFoundException
  • 3. Những điều nên làm với một project mới
  • Kết Luận

1. Giới thiệu

Bài viết này mình xin tổng hợp một số exception thường gặp khi phát triển các ứng dụng liên quan đến framework Laravel và các cách khắc phục chúng.

2. Các lỗi thường gặp

2.1. RuntimeException in EncryptionServiceProvider.php

Exception

Solution

Chạy command

php artisan key:generate

2.2. Whoops, looks like something went wrong… require(../vendor/autoload.php)

Exception

Solution

Chạy command

composer install

hoặc

composer update

Note: Khi dùng composer update xin lưu ý version của các package trong composer.json ạ.
Nếu sử dụng composer install bị lỗi thì hãy kiểm tra file composer.json yêu cầu phiên bản PHP mấy thì setup host theo là được.

2.3. [PDO Exception] SQLSTATE[HY000] [1045] Access denied for user ****@’localhost’ (using password: YES)

Exception

Solution

  1. Kiểm tra cấu hình database trong .env:
DB_HOST=database_host
DB_DATABASE=database_name
DB_USERNAME=database_username
DB_PASSWORD=database_password
DB_LOGQUERY=true
  1. Sau khi thay đổi lại cấu hình, các bạn hãy restart lại server và trình duyệt nhé.
  2. Nếu lỗi vẫn xảy ra, hãy chạy command:
php artisan config:clear

2.4. [ReflectionException] Class CategoryTableSeeder does not exist

Exception

Solution

Nếu class CategoryTableSeeder đúng đường dẫn, đúng tên, đúng đuôi file mà vẫn báo lỗi thì hãy chạy comand:

composer dump-autoload

2.5. TokenMismatchException in VerifyCsrfToken.php

Exception

Solution

  1. Thêm token vào form khi submit:
{{ csrf_field() }}

hoặc

<input type="hidden" name="_token" value="{!! csrf_token() !!}">

Note: Form::open() và Form::model() tự động generate ra token khi bạn sử dụng package illuminate/html hoặc laravelcollective/html.

  1. Nếu bạn submit form bằng ajax, hãy thêm đoạn code này vào đầu file JS của bạn:
$.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
});

2.6. NotFoundHttpException in RouteCollection.php

Exception

Solution

sudo chmod -R 777 storage
sudo chmod -R 777 bootstrap/cache

2.7. [Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Exception

Solution

Mở file AppServiceProvider.php và override lại function boot():

use Illuminate\Support\Facades\Schema;

.....

public function boot()
{
    Schema::defaultStringLength(191);
}

2.8. MassAssignmentException

Exception

Solution

Mass Assignment chỉ định những cột nào cho phép được sử dụng bằng cách khai báo chúng vào trong biến $fillable hoặc $guarded để đảm bảo an toàn cho DB vì chúng ta sẽ không thể biết được user sẽ đưa vào những giá trị như nào và chúng có hại hay là không.

Để sửa lỗi này, chúng ta sẽ bổ sung thêm $fillable hoặc $guarded trong Model. Ví dụ:

class Ticket extends Model
{
     protected $fillable = ['title', 'content', 'slug', 'status', 'my_attribute'];
}

2.9. MethodNotAllowedHttpException

Exception

Solution

Laravel sẽ không cho phép chúng ta thực hiện việc UPDATE hoặc DELETE mà không có token. Ví dụ:

<a href="{!! action('TicketsController@destroy', $ticket->slug) !!}" class="btn btn-info" onclick="return confirm('Are you sure?')" >
     Delete
</a>

=> Cần phải sửa thành:

<form method="post" action="{!! action('TicketsController@destroy', $ticket->slug) !!}" class="pull-left">
    {{ csrf_field() }}
    {{ method_field('DELETE') }}
    <div>
        <button type="submit" class="btn btn-warning">Delete</button>
    </div>
</form>

Đối với việc update thì chúng ta sẽ đổi thành:

{{ method_field('PUT') }}

2.10. ModelNotFoundException

Exception

Solution

Lỗi này thường xảy ra khi chúng ta thực hiện findOrFail($id) hoặc firstOrFail ($id) nhưng $id bạn đang cố lấy không tồn tại trong cơ sở dữ liệu.

=> Kiểm tra lại DB và check $id nhé 

Nguồn: https://viblo.asia/p/tong-hop-cac-exceptions-thuong-gap-trong-laravel

3. Những điều nên làm với một project mới

  1. Kiểm tra có file .env chưa. Nếu chưa thì tạo copy nội dung bên file .env.example
  2. Cấu hình lại database trong .env (nếu không được thì vào config/database.php để chỉnh)
  3. Kiểm tra xem có thư mục vendor chưa? Nếu chưa chạy lệnh composer install
  4. Chạy lệnh php artisan key:generate để set lại key
  5. Nếu muốn bật debug thì vào config/app.php => ‘debug’ => env(‘APP_DEBUG’, true),

Nếu còn lỗi hoặc gặp lỗi file_put_content thì chạy 2 lệnh dưới

php artisan cache:clear
php artisan config:cache

Kết Luận

Related posts:

  1. Lệnh cơ bản thường sử dụng trong PHP
  2. Tạo URL trong Laravel 6 hết sức là chi tiết
  3. Queue trong Laravel
  4. Middleware trong Laravel – lợi hại như thế nào

Post navigation

Previous Post:

Hướng dẫn sử dụng plugin qTranslate-X wordpress

Next Post:

Thêm trình chiếu powerpoint vào website wordpress

One comment

  1. Pingback: Kinh nghiệm laravel | Blog Công Nghệ

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Ẩn sidebar

Tìm kiếm

Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages

Blog Công Nghệ

Bài viết mới

  • Master typescript
  • Sendmail trong Laravel sử dụng dịch vụ SES, SQS của Amazon
  • Install SSL in Nginx Ubuntu
  • Docker study
  • Bảo vệ: Hướng dẫn code bot Telegram easy game

Lượng truy cập

0074462
Visit Today : 58
Visit Yesterday : 178
This Month : 733
Who's Online : 6
© 2025 Blog Công Nghệ | WordPress Theme by Superbthemes