Sorun
Bu, yeni Laravel geliştiricileri arasında ortaya çıkan oldukça yaygın bir sorunsa.
Birçok kişi bilgilerini güncellemeye çalışıyor .env dosyasını yalnızca uygulamalarını yenilediklerini görmek için .env yapılandırma değerleri görünmüyor.
Ve daha da ilginç olanı, bu, Laravel sürümünüzü yükselttikten sonra oldukça sık ortaya çıkacaktır.
Yani örneğin, bu .env dosyası:
DB_DATABASE=laraveldbDB_USERNAME=laraveluser
Sonra doğal olarak, yapılandırma/veritabanı içinde.php dosyasında buna sahip olacaksınız:
'mysql' => ['veritabanı' => env('DB_DATABASE', 'lar'),
'kullanıcı adı' => env('DB_USERNAME', 'lar'),
]
burada forge 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 içindeki değerler .env dosyası. 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:
PDOException: SQLSTATE[HY000] [1045] 'lar'@'localhost' kullanıcısı için erişim reddedildi(şifre kullanarak: HAYIR)
Bu açıkça, Laravel uygulamanızın varsayılan değeri sizden çektiğini gösterir yapılandırma/veritabanı.php dosya ve senden değil .ortam .
Başka bir şey yapmadan önce, bu sorunu php artisan tinker kullanarak da doğrulamayı deneyebilirsiniz:
>>> env('DB_DATABASE')=> boş
>>> getenv('DB_DATABASE')
=> yanlış
>>> config('veritabanı.bağlantılar.mysql.veri tabanı')
=> “lar”
>>> 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. uygulamayı yenisiyle yeniden yükleyin .aşağıdakileri yapmadan env değerleri.
Aşağıdaki komutları çalıştırarak yapılandırma önbelleğinizi temizlediğinizden emin olun:
php esnaf yapılandırması:önbellekphp esnaf yapılandırması:temizle
İçinizde boş alanlar olup olmadığını kontrol edin .env dosyası
Bir sonraki çözüm, içinizde beyaz boşlukların olması açısındandır .env dosyası. 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 elinizde ne olabilir? .env dosyası şuna benzer:
SITE_NAME=Laravel UygulamamBu tek başına işe yaramaz çünkü beyaz boşluklar .env dosyası.
Yapmanız gereken, değerlerinizi aşağıdaki gibi tırnak içine almaktır:
SITE_NAME=”Benim 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ı:önbellekphp esnaf yapılandırması:temizle