محتويات الدورة

Laravel / المتقدم / الدرس 18

إعداد النشر وسلامة الإصدارات

عامل الإصدار كشيفرة وإعداد محلول وعمليات طويلة متوافقة مع تحقق صريح وحدود للتراجع.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • شرح الإعداد المخزن وحد استخدام env الصحيح.
  • تخطيط توافق الملفات والعمال والأسرار والمخطط.
  • فحص الإصدار دون خلط الإقلاع بجاهزية الاعتماديات.

يتجاوز الإصدار ملفات المصدر

تستخدم بيئة التحقق المحلية Laravel 12.63.0 وPHP 8.5.12، بينما يبقى أساس الصياغة PHP 8.3؛ وفحص الأمثلة منفصل عن تنفيذ النشر. يعتمد الإصدار على الامتدادات وحزم Composer المثبتة والأصول والإعداد وأدلة الكتابة والخدمات. للتجربة حد تقارير واسم إصدار بلا أسرار. ابنِ ملفًا محدد الهوية ووثّق بيئته؛ فلا يثبت طلب المطور إقلاع إصدار نظيف بإعداد وعمال وقاعدة متوافقة. لا ينفذ الدرس أمر نشر.

فحص قيم الإعداد التي تستقبلها الشيفرة

تصل قيم البيئة نصًا وتحتاج تفسيرًا مقصودًا. قد يقبل cast مباشر بادئة رقمية ويخفي الخطأ. يستخدم النموذج FILTER_VALIDATE_INT بمجال موجب محدود ويرمي خطأ مضبوطًا. يقرأ نصوصًا اصطناعية لا البيئة أو الأسرار، ويختبر التحليل لا إقلاع Laravel. طبّق القاعدة عند حل الإعداد ليفشل النشر بوضوح قبل العمل بدل حد خطر. وحّد الفحص مع الإعداد المخزن وغير المخزن.

php محلل إعداد محدود دون اتصال
<?php
declare(strict_types=1);
function reportLimit(string $raw): int
{
    $value = filter_var($raw, FILTER_VALIDATE_INT, [
        "options" => ["min_range" => 1, "max_range" => 5000],
    ]);
    if ($value === false) { throw new InvalidArgumentException("invalid report limit"); }
    return $value;
}
foreach (["250", "0", "25x"] as $raw) {
    try { echo reportLimit($raw), PHP_EOL; }
    catch (InvalidArgumentException) { echo "rejected", PHP_EOL; }
}
الناتج المتوقع
250
rejected
rejected

الحد الصحيح 250 ويُرفض الصفر والنص المشوه. لا تُقرأ بيئة أو إعداد تطبيق.

حل قيم البيئة داخل ملفات الإعداد

يجمع تخزين الإعداد القيم المحلولة. بعده لا يحمّل Laravel ملف .env خلال الطلب أو Artisan؛ فتعتمد env على البيئة الخارجية وبدائلها. استخدم env داخل config واقرأ config خارجه. يعلن الملف القيم وتحتاج الفاحص المذكور. قد يثبت البناء ببيئة خاطئة قيمًا خاطئة. اجعل التوليد إجراء نشر مصرحًا تتوافر له الأسرار لا خطوة تُشغّل على تطبيق قائم في الدرس.

php مقطع سياقي من config/reports.php
<?php
return [
    "release" => env("APP_RELEASE", "local"),
    "max_rows" => env("REPORT_MAX_ROWS", "1000"),
];

المتوقع: قراءة config("reports.release") وconfig("reports.max_rows") وفحص الحد بالعقد. لا يُقلع الملف أو يُخزن هنا.

تنسيق العمليات الطويلة مع الشيفرة والمخطط

يحتفظ العامل بحالة التطبيق ويحتاج دورة لاعتماد الإصدار؛ لا يعيد الملف تشغيله. تعتمد إشارة إعادة الطوابير السلسة على المخزن ومدير العمليات. صمّم المخطط والحمولات لفترة تعايش القديم والجديد. قد يحفظ التوسيع ثم التقليص التوافق، ولا يؤمن تراجع تحويل مدمر تلقائيًا. ثبّت مفاتيح التشفير إلا بخطة دوران للبيانات والجلسات؛ فلا تولد مفتاحًا لمجرد إصدار جديد.

فحص السطح المكشوف ودليل التراجع

اكشف دليل public لا المشروع كله ولا تعرض إعدادًا أو أسرارًا عبر debug. يحوي المقطع قيمًا اصطناعية غير سرية. يثبت مسار الصحة الافتراضي الإقلاع وتحتاج جاهزية القاعدة والطابور فحوصًا محدودة. افحص الإصدار وطلبًا مصرحًا ورفضًا وإكمال مهمة وسجلًا دون إجراء إداري بالمختبر. افصل تراجع الشيفرة والبيانات واحفظ الملفات والإعداد المتوافق وصرّح بالفحوص بدل اعتبار الأخضر استعادة كاملة.

dotenv مقطع بيئة سياقي غير سري
APP_ENV=production
APP_DEBUG=false
APP_RELEASE=release-20261025
REPORT_MAX_ROWS=250

قيم توضيحية لتجربة معزولة لا أوامر لتعديل بيئة قائمة. يحل الإصدار اسمه وحده المفحوص ويخفي تفاصيل debug.

الأخطاء الشائعة وإصلاحها

إعداد يعمل محليًا ويغيب بعد التخزين.

لماذا يحدث؟
تقرأ الشيفرة env بدل config المحلولة.
كيف تصلحه؟
انقل الحل لملفات config واقرأها خارجيًا.
كيف تتجنب تكراره؟
اختبر المسارين بتجارب معزولة.

طلبات تعتمد الإصدار والعمال يتصرفون بالقديم.

لماذا يحدث؟
لم تتبع العمليات الطويلة دورة الإصدار.
كيف تصلحه؟
استخدم انتقالًا سلسًا مصرحًا بإشراف.
كيف تتجنب تكراره؟
افحص إكمال الطابور وهوية الإصدار.

تراجع الشيفرة لا يعيد صحة التطبيق.

لماذا يحدث؟
لا يوافق المخطط أو البيانات الإصدار السابق.
كيف تصلحه؟
خطط ترحيلًا متوافقًا وحدود استعادة البيانات.
كيف تتجنب تكراره؟
اختبر افتراضات التراجع ببيانات اصطناعية مسبقًا.

اختبر فهمك

1. صنّف reportLimit("1") وreportLimit("5000") وreportLimit("5001") وفسّر ضعف cast لـ"25x".

اعرض الحل المشروح

يُقبل الطرفان واحد وخمسة آلاف وتُرفض خمسة آلاف وواحد. قد يحول cast البادئة الخاطئة إلى قيمة مقبولة غير مقصودة. افحص قبل الاعتماد واختبر الطرفين والمشوه بالمحلل المستخدم في حل الإعداد.

2. يخضر /up وتعلق التقارير بالطابور. ما المثبت وما الدليل الإضافي؟

اعرض الحل المشروح

يثبت المسار الافتراضي الإقلاع لا العمال والاتصال والإكمال. افحص الإشارات المصرحة للتأخر وهوية العامل والمحاولات وتجربة تقرير اصطناعي كاملة. حد المجسات ولا تعتبر الصحة إذن ترحيل أو إعادة خدمات الإنتاج.

أهم ما تعلمته

  • نسّق الشيفرة والإعداد والعمال.
  • اقرأ env عند حد الإعداد الموثق.
  • تحتاج صحة الإقلاع وجاهزية التراجع دليلين مختلفين.

المراجع الرسمية