Laravel tidak membaca fail .env selepas perubahan

Laravel Is Not Reading

Masalah

Ini jika masalah yang agak biasa muncul di kalangan pembangun Laravel baru.

Banyak orang telah berusaha untuk mengemas kini fail .env mereka hanya untuk melihat bahawa ketika mereka menyegarkan aplikasinya, nilai konfigurasi .env tidak muncul.



Dan yang lebih menarik ialah, ini akan kerap muncul setelah anda meningkatkan versi Laravel anda.



Sebagai contoh, anda akan mempunyai ini dalam fail .env anda:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Secara semula jadi, di dalam fail config / database.php anda akan mempunyai ini:

‘Mysql’=> [
' pangkalan data '=>env(‘DB_DATABASE’,'peha'),
'Nama pengguna'=>env(‘DB_USERNAME’,'peha'),
]

menempa di sini bermaksud nilai lalai. Ini bermaksud bahawa nilai-nilai ini akan digunakan sekiranya anda tidak memberikannya DB_DATABASE dan DB_USERNAME nilai di dalam fail .env anda. Maklumat ini sedikit sebanyak akan membantu.

Sekarang, bagaimana anda tahu bahawa anda mendapat masalah khusus ini adalah jika anda mengalami pengecualian berikut:



PDOException: SQLSTATE[HY000] [1045]Akses ditolak untuk pengguna ‘Lar’ @ ’localhost’
( menggunakan kata laluan : TIADA )

Ini jelas menunjukkan bahawa aplikasi Laravel anda memperoleh nilai lalai dari anda config / pangkalan data.php fail dan bukan dari .env anda.

Sebelum melakukan perkara lain, anda juga boleh cuba mengesahkan masalah ini dengan menggunakan php artisan tinker juga:

>>>env(‘DB_DATABASE’)
=> batal
>>>getenv(‘DB_DATABASE’)
=> salah
>>>konfigurasi(' pangkalan data .koneksi.mysql. pangkalan data ')
=>peha
>>>dd($ _ENV)
[]

Anda akan sering melihat bahawa melakukan perkara berikut tidak akan membawa perbezaan. Walau bagaimanapun, pembangun cuba menguji konfigurasi mereka dengan menjalankan pemasangan Laravel yang sama sekali baru dan hanya menyalin folder aplikasi lama. Mereka tidak menjalankan pemasangan pakej komposer atau melakukan perkara lain.

Kecuali anda menggunakan Linux (saya akan memberitahu anda mengapa sedikit kemudian), anda tidak akan melihat sebarang perubahan.

Penyelesaian

Seperti biasa, terdapat banyak perkara yang boleh anda lakukan untuk menyelesaikan masalah ini tetapi sebilangan kecilnya cenderung berjaya.

Kosongkan cache konfigurasi anda

Pertama, jika belum, anda mesti mengosongkan cache konfigurasi anda sebelum dapat melakukan perkara lain.

Oleh kerana kod kami menggunakan begitu banyak perpustakaan pada masa ini, kami terpaksa menyimpan sesuatu untuk membuat akses cepat ke dalamnya semasa waktu proses.

Saya secara peribadi mempunyai masalah dengan ini pada Windows dan Mac, namun, saya perhatikan bahawa atas sebab tertentu, di Linux (Ubuntu) fail konfigurasi ini dibersihkan dengan semacam cangkuk atau mereka tidak dicache sama sekali, kerana saya dapat muat semula aplikasi dengan nilai .env baru tanpa melakukan perkara berikut.

Pastikan anda membersihkan cache konfigurasi dengan menjalankan perintah berikut:

konfigurasi artisan php:cache
konfigurasi artisan php:jelas

Periksa ruang kosong dalam fail .env anda

Penyelesaian yang seterusnya adalah dari segi ruang kosong di dalam fail .env anda. Dan ini jika kebanyakan orang gagal dan mula merobek rambut mereka.

Sangat mudah untuk melewatkan ini tetapi sebagai contoh apa yang anda dapat dalam fail .env anda adalah seperti ini:

SITE_NAME=Permohonan Laravel saya

Ini sahaja tidak akan berfungsi kerana ruang putih akan merosakkan fail .env.

Apa yang perlu anda lakukan ialah memasukkan nilai anda dalam tanda kutip seperti ini:

SITE_NAME=Permohonan Laravel saya

Kali ini semuanya mesti berjalan lancar.

Pastikan anda mengosongkan cache konfigurasi anda setiap kali anda membuat perubahan. Kita boleh melakukan ini sama seperti sebelumnya:

konfigurasi artisan php:cache
konfigurasi artisan php:jelas