Secara default laravel mengasumsikan bahwa Anda ingin memiliki konfigurasi yang berbeda untuk lingkungan yang berbeda. Misalnya. dalam lingkungan pengujian, Anda mungkin ingin memiliki nama pengguna dan kata sandi yang berbeda dan dalam lingkungan produksi yang berbeda. Karena laravel memiliki begitu banyak file konfigurasi, dengan cepat menjadi mimpi buruk untuk mengelola semua itu. Karenanya laravel menggunakan variabel lingkungan PHP.
Apa yang pada dasarnya dikatakan adalah bahwa jika Anda ingin menggunakan variabel "lingkungan", yang digunakan laravel secara default, Anda harus menempatkan semua konfigurasi Anda di env()
metode seperti yang telah disebutkan.
Jika Anda tidak ingin melakukan ini, mis. untuk proyek sederhana, cukup hapus env dari kode Anda, seperti ini.
'mysql' => [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'laravel',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
Perhatikan bahwa Anda dapat mencampur dan mencocokkan. yaitu Anda dapat memiliki beberapa variabel dalam env dan beberapa yang berdiri sendiri.
Jadi mengapa menggunakan env
sama sekali?
Katakanlah aplikasi Anda memiliki 100 penguji yang semuanya ditempatkan di lokasi yang berbeda. Di laravel Anda harus membuat kode sekitar 8-10 file konfigurasi. Anda juga perlu version-control
file-file itu. Jadi, Anda memiliki dua masalah:
- Anda tidak ingin mengirimkan kredensial yang sama kepada 100 pengguna. Juga mereka mungkin menggunakan database yang berbeda, server cache, dll yang berarti bahwa mereka akan memiliki konfigurasi yang berbeda. Jadi setiap pengguna harus memelihara 8-10 file konfigurasi tersebut secara manual.
- Anda tidak ingin mengirim file konfigurasi ini ke kontrol versi. Karena jika Anda melakukannya, seluruh dunia akan mengetahui rahasia API Anda dan mungkin akan memanfaatkannya (seperti kata sandi). Juga jika Anda melihat file conf laravel, Anda akan melihat bahwa ada informasi lain seperti zona waktu, properti debug, dll yang juga ada di file conf, dan Anda ingin mengontrol versi mereka. Jadi, bagaimana Anda mengontrol versi file konfigurasi tersebut dan tetap menyembunyikan informasi sensitif Anda.
Jawabannya adalah env
variabel. Laravel menggunakan dotenv
yang dokumentasinya dapat ditemukan di sini
. Pada dasarnya ini adalah variabel yang hidup dalam satu file bernama .env
dalam pasangan nilai kunci. Mis.
Contoh isi file .env
APP_DEBUG=false
APP_KEY=ABCDEFGH
...
Setelah Anda menentukan file .env Anda seperti ini, Anda bisa mendapatkan nilai menggunakan kunci seperti env('APP_DEBUG')
.
Jadi ini memecahkan masalah yang disebutkan di atas dengan cara berikut:
- Anda menyimpan
.env
berkas ke diri sendiri. Dan Anda juga mendeklarasikan file lain bernama.env.example
yang merupakan replika persis dari file asli kecuali fakta bahwa file tersebut berisi nilai sampel, bukan nilai sensitif Anda. Kemudian Anda meneruskan file contoh baru ini ke semua orang. Mereka akan mengganti data sampel dengan informasi sensitif mereka sendiri. - Karena Anda mengontrol versi file contoh, Anda dapat mengontrol versi semua file conf Anda karena tidak mengandung rahasia. Rahasianya ada di file .env. Semua file conf berisi nilai-nilai seperti ini
env('APP_KEY')
dan nilai sebenarnya diganti pada saat dijalankan menggunakan file .env Anda.