تكرار السؤال: …
الإجابة المختصرة
لأن تشغيل أمر config:cache يجمع كل ملفات الإعدادات في ملف واحد ولا يقوم بتحميل ملف .env، مما يجعل دالة env() تعيد null دائماً في كود التطبيق.
الشرح
أمر php artisan config:cache هو تحسين إنتاجي إلزامي يدمج كل الإعدادات في ملف كاش واحد سريع. بمجرد تفعيل الكاش، يتوقف Laravel عن قراءة ملف .env وتصبح مصفوفة المتغيرات غير محملة، وتفشل كل استدعاءات env('KEY') المباشرة داخل الـ Controllers أو الخدمات. الطريقة الصحيحة دائماً هي قراءة المتغير في config/app.php ثم استدعاء config('app.key') في التطبيق.
مثال بالكود
// خطأ شائع في الإنتاج:
$secret = env("STRIPE_SECRET"); // سيعيد null عند تشغيل config:cache!
// الطريقة الصحيحة:
$secret = config("services.stripe.secret");أخطاء شائعة
- استخدام env() داخل الـ Controllers أو الـ Models مما يتسبب في تعطل التطبيق فور تشغيل أمر النشر في الإنتاج.
أسئلة متابعة
- ما هي أوامر تحسين الأداء الأساسية (route:cache, view:cache, config:cache) في بيئة الإنتاج؟
- كيف تغيرت بنية إقلاع التطبيق في Laravel 11 بإلغاء الـ Http Kernel ودمج التكوين في bootstrap/app.php؟