Laravel env multiple environments, đặt nhiều biến môi trường

by in Laravel


Khi phát triển dự án, bạn nhiều khi cần cài đặt nhiều biến để thích hợp với các cơ sở dữ liệu, các biến cài đặt khác nhau để phù hợp với phiên bản phát triển. Trong ví dụ đơn giản này, mình sẽ trình bày 2 file .local.env và .production.env để miêu tả việc bạn phát triển trên máy local và dự án khi deploy.

Để cấu hình giá trị biến môi trường, chúng ta dùng thư viện DotEnv, nó đã được cài khi bạn khởi tạo Laravel.

$ composer require vlucas/phpdotenv

 

 

Các bước thực hiện như sau:

1. Sửa file app.php

Đầu tiên chúng ta tìm tới file bootstrap/app.php

Thêm dòng lệnh require file enviroment.php trước dòng: return $app

require __DIR__.’/enviroment.php’;

return $app;

2. Tạo file enviroment.php

Trong folder bootstrap, nó cùng cấp với file app.php vừa chỉnh sửa

a. Nội dung file enviroment.php

<?php

use Dotenv\Dotenv;

// Tìm và đọc nội dung file .env

// Với biến APP_ENV lấy được, gán giá trị này ở file .env tương ứng

// Load file .env tương ứng đã lấy được

$env = $app->detectEnvironment(function(){

$environmentPath = __DIR__.’/../.env’;

$setEnv = trim(file_get_contents($environmentPath));

if (file_exists($environmentPath))

{

putenv(“$setEnv”);

if (getenv(‘APP_ENV’) && file_exists(__DIR__.’/../.’ .getenv(‘APP_ENV’) .’.env’)) {

$dotenv = new Dotenv(__DIR__.’/../’, ‘.’.getenv(‘APP_ENV’).’.env’);

$dotenv->load();

}

}

});

 

b. Với file .env.example mặc định, chúng ta copy nó để tạo ra 2 file .local.env và .production.env. Mỗi file được cấu hình tùy theo dự án của bạn.

c. Tiếp theo tạo file .env có nội dung chỉ một dòng

Nếu bạn connect thông tin của dự án đang phát triển ở local:

APP_ENV=local

Nếu bạn connect thông tin của dự án đã deloy:

APP_ENV=production

Bạn nhớ clear config cache và run lại để test kết quả nhé.

php artisan config:clear

php artisan config:cache

 

Trên đây là cách đơn giản để đặt nhiều biến môi trường trong Laravel, cảm ơn các bạn đã đọc bài viết này.

Tags: , , ,

Bình luận

Nội dung bình luận của bạn sẽ được kiểm duyệt trước khi hiển thị.
Email của bạn sẽ không hiển thị. Các trường bắt buộc được đánh dấu *
*
*
*