Laravel değişiklikten sonra .env dosyasını okumuyor

Laravel Is Not Reading



Sorun

Bu, yeni Laravel geliştiricileri arasında ortaya çıkan oldukça yaygın bir sorunsa.

Pek çok kişi, uygulamalarını yenilediklerinde .env yapılandırma değerlerinin görünmediğini görmek için .env dosyalarını güncellemeye çalışıyor.







Ve daha da ilginç olan şey, bu, Laravel sürümünüzü yükselttikten sonra oldukça sık ortaya çıkacaktır.



Örneğin, bunu .env dosyanızda bulundurursunuz:



DB_DATABASE=laraveldb
DB_USERNAME=laravel kullanıcısı

O zaman doğal olarak, config/database.php dosyasının içinde şuna sahip olursunuz:





'mysql'=> [
' veri tabanı '=>ortam('DB_DATABASE','uyluk'),
'Kullanıcı adı'=>ortam('DB_USERNAME','uyluk'),
]

forge burada varsayılan değerler anlamına gelir. Bu, bilgilerinizi sağlamamış olmanız durumunda bu değerlerin kullanılacağı anlamına gelir. DB_DATABASE ve DB_USERNAME .env dosyanızın içindeki değerler. Bu bilgiler birazdan işinize yarayacaktır.

Şimdi, bu özel soruna sahip olduğunuzu nasıl anlarsınız, aşağıdaki istisna ile karşılaşırsanız:



PDOİstisna: SQLSTATE[HY000] [1045]Erişim reddedildi kullanıcı 'lar'@'localhost'
( kullanarak parola : NUMARA )

Bu açıkça, Laravel uygulamanızın varsayılan değeri sizden çektiğini gösterir. config/database.php dosyanızdan değil, .env dosyanızdan.

Başka bir şey yapmadan önce, bu sorunu php artisan tinker kullanarak da doğrulamayı deneyebilirsiniz:

>>>ortam('DB_DATABASE')
=> boş
>>>getenv('DB_DATABASE')
=> YANLIŞ
>>>yapılandırma(' veri tabanı .connections.mysql. veri tabanı ')
=>uyluk
>>>dd($ _ENV)
[]

Aşağıdakileri yapmanın da bir fark yaratmayacağını sık sık göreceksiniz. Ancak geliştiriciler, tamamen yeni bir Laravel kurulumu çalıştırarak ve sadece eski uygulama klasörünü kopyalayarak yapılandırmalarını test etmeye çalışırlar. Herhangi bir besteci paketi kurulumu çalıştırmazlar veya başka bir şey yapmazlar.

Linux'ta değilseniz (nedenini biraz sonra anlatacağım), herhangi bir değişiklik görmeyeceksiniz.

Çözüm

Her zaman olduğu gibi, bu sorunu çözmek için yapabileceğiniz birçok şey var, ancak bunlardan birkaçının başarılı olma olasılığı daha yüksek.

Yapılandırma önbelleğinizi temizleyin

Öncelikle, yapmadıysanız, başka bir şey yapmadan önce yapılandırma önbelleğinizi temizlemelisiniz.

Kodumuz günümüzde çok sayıda kitaplık kullandığından, çalışma zamanında bunlara hızlı erişim sağlamak için şeyleri önbelleğe almak zorunda kalıyoruz.

Kişisel olarak Windows ve Mac'te bununla ilgili sorunlar yaşadım, ancak bir nedenden dolayı, Linux'ta (Ubuntu) bu yapılandırma dosyalarının ya bir çeşit kanca ile temizlendiğini ya da hiç önbelleğe alınmadıklarını fark ettim, çünkü yapabildim. aşağıdakileri yapmadan uygulamayı yeni .env değerleriyle yeniden yükleyin.

Aşağıdaki komutları çalıştırarak yapılandırma önbelleğinizi temizlediğinizden emin olun:

php esnaf yapılandırması:önbellek
php esnaf yapılandırması:açık

.env dosyanızda boş alanlar olup olmadığını kontrol edin

Bir sonraki çözüm, .env dosyanızın içinde beyaz boşlukların bulunmasıdır. Ve bu, çoğu insanın başarısız olduğu ve saçlarını yolmaya başladığı zaman.

Bunu kaçırmak çok kolay ama örnek olarak .env dosyanızda olabilecek şey şuna benzer:

SİTE ADI=Laravel Uygulamam

Bu tek başına işe yaramaz çünkü boşluklar .env dosyasını bozar.

Yapmanız gereken, değerlerinizi aşağıdaki gibi tırnak içine almaktır:

SİTE ADI=Laravel Uygulamam

Bu sefer her şey yolunda gitmeli.

Her değişiklik yaptığınızda yapılandırma önbelleğinizi temizlediğinizden emin olun. Bunu daha önce olduğu gibi yapabiliriz:

php esnaf yapılandırması:önbellek
php esnaf yapılandırması:açık