Bu rehber, GitHub depolarında .env dosyasını barındırmak istemeyen, veritabanı şifreleri ve API anahtarları gibi kritik bilgileri production ortamında güvenli bir şekilde yönetmek isteyen Laravel geliştiricileri içindir.
Laravel projelerinizde yer alan .env dosyalarındaki hassas bilgileri (veritabanı şifreleri, ödeme sistemi API anahtarları vb.) GitHub'a yüklemek büyük bir güvenlik riskidir. Skyversal ile bu değişkenleri kodunuzdan izole edebilir ve şifrelenmiş olarak Skyversal paneli üzerinden güvenle yönetebilirsiniz.
1. Ortam Değişkenleri Nasıl Çalışır?
Skyversal, "Zero-Config" felsefesiyle ortam değişkenlerini projenize otomatik olarak bağlar.
Kodda değişiklik gerekir mi?
Hayır. Laravel yapılandırma dosyaları (config/*.php) üzerinden ortam değişkenlerini okur. Skyversal, deploy sırasında bu değişkenleri uygulamaya otomatik olarak aktarır, böylece proje kökünde fiziksel bir .env dosyası bulunmasa bile uygulamanız sorunsuz çalışır.
2. Kurulum Süreci (Adım Adım)
.env dosyanızın içeriğini doğrudan yapıştırabilirsiniz.3. Mutlaka Eklenmesi Gereken Değişkenler
Her Laravel projesi canlıya alındığında en azından aşağıdaki temel ortam değişkenlerine ihtiyaç duyar:
| Key | Açıklama | Örnek Value |
|---|---|---|
| APP_KEY | Laravel şifreleme anahtarı. Zorunludur. Localde php artisan key:generate ile üretebilirsiniz. |
base64:... |
| APP_ENV | Canlı ortamı belirtir. Hata detaylarını gizlemek için production olmalıdır. | production |
| APP_DEBUG | Hata detaylarının görünürlüğü. Canlı ortamda güvenlik için mutlaka false olmalıdır. | false |
| APP_URL | Uygulamanızın canlı URL'si. Asset ve link oluşturmaları için önemlidir. Yanlış ayarlanırsa URL oluşturma, e-posta linkleri ve asset URL'leri beklenmeyen şekilde davranabilir. | https://domain.com |
| DB_* | Veritabanı bağlantı bilgileriniz (DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD). | ... |
Laravel'de php artisan config:cache komutu çalıştırıldığında, uygulamanız hızlanır ancak sistem .env dosyasını (ve ortam değişkenlerini) artık okumaz, sadece birleştirilmiş config dosyasını kullanır. Bu sebeple kodunuzun içinde (örneğin Controller veya route'larda) kesinlikle env() fonksiyonunu doğrudan kullanmamalısınız. Bunun yerine config() yardımcı fonksiyonunu kullanın. Eğer kullanırsanız, config:cache sonrası tüm env() çağrıları null dönecektir.
🏗️ Build Time vs Runtime Değişkenleri
Ortam değişkenlerinin "ne zaman" okunacağı, özellikle Vite ile frontend asset'leri derlerken en sık karıştırılan konulardan biridir.
Build Time (Derleme Zamanı)
Uygulama sunucuya yüklenirken çalıştırılan npm run build aşamasıdır. Vite veya Next.js gibi araçlar değişkenleri statik olarak kodun içine gömer.
VITE_ önekiyle başlayan değişkenler.Runtime (Çalışma Zamanı)
Uygulamanız yayına girdikten sonra kullanıcı siteye girdiğinde çalışan kısımdır. Sadece sunucu tarafında okunur.
APP_KEY, DB_PASSWORD vb.❓ Sık Karşılaşılan Sorunlar
Asset'ler yüklenmiyor veya linkler "localhost"a gidiyor
Belirti: Sayfadaki resimler kırık veya oluşturulan e-posta linkleri https://localhost gösteriyor.
Sebep: APP_URL ortam değişkeni yanlış ayarlanmış veya unutulmuş.
Çözüm: Panele giderek APP_URL değerini production domaininizle (ör. https://domain.com) güncelleyin ve yeniden deploy alın.
"No application encryption key has been specified"
APP_KEY değişkeni Skyversal panelinde tanımlanmamış. Yerel makinenizdeki .env dosyanızdan anahtarı kopyalayıp Skyversal paneline ekleyin ve projeyi yeniden deploy edin.
Değişkeni panele girdim ama sitemde güncellenmedi
Ortam değişkenleri sadece projeyi derlerken (build) veya başlatırken okunur. Panele değişkeni ekledikten sonra değişikliğin yansıması için projenizi paneldeki Deploy butonuyla manuel olarak yeniden başlatmanız gerekir. Ayrıca eğer localde php artisan config:cache çalıştırıp dosyaları (bootstrap/cache) git'e attıysanız, projeniz yeni değişkenleri okumaz. Bunu düzeltmek için php artisan optimize:clear kullanın.
🎉 Değişkenleriniz Artık Güvende
Hassas verileriniz GitHub deposundan tamamen izole edildi ve Skyversal altyapısında şifrelenerek güvence altına alındı.
Ortam değişkenlerini hallettiğimize göre artık projenizi ileri seviyeye taşıyacak Queue Worker, Storage Link ve Scheduler ayarlarına geçebiliriz.
➜ Laravel Gelişmiş Özellikler Rehberi