Laravel tidak membaca file .env setelah perubahan

Laravel Is Not Reading



Masalah

Yang ini jika masalah yang cukup umum yang muncul di antara pengembang Laravel baru.

Banyak orang telah mencoba memperbarui file .env mereka hanya untuk melihat bahwa ketika mereka me-refresh aplikasi mereka, nilai konfigurasi .env tidak muncul.







Dan yang lebih menarik adalah bahwa cukup sering, ini akan muncul setelah Anda mengupgrade versi Laravel Anda.



Jadi misalnya, Anda akan memiliki ini di file .env Anda:



DB_DATABASE=laraveldb
DB_USERNAME=pengguna laravel

Kemudian secara alami, di dalam file config/database.php Anda akan memiliki ini:





'mysql'=> [
' basis data '=>env('DB_DATABASE','paha'),
'nama pengguna'=>env(‘DB_USERNAME’,'paha'),
]

menempa di sini adalah singkatan dari nilai default. Ini berarti bahwa nilai-nilai ini akan digunakan jika Anda belum memberikan DB_DATABASE dan DB_USERNAME nilai di dalam file .env Anda. Informasi ini akan membantu sebentar lagi.

Sekarang, bagaimana Anda tahu bahwa Anda memiliki masalah khusus ini adalah jika Anda mengalami pengecualian berikut:



PDOException: SQLSTATE[HY000] [1045]Akses ditolak untuk pengguna 'lar'@'localhost'
( menggunakan kata sandi : TIDAK )

Ini dengan jelas menunjukkan bahwa aplikasi Laravel Anda menarik nilai default dari . Anda config/database.php file dan bukan dari .env Anda.

Sebelum melakukan hal lain, Anda juga dapat mencoba memverifikasi masalah ini menggunakan php artisan tinker:

>>>env('DB_DATABASE')
=> batal
>>>getenv('DB_DATABASE')
=> Salah
>>>konfigurasi(' basis data .koneksi.mysql. basis data ')
=>paha
>>>DD($ _ENV)
[]

Anda akan sering melihat bahwa melakukan hal berikut juga tidak akan membuat perbedaan. Namun, pengembang mencoba menguji konfigurasi mereka dengan menjalankan instalasi Laravel yang benar-benar baru dan hanya menyalin folder aplikasi lama. Mereka tidak menjalankan instalasi paket komposer atau melakukan hal lain.

Kecuali Anda menggunakan Linux (saya akan memberi tahu Anda alasannya nanti), Anda tidak akan melihat perubahan apa pun.

Larutan

Seperti biasa, ada banyak hal yang dapat Anda lakukan untuk mencoba memecahkan masalah ini, tetapi beberapa di antaranya lebih mungkin berhasil.

Hapus cache konfigurasi Anda

Pertama, jika belum, Anda harus menghapus cache konfigurasi Anda sebelum dapat melakukan hal lain.

Karena kode kami menggunakan begitu banyak perpustakaan saat ini, kami terpaksa men-cache sesuatu untuk membuat akses cepat ke sana selama runtime.

Saya pribadi memiliki masalah dengan ini di Windows dan Mac, namun, saya perhatikan bahwa untuk beberapa alasan, di Linux (Ubuntu) file konfigurasi ini dihapus dengan semacam pengait atau tidak di-cache sama sekali, karena saya bisa muat ulang aplikasi dengan nilai .env baru tanpa melakukan hal berikut.

Pastikan Anda menghapus cache konfigurasi dengan menjalankan perintah berikut:

konfigurasi tukang php:cache
konfigurasi tukang php:jernih

Periksa ruang kosong di dalam file .env Anda

Solusi selanjutnya adalah memiliki spasi putih di dalam file .env Anda. Dan yang ini jika kebanyakan orang gagal dan mulai merobek rambut mereka.

Sangat mudah untuk melewatkan ini tetapi sebagai contoh apa yang dapat Anda miliki di file .env Anda adalah seperti ini:

NAMA SITUS=Aplikasi Laravel Saya

Ini saja tidak akan berfungsi karena spasi putih akan merusak file .env.

Yang perlu Anda lakukan adalah membungkus nilai Anda di dalam tanda kutip seperti ini:

NAMA SITUS=Aplikasi Laravel Saya

Kali ini semuanya harus bekerja dengan baik.

Pastikan untuk menghapus cache konfigurasi Anda setiap kali Anda membuat perubahan. Kita bisa melakukan ini sama seperti sebelumnya:

konfigurasi tukang php:cache
konfigurasi tukang php:jernih