Setiap file konfigurasi laravel disimpan dalam folder config dimana setiap opsi configurasi telah disediakan panduannya untuk mempermudah dalam melakukan konfigurasi. Setiap file konfigurasi memungkinkan untuk mengkonfigurasi hal-hal seperti: konfigurasi database, konfigurasi email server, zona waktu, kunci enkrip dan lain sebagainya.
Secara cepat anda bisa mendapatkan overview singkat tentang konfigurasi, driver, dan lingkungan aplikasi Anda melalui perintah about Artisan:
php artisan about
Atau jika anda hanya tertarik pada bagian tertentu dari keluaran overview aplikasi, Anda dapat memfilter bagian tersebut menggunakan opsi –only :
php artisan about --only=environment
Untuk memudahkan dalam melakukan konfigurasi yang berbeda berdasarkan lingkungan/server, laravel menggunakan libray DotEnv PHP dimana pada saat baru pertamakali di install pada folder laravel akan terdapat file .env.example yang berisi variabel-variabel secara umum yang sering digunakan yang nantinya harus kita isi. File .env.example dapat secara otomatis tersalin menjadi .env. pada saat proses instalasi atau pengembang juga dapat menyalin file ini secara manual menjadi .env pada saat mengembangkan aplikasi di komputer local.
Konfigurasi file .env sebaiknya dibedakan pada saat proses pengembangan di komputer local dan pada saat di upload di web server untuk masalah faktor keamanan. Selain itu file .env.example sebaiknya terus disertakan pada saat mengembangkan aplikasi dalam tim dengan tujuan untuk memudahkan anggota tim lain melihat konfigurasi.
File .env tidak boleh dikomit ke kontrol sumber aplikasi (pada proses pengembangan aplikasi menggunakan git), karena setiap pengembang atau server kemungkinan besar memerlukan konfigurasi lingkungan yang berbeda. Selain itu, hal ini akan meningkatkan risiko keamanan apabila terdapat penyusup yang mendapatkan akses ke repositori kontrol sumber aplikasi, karena setiap informasi sensitif apa pun akan terekspos.
Seluruh variabel dalam file .env pada umumnya diuraikan dalam tipe string. Beberapa variabe mungkin akan diubah ke dalam tipe lain sesuai dengan fungsi dari konfigurasi .env() seperti true atau false akan di konversi menjadi tipe boolean. Jika nilai variabel environment mengandung spasi gunakan tanda petik dua (“) diawal dan diakhir variabel:
curl -s https://laravel.build/example-app | bash
Seluruh variabel dalam file konfigurasi pada folder config akan di muat dalam fungsi $_ENV PHP super-global pada saat aplikasi diakses dan untuk memudahkan dalam pengaturan kita dapat menggunakan bantuan dari env helper. Sebagai contoh dalam file app.php pada folder config terdapat pengaturan
'debug' => (bool) env('APP_DEBUG', false),
Menunjukkan bahwa variabel ‘debug‘ akan mengambil nilai dari variable APP_DEBUG pada file .env terlebih dahulu, namun jika variable APP_DEBUG tidak ditemukan pada file .env maka nilainya akan manjadi false.
File .env yang tidak terenkripsi tidak boleh disimpan di kontrol sumber. Namun, Laravel memungkinkan Anda untuk mengenkripsi file .env Anda sehingga dapat ditambahkan dengan aman ke kontrol sumber dengan sisa aplikasi Anda.
Perintah Enkripsi :
php artisan env:encrypt
Perintah env:encrypt akan mengenkripsi file .env Anda dan menempatkan konten terenkripsi dalam file .env.encrypted.
Kunci dekripsi disajikan dalam output perintah dan harus disimpan di pengelola kata sandi yang aman. Jika Anda ingin memberikan kunci enkripsi Anda sendiri, Anda dapat menggunakan opsi –key saat menjalankan perintah.
Perintah Enkripsi dengan key :
php artisan env:encrypt --key=3UVsEgGVK36XN82KKeyLFMhvosbZN1aF
Perintah Dekripsi :
php artisan env:decrypt
Atau, jika sebelumnya enkripsi menggunakan key maka ga dekripsi juga mengunakan key melalui opsi –key.
Perintah Dekripsi dengan key
php artisan env:encrypt --key=3UVsEgGVK36XN82KKeyLFMhvosbZN1aF
Ketika perintah env:decrypt dipanggil, Laravel akan mendekripsi konten file .env.encrypted dan menempatkan konten yang didekripsi di file .env.
Sebenarnya semua konfigurasi dari laravel berada dalam folder config. dan terpisah-pisah menjadi beberapa buah file. misalnya untuk konfigurasi database pada laravel ada di file database.php. untuk konfigurasi mailing ada di file mail.php. konfigurasi aplikasi ada dalam folder app.php. dan pengaturan-pengaturan lainnya.
Jadi dengan ada nya file .env ini, semua pengaturannya berada dalam 1 buah file ini saja. sehingga kita tidak perlu berpindah-pindah file jika ingin mengubah-ubah pengaturan project laravelnya. cukup pada 1 buah file saja, yaitu file .env. karena semua pengaturannya bisa kita ubah di 1 file ini.
Semua konfigurasi yang ada dalam file .env ini lebih diutamakan di bandingkan pengaturan pada file lainnya yang ada dalam folder config.
Misalnya jika kita membuat pengaturan nama database dengan nama “perpustakaan”. dan pada file database.php dalam folder config, kita buat nama database dengan nama “akademik”. maka nama database yang digunakan tetap “perpustakaan”. karena konfigurasi yang ada dalam file .env lebih diutamakan dibandingkan pengaturan yang ada pada file lain.
Kecuali jika kita menghapus file .env ini, maka pengaturan yang dijalankan adalah pengaturan-pengaturan yang ada pada file-file dalam folder config.
Anda dapat dengan mudah mengakses nilai konfigurasi menggunakan fungsi konfigurasi global dari mana saja di aplikasi Anda. Nilai konfigurasi dapat diakses menggunakan sintaks “dot”, yang menyertakan nama file dan opsi yang ingin Anda akses. Nilai default juga dapat ditentukan dan akan dikembalikan jika opsi konfigurasi tidak ada:
$value = config('app.timezone');
// Retrieve a default value if the configuration value does not exist...
$value = config('app.timezone', 'Asia/Seoul');
Sementara untuk mengatur nilai konfigurasi saat runtime, lakukan dengan memberikan array ke fungsi config :
config(['app.timezone' => 'America/Chicago']);
Untuk mempercepat prosess/loading pada saat mengakses aplikasi atau website kita dapat menggunakan opsi config:chache pada peritah php artisan. Fungsi ini akan menggabungkan seluruh file konfigurasi menjadi satu file sehingga menjadi lebih cepat untuk diakses.
php artisan config:chache
Gunakan diatas pada saat aplikasi telah selesai dikembangkan dan diunggah diserver. Jangan gunakan perintah tersebut pada saat masih dalam tahap mengembangkan aplikasi karena kemungkinan besar konfigurasi akan terus berubah.
Untuk mengembalikan atau membatalkan peritah config:cache kita dapat menggunakan opsi clear:cache pada peritah php artisan.
php artisan clear:chache
Konfigurasi debug pada file config/app.php digunakan untuk menampilkan seberapa banyak informasi kesalahan akan ditampilkan kepada pengguna. Atur nilai variabel APP_DEBUG menjadi false atau true pada file .env. Pada saat pengembangan kita dapat menggunakan opsi true agar memudahkan dalam menelusuri kesalahan kode/error code pada saat pengembangan.
APP_DEBUG=true
Pada saat produksi ganti nilai variabel APP_DEBUG menjadi false terutama pada saat aplikasi sudah diupload di web server. Pastikan variabel APP_DEBUG tidak bernilai true pada saat produksi untuk mengurangi resiko terbukanya informasi sensitif kepada pengunjung aplikasi.
Pada saat pemeliharaan aplikasi, anda dapat menonaktifkan aplikasi dengan mengarahkan semua permintaan ke halaman tertentu untuk memudahkan dalam melakukan update atau perbaikan. Pada saat aplikasi dalam model perbaikan maka Symfony\Component\HttpKernel\Exception\HttpExceptionakan ditampilkan dengan kode status 503.
php artisan down
Jika anda ingin mengirimkan perintah Refresh HTTP header pada semua halaman dalam mode pemeliharaan. Refresh akan berjalan pada page pemeliharaan di setiap detik tertentu .
Untuk menjalankannya anda dapat menambahkan opsi –refresh pada saat menjalankan perintah artisan down.
php artisan down --refresh=15
Anda juga dapat memberikan opsi rentry pada perntah down yang akan mengirimkan perintah rentry-after HTTP Header.
php artisan down --retry=60
Untuk melakukan bypass pada saat pemeliharaan kita dapat menggunakan opsi secret dengan menyertakan token/kode rahasia pada perintah down.
php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"
Setelah mejalankan peritah diatas, selanjutnya kita dapat mengakses aplikasi pada web browser dengan menggunakan token yang kita daftarkan sebelumnya agar laravel dapat membuat sebuah cookie bypass mode pemeliharaan.
http://localhost/1630542a-246b-4b66-afa1-dd72a4c43515
Pada saat dalam mode pemeliharaan, semua url akan menampilkan halaman mode pemeliharaan. Namun kita ingin mengarahkan ke halaman tertentu kita dapat menambahkan opsi redirect. sebagai contoh misalnya kita ingin mengarahkan ke halaman /maintenance maka kita dapat menggunakan perintah :
php artisan down --redirect=/maintenance
Untuk menonaktifkan mode pemeliharaan kita dapat menggunakan opsi up pada peritah down artisan.
php artisan up
Pada saat dalam mode pemeliharaan, maka proses queuses akan berhenti dan akan bekerja kembali setelah mode pemeliharaan selesai.