Laravel sudah menyediakan konfigurasi untuk kita yang menurut saya sangat mudah. Semua konfigurasi Laravel ada dalam direktori config. Di dalam direktori tersebut, kamu bisa mengatur koneksi ke database, mail server, timezone dan masih banyak lagi.
Selain itu, terdapat konfigurasi environment di Laravel. Pada dokumentasi Laravel, Laravel menggunakan library PHP DotEnv. Lalu apa bedanya dengan konfigurasi yang ada di dalam direktori config? Di dalam direktori config, konfigurasi terpisah-pisah menjadi beberapa buah file. Misalnya untuk konfigurasi database ada dalam file database.php, konfigurasi mailing ada dalam file mail.php, konfigurasi aplikasi ada dalam file app.php dan pengaturan-pengaturan lainnya.
Jadi, dengan adanya file .env, semua pengaturan yang ada dalam direktori config di atas dapat kita setting di satu file yang bernama .env tersebut. Jadi, kita tidak perlu berpindah-pindah file jika ingin mengubah konfigurasi aplikasi yang kita buat.
Semua konfigurasi yang ada dalam file .env lebih diutamakan daripada pengaturan yang ada dalam direktori config. Misalnya jika kita mengatur database dengan nama “penjualan” di dalam file config/database.php. Kemudian kita mengatur database dengan nama “perpustakaan” di file .env, maka database perpustakaan lah yang akan digunakan. Kecuali jika file .env kita hapus, maka pengaturan yang dijalankan adalah file-file pengaturan di dalam direktori config.
Konfigurasi Environment
Konfigurasi environment pada Laravel ada dalam sebuah file bernama .env. File tersebut berada di direktori paling luar dari project laravel yang telah kita buat dengan composer.
Coba perhatikan gambar di atas, terdapat dua buah file .env namun satunya dengan nama .env.example. File example tersebut sebenarnya adalah file backup saja jika suatu saat kita salah mengubah file .env. Dengan adanya file example, kita bisa mengembalikan settingan ke default dengan cara melihat isi dari file .env.example.
Berikut ini adalah isi default dari file .env.example.
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
Mengakses Konfigurasi Environment
Kamu dapat mengakses isi konfigurasi dari environment yang telah kita setting. Misalnya kita ingin menampilkan nama aplikasi dari project laravel yang telah kita buat, kita tinggal mengakses variable APP_NAME pada file .env atau mengakses variable yang ada dalam direktori config/app.php.
Berikut ini adalah contoh syntax untuk mengakses konfigurasi.
echo env('APP_NAME');
Atau.
echo config('app.name');
Syntax di atas akan menampilkan sebuah string sesuai isi dari file konfigurasi kita. Dalam contoh kasus di atas, kita menampilkan nama aplikasi dari konfigurasi file .env dan dari direktori config yang telah kita setting, default nama aplikasi adalah “Laravel”, kamu bisa menggantinya.
Caching Konfigurasi
Untuk mempercepat loading aplikasi yang kita buat, kita dapat men-cache semua konfigurasi yang telah kita setting menjadi dalam satu file dengan salah satu perintah php artisan. Ini akan menggabungkan semua opsi konfigurasi menjadi satu file dan dapat dimuat lebih cepat oleh framework. Untuk menjalankan perintah cache, kamu dapat menggunakan perintah di CMD pada direktori project laravel yang telah kita buat.
php artisan config:cache
Setelah perintah di atas dijalankan, file .env tidak akan lagi dimuat karena Laravel sudah memuat hasil cache konfigurasi. Namun sebaiknya konfigurasi ini dijalankan hanya ketika aplikasi yang telah kita buat sudah dalam status production, bukan masih tahap development yang mana kita masih sering mengubah-ubah file konfigurasi.
Sedangkan untuk membersihkan cache, kamu dapat menggunakan perintah.
php artisan config:clear
Debug Mode
Di dalam konfigurasi .env pada Laravel, terdapat variable APP_DEBUG yang bernilai default true. Dalam tahap development, tetap biarkan APP_DEBUG bernilai true agar pesan-pesan error yang terjadi dalam tahap development terlihat oleh kita. Namun jika aplikasi sudah dalam production, sebaiknya kita mengatur APP_DEBUG menjadi false agar informasi sensitif yang ada dalam konfigurasi kita tidak terlihat oleh pengunjung.
Maintenance Mode
Berbeda dengan framework PHP lain, Laravel memiliki kelebihan dengan fitur yang keren, salah satunya adalah mode maintenance.
Jika kita mengembangkan aplikasi menggunakan Laravel, kita bisa membuat status aplikasi menjadi maintenance atau dalam masa pengembangan. Dengan begitu pengunjung akan tahu bahwa aplikasi sedang dalam pengembangan atau perbaikan.
Untuk mengaktifkan fitur maintenance, kita bisa mengaktifkannya dengan salah satu perintah php artisan. Masuk ke direktori project Laravel melalui CMD/Terminal dan ketik:
php artisan down
Dengan menjalankan perintah di atas, maka akan muncul pemberitahuan bahwa aplikasi sekarang sedang dalam mode maintenance.
Kemudian jalankan project dengan mengetik perintah.
php artisan serve
Sekarang coba akses 127.0.0.1:8000, akan tampil halaman simple dengan pemberitahuan pesan HTTP 503 (Service Unavailable)
seperti di bawah ini.
Jika kamu kurang suka dengan tampilan default halaman di atas, kamu dapat mengeditnya di resources/views/errors/503.blade.php.
Untuk menonaktifkan mode maintenance, ketikkan perintah di bawah ini.
php artisan up
Dengan menjalankan perintah di atas, maka akan muncul pemberitahuan bahwa aplikasi sekarang sudah live kembali.
Kemudian jalankan project dengan mengetik perintah.
php artisan serve
Sekarang coba akses 127.0.0.1:8000, akan tampil halaman default project Laravel dalam keadaan live seperti semula.
Kesimpulan
Dari penjelasan di atas, kita dapat menarik kesimpulan bahwa:
- File .env adalah fitur untuk konfigurasi Laravel
- Semua pengaturan ada dalam file .env
- Pengaturan yang ada dalam file .env lebih diutamakan daripada file-file yang ada dalam direktori config
- Isi variable dari .env dapat diakses untuk ditampilkan
- Dengan php artisan, kita dapat melakukan banyak hal seperti mengaktifkan mode maintenance, mencache konfigurasi, dll.