Laravel'de php artisan config:cache işleminden sonra env('') metodunu her yerden kullanamama problemi ve çözümü



2 dakikalık okuma
September 22, 2017

Laravel’in sunduğu güzel özelliklerden biri de root dizinde bulunan .env dosyasıdır. Çünkü bu dosya .gitignore içerisinde tanımlı olduğundan github, bitbucket gibi repository’lere push yapıldığında gönderilmez. Böylece api_token gibi veritabanı dosya şifreleri gibi önemli bilgiler bu dosya içerisinde saklanmalıdır.

//.env dosya içeriği (örnek)

anahtar_ismi=deger
APP_KEY=35R34543534534
googecloud_projectid=456546453

Bu dosyanın içerisindeki bir anahtar’ın değerini okumak için uygulama içerisinde her yerden:

env('anahtar_ismi');  // çıktı olarak değeri yazacak.

kullanarak çağırabiliriz; ama bir istisna var. Eğer

php artisan config:cache

ile config dosyalarını belleğe yükletirsek bu env foksiyonunu uygulamamızın her yerinden artık kullanamayız. Kullanırsak null değeri yollar. Sadece config klasörü içerisinde bulunan dosyalar içerisinde kullanabiliriz. Şöyle: settings.php adında bir dosya oluşturup ana dizin içerisinde bulunan config klasörü içerisine atın. Dosya içerisine de şunu yazalım:

//settings.php dosya içeriği:

return [
'app_key' = > env('APP_KEY'),
'googecloud_projectid' => env('googecloud_projectid')  // env içerisinde tanımladığınızı farz ediyorum. 
];

Bu şekilde config klasörü içerisinde oluşturulan dosyalar içinde env fonksiyonunu kullanabiliriz. (php artisan config:cache yapsak bile.) Bunu da tüm uygulama boyunca şu şekilde çağırırız (blade şablonlarda dahil):

config('settings.app_key');  // app_key'i yazacak.
config('settings.googecloud_projectid'); //googecloud_projectid değerini yazacak.

Böylece config:cache işleminden sonra oluşacak env fonksiyonunun null değer gönderme sorunsalını bu şekilde aşabiliriz.


Etiketler: