متغيرات البيئة وملفات .env
أديروا الإعدادات الحساسة باستخدام ملفات .env ومكتبات dotenv في PHP
متغيرات البيئة وملفات .env درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.
لماذا نستخدم متغيرات البيئة؟
تضمين بيانات الاعتماد أو الإعدادات الخاصة بالبيئة مباشرةً في الشيفرة المصدرية غير آمن ويجعل عمليات النشر هشة. تفصل متغيرات البيئة بين الإعدادات والشيفرة.
ملف .env
يحتوي ملف .env على أزواج من المفتاح والقيمة تُحمّل في البيئة عند بدء التشغيل. أضفه إلى .gitignore — لا ترفقه أبدًا بنظام التحكم في الإصدارات.
# .env
APP_ENV=production
APP_KEY=base64:...
DB_HOST=127.0.0.1
DB_NAME=myapp
DB_USER=myapp_user
DB_PASS=supersecret
REDIS_HOST=127.0.0.1
MAIL_HOST=smtp.mailtrap.ioتكامل Laravel مع .env
يستخدم Laravel مكتبة vlucas/phpdotenv لتحميل .env تلقائيًا. ويمكنك الوصول إلى القيم باستخدام الدالة المساعدة env().
<?php
$host = env("DB_HOST", "127.0.0.1"); // "127.0.0.1" is the defaultconfig() أم env()؟
استخدم env() فقط في ملفات config/*.php. وفي جميع المواضع الأخرى، استخدم config("database.host") — فهذا يعمل بشكل صحيح مع التخزين المؤقت للإعدادات.
<?php
// In config/database.php:
"host" => env("DB_HOST", "127.0.0.1")
// In your service classes:
$host = config("database.connections.mysql.host");التخزين المؤقت للإعدادات
خزّن الإعدادات مؤقتًا في بيئة الإنتاج لتجنب تحليل .env مع كل طلب.
$ php artisan config:cache
# After changing .env:
$ php artisan config:clearPHP الخام مع phpdotenv
استخدم vlucas/phpdotenv خارج Laravel.
$ composer require vlucas/phpdotenv
<?php
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
$host = $_ENV["DB_HOST"];المتغيرات المطلوبة
تحقق من وجود متغيرات البيئة المطلوبة عند بدء التشغيل لاكتشاف الإعدادات الناقصة مبكرًا.
<?php
$dotenv->required(["DB_HOST", "DB_NAME", "DB_USER", "DB_PASS"]);
$dotenv->required(["DB_PORT"])->isInteger();.env.example
أرفق ملف .env.example الذي يحتوي على جميع أسماء المتغيرات من دون قيم. وينسخه المطورون إلى .env ثم يملؤون قيمهم الخاصة.
متغيرات البيئة على مستوى الخادم
في بيئة الإنتاج، اضبط متغيرات البيئة على مستوى الخادم، مثل ملفات خدمات systemd وخيارات --env في Docker وأسرار Kubernetes، بدلًا من وضعها في ملف .env.
# systemd service:
[Service]
Environment="APP_ENV=production"
Environment="DB_HOST=db.internal"إدارة الأسرار
بالنسبة إلى بيانات الاعتماد الحساسة، مثل مفاتيح API والشهادات، فكّر في استخدام مدير للأسرار مثل HashiCorp Vault أو AWS Secrets Manager أو أسرار GitHub Actions الخاصة بالتكامل المستمر.
الملخص
خزّن جميع الإعدادات الخاصة بالبيئة في .env. لا ترفقه بنظام التحكم في الإصدارات أبدًا. استخدم config() في شيفرة التطبيق، وenv() فقط في ملفات الإعدادات. خزّن الإعدادات مؤقتًا في بيئة الإنتاج باستخدام php artisan config:cache.
تحقق سريع
أين ينبغي استدعاء env() في تطبيق Laravel؟
الأسئلة الشائعة
هل درس «متغيرات البيئة وملفات .env» مجاني؟
نعم — نص درس «متغيرات البيئة وملفات .env» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «متغيرات البيئة وملفات .env»؟
أديروا الإعدادات الحساسة باستخدام ملفات .env ومكتبات dotenv في PHP تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «متغيرات البيئة وملفات .env»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تهيئة Nginx وPHP-FPM
- متغيرات البيئة وملفات .env
- النشر باستخدام GitHub Actions
- إنشاء حاويات لتطبيق PHP