في هذا الدرس 6تصفّح المواضيع
يعمل التطبيق الحديث عبر بيئات متعددة تشمل جهاز المطور المحلي وخادم الاختبار وخادم الإنتاج الفعلي، وتحتاج كل بيئة إلى بيانات اتصال ومفاتيح سرية مختلفة. يحفظ Laravel هذه القيم الخاصة بكل خادم داخل ملف .env الجذري المستبعد من Git لضمان عدم تسرب كلمات المرور إلى المستودع البرمجي.
- ملف البيئة الفعلي (.env File): يخزن القيم السرية المحلية مثل كلمات مرور قواعد البيانات ومفاتيح الربط.
- قالب البيئة الاسترشادي (.env.example Template): يُرفع إلى Git بقيم افتراضية فارغة لتوضيح المتغيرات المطلوبة للفريق.
- الحماية من التسريب (Zero Git Exposure): يمنع ملف .gitignore رفع ملف .env أو نسخه الاحتياطية نهائياً.
# Standard environment variables inside .env
APP_NAME="CloseTag Academy"
APP_ENV=local
APP_KEY=base64:Generates32ByteRandomKeyHere=
APP_DEBUG=true
APP_URL=http://localhost
تقرأ ملفات الإعدادات داخل مجلد config/ متغيرات البيئة الخام وتحولها إلى مصفوفات PHP منظمة يسهل الوصول إليها في أنحاء النظام. وفي كود التطبيق، يجب دائماً قراءة هذه القيم عبر الدالة المساعدة config بالصيغة النقطية مثل config('app.timezone') مع إمكانية تمرير قيمة افتراضية آمنة.
- الصيغة النقطية (Dot Notation Syntax): تبدأ باسم الملف متبوعاً بمفتاح المصفوفة مثل app.name.
- القيمة الافتراضية البديلة (Fallback Default): تمرير معامل ثانٍ يضمن إرجاع قيمة آمنة عند غياب المفتاح.
- التعديل المؤقت بالذاكرة (Runtime Override): تمرير مصفوفة للدالة يغير قيمة الإعداد خلال دورة الطلب الحالية فقط.
<?php
// Reading configuration values with dot notation
$siteName = config('app.name', 'CloseTag');
$timezone = config('app.timezone', 'UTC');
// Overriding a value for the current request
config(['app.locale' => 'ar']);
echo $siteName . ' - ' . config('app.locale');
يتحكم متغيران أساسيان في الأمان المباشر لكل تطبيق Laravel وهما مفتاح التشفير APP_KEY ووضع التصحيح APP_DEBUG. يُولَّد مفتاح التشفير عشوائياً بطول 32 بايت عبر الأمر key:generate لتشفير الجلسات والكوكيز، بينما يجب ضبط APP_DEBUG على القيمة false في بيئة الإنتاج لمنع ظهور تفاصيل الكود والمسارات للزوار.
- توليد مفتاح التشفير (key:generate Command): ينشئ مفتاحاً عشوائياً بمعيار AES-256 ويكتبه داخل ملف .env.
- تفعيل التصحيح محلياً (Local Debug True): يعرض تفاصيل الأخطاء البرمجية لتسهيل إصلاحها أثناء التطوير.
- إغلاق التصحيح بالإنتاج (Production Debug False): يخفي المسارات الداخلية ومتغيرات النظام خلف رسالة خطأ عامة وآمنة.
# Generate a secure 32-byte application encryption key
php artisan key:generate
# Production .env security baseline:
# APP_ENV=production
# APP_DEBUG=false
يمكن لكود التطبيق التحقق من بيئة التشغيل الحالية بدقة عبر استدعاء الدالة App::environment التي تقرأ قيمة APP_ENV. ومن سطر الأوامر، يعرض الأمر php artisan about لوحة فحص شاملة توضح حالة البيئة وحالة التخزين المؤقت والمحركات المفعلة في المشروع.
- فحص بيئة محددة (Current Environment): تمرير اسم البيئة مثل local للتحقق قبل تنفيذ كود خاص بالتطوير.
- فحص عدة بيئات (Multiple Environments): تمرير مصفوفة أسماء للتحقق من كون التطبيق في بيئة محلية أو تجريبية.
- لوحة فحص النظام (Artisan About CLI): تنفيذ php artisan about لمراجعة حالة التصحيح والتخزين المؤقت والمحركات.
<?php
use Illuminate\Support\Facades\App;
$currentEnv = App::environment();
$isDev = App::environment(['local', 'staging']);
echo $currentEnv . ' | Dev: ' . ($isDev ? '1' : '0');
لتفادي قراءة عشرات ملفات الإعدادات وملف البيئة مع كل طلب HTTP في الإنتاج، يوفر Laravel أمر التسريع php artisan config:cache. وبمجرد دمج الإعدادات في ملف مخزن مؤقتاً، يتوقف النظام عن تحميل ملف .env وتعيد أي استدعاءات مباشرة لدالة env خارج مجلد config/ القيمة null.
- أمر دمج الإعدادات (config:cache Command): يجمع كافة مصفوفات الإعدادات في ملف واحد سريع التحميل بالإنتاج.
- أمر مسح الكاش (config:clear Command): يحذف ملف الإعدادات المدمج لتعود التعديلات المحلية في .env للعمل.
- القاعدة الذهبية (Golden Rule of env): استدعِ دالة env داخل ملفات config/ فقط، واستخدم دالة config في بقية الكود.
# Compile all configuration files for production speed
php artisan config:cache
# Clear cached configuration during local development
php artisan config:clear
يضمن التمييز الواضح بين متغيرات البيئة في .env ومصفوفات الإعدادات في config/ بقاء تطبيقك آمناً وسريع الأداء في بيئة الإنتاج. لخصنا في هذا القسم أهم الفروق الهندسية بين الدالتين وأوامر الإدارة اليومية.
| وجه المقارنة الهندسي | الأسلوب اليدوي أو التقليدي | معيار Laravel 12 الحديث |
|---|---|---|
| حفظ البيانات السرية | كتابة كلمات مرور قاعدة البيانات مباشرة داخل ملفات الكود | عزل كافة المفاتيح السرية في ملف .env المستبعد من مستودع Git |
| قراءة الإعدادات بالكود | استدعاء متغيرات عامة أو ثوابت مبعثرة في صفحات المشروع | قراءة منظمة بالصيغة النقطية عبر الدالة config('file.key') |
| الأداء في بيئة الإنتاج | إعادة قراءة وتحليل ملفات الإعدادات النصية مع كل طلب زائر | دمج كافة الإعدادات بملف واحد فائق السرعة بأمر config:cache |
| حماية رسائل الخطأ | ترك عرض الأخطاء البرمجية مفعلاً أمام المستخدمين في الموقع الحي | ضبط APP_DEBUG=false في الإنتاج لإخفاء التفاصيل التقنية الحساسة |
<?php
// Correct pattern inside application logic:
$appName = config('app.name');
$debugOn = config('app.debug');
echo $appName . ' | Debug: ' . ($debugOn ? '1' : '0');
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس حول «إعدادات تطبيق Laravel ومتغيرات ملف البيئة» مفاهيم متغيرات البيئة داخل ملف .env، وقراءة الإعدادات عبر دالة config، ومفتاح التشفير ووضع التصحيح Debug وفق معايير Laravel 12 الحديثة.
الخطوة التالية والدرس القادم
انتقل الآن إلى الدرس التالي «أوامر Artisan ودورة حياة الطلب في Laravel» للبناء التراكمي على ما تعلمته.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Environment Config ملف البيئة
- إدارة الإعدادات الحساسة في ملف البيئة .env وقراءتها عبر config وتوليد مفتاح التشفير APP_KEY وإغلاق وضع التصحيح في الإنتاج.
- للمراجعة
- 02 Environment Variables in dotenv متغيرات البيئة داخل ملف .env
- المفهوم الهندسي والتطبيق العملي المباشر لقسم متغيرات البيئة داخل ملف .env في إطار العمل Laravel 12.
- للمراجعة
- 03 Reading Values with config Helper قراءة الإعدادات عبر دالة config
- المفهوم الهندسي والتطبيق العملي المباشر لقسم قراءة الإعدادات عبر دالة config في إطار العمل Laravel 12.
- للمراجعة
- 04 Application Key and Debug Mode مفتاح التشفير ووضع التصحيح Debug
- المفهوم الهندسي والتطبيق العملي المباشر لقسم مفتاح التشفير ووضع التصحيح Debug في إطار العمل Laravel 12.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 MVC MVC
- Model View Controller
- النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
- للمراجعة
- 02 CLI CLI
- Command Line Interface
- واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
- للمراجعة
- 03 HTTP HTTP
- Hypertext Transfer Protocol
- بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
- للمراجعة
- 04 PSR PSR
- PHP Standards Recommendations
- المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «متغيرات البيئة داخل ملف .env» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «قراءة الإعدادات عبر دالة config» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من متغيرات البيئة داخل ملف .env في إطار العمل Laravel 12؟
يسهم متغيرات البيئة داخل ملف .env في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «قراءة الإعدادات عبر دالة config» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة مفتاح التشفير ووضع التصحيح Debug بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة مفتاح التشفير ووضع التصحيح Debug.
لماذا يُعد تطبيق فحص بيئة التشغيل الحالية للتطبيق مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق تخزين الإعدادات مؤقتاً بالأوامر في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مقارنة دالة env ودالة config؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.