طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 132 · تقنيات تطوير الواجهات الخلفية
الدرس 25 · الوحدة 12: نشر التطبيق على بيئة الاستضافة

نشر التطبيق خطوة بخطوة

من localhost إلى رابط يفتحه أي شخص. ⏱ نحو 35 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تراجع أمان التطبيق قبل نشره وتمنع تسرّب المعلومات الحساسة.
  • تفصل إعدادات التطوير عن الإنتاج وتحفظ الأسرار خارج الكود.
  • تنشر تطبيق PHP و MySQL على استضافة مشتركة خطوة بخطوة.
  • تضبط صلاحيات الملفات والمجلدات، وتميّز طرق النشر.

١قبل الرفع: مراجعة أمان

النشر يعني أن أي شخص في العالم يستطيع الوصول لتطبيقك. فقبل الرفع راجع هذه القائمة (وهي أول موضوع في وحدة النشر في الخطة: «مراجعة تدابير أمان التطبيق لضمان عدم تعرض المعلومات الحساسة»):

البندتحقق من
الأخطاءdisplay_errors معطّل في الإنتاج (الدرس 24).
الأسراركلمات مرور القاعدة ومفاتيح الخدمات ليست في الكود المرفوع ولا في Git.
ملفات التطويراحذف phpinfo.php، وملفات الاختبار، والنسخ الاحتياطية (.bak و .sql)، ومجلد .git من المجلد العام.
قاعدة البياناتمستخدم خاص بالتطبيق بكلمة مرور قوية، لا root.
المدخلاتكل استعلام مُعدّ، وكل إخراج عبر htmlspecialchars.
الصفحات المحميةالإدارة تتطلب دخولًا وصلاحية، والحذف بـ POST.
الجلساتcookie_secure و httponly و samesite، و session_regenerate_id بعد الدخول.

٢ملف واحد يعرف أين يعمل

حتى لا تعدّل الكود يدويًّا عند كل نشر، اجعل ملف بدء واحدًا يكتشف البيئة ويضبط الإعدادات. هنا يكتشفها من اسم المضيف: الطلب الأول من جهازك، والثاني على الخادم المنشور:

<?phprequire __DIR__ . '/bootstrap.php';echo "البيئة: " . APP_ENV . "\n";echo "عرض الأخطاء: " . (ini_get('display_errors') ? 'نعم' : 'لا') . "\n";echo "إعدادات القاعدة: " . ($db ? 'موجودة' : 'secrets.php غير موجود على الخادم بعد!');

على الخادم يجب أن تنشئ secrets.php بيدك خارج المجلد العام، بالقيم التي تعطيك إياها لوحة الاستضافة. هذا الملف لا يُرفع مع الكود أبدًا.

٣خطوات النشر على استضافة مشتركة

الخطوات متشابهة في أغلب الاستضافات المشتركة (InfinityFree وغيرها)، وقد تختلف أسماء القوائم:

  1. أنشئ الحساب والموقع: اختر نطاقًا فرعيًّا مجانيًّا مثل myapp.example-host.com (أو اربط نطاقك؛ الدرس القادم).
  2. أنشئ قاعدة البيانات من لوحة التحكم، واكتب: اسم القاعدة، واسم المستخدم، وكلمة المرور، واسم خادم القاعدة (في الاستضافات المشتركة غالبًا ليس localhost؛ انسخه كما تعرضه اللوحة).
  3. استورد الجداول: صدّر قاعدتك من phpMyAdmin على XAMPP (تبويب Export ← SQL)، ثم استوردها في phpMyAdmin الاستضافة (Import).
  4. ارفع الملفات إلى المجلد العام (غالبًا اسمه htdocs أو public_html): عبر مدير الملفات في المتصفح، أو برنامج FTP مثل FileZilla ببيانات FTP من اللوحة.
  5. أنشئ ملف الأسرار secrets.php على الخادم بقيم القاعدة الجديدة.
  6. اضبط الصلاحيات (الخطوة التالية)، ثم افتح الموقع واختبره (الدرس 27).
<?php// secrets.php (على الخادم فقط، خارج htdocs إن أمكن)return [    'dsn'  => 'mysql:host=sql123.example-host.com;dbname=if0_37_app;charset=utf8mb4',    'user' => 'if0_37',    'pass' => 'كلمة-المرور-من-لوحة-التحكم',];

٤الصلاحيات والاعتماديات

على خوادم Linux لكل ملف ومجلد صلاحيات: من يقرأ، ومن يكتب، ومن ينفّذ. تُكتب بثلاثة أرقام: للمالك، ثم للمجموعة، ثم للآخرين (4 قراءة + 2 كتابة + 1 تنفيذ):

الصلاحيةتعنيلـ
644المالك يقرأ ويكتب، والبقية يقرؤون فقطملفات PHP و HTML و CSS
755المالك كل شيء، والبقية يقرؤون ويدخلون المجلدالمجلدات
775 أو حسب الاستضافةالخادم يكتب داخلهمجلد uploads أو cache أو data
777الكل يكتب✗ لا تستخدمها أبدًا

وتُضبط من مدير الملفات (Permissions / CHMOD) أو من برنامج FTP. والاعتماديات Dependencies هي ما يحتاجه تطبيقك ليعمل: إصدار PHP، والإضافات، والمكتبات الخارجية (إن استخدمت Composer فارفع مجلد vendor أو ثبّته على الخادم). وصفحة الجاهزية من الدرس السابق تكشف أي نقص.

٥طرق النشر

الطريقةكيف؟ملاحظات
مدير الملفاتترفع الملفات (أو ملف zip ثم تفكه) من المتصفحالأسهل للبداية؛ يدوي ومعرّض للنسيان
FTP / SFTPبرنامج مثل FileZilla يزامن مجلدك مع الخادمأسرع للملفات الكثيرة. و SFTP مشفّر فهو أفضل
Gitالخادم يسحب الكود من مستودعكتعرف بالضبط ما المنشور وتتراجع بسهولة
نشر تلقائي CI/CDكل دفعة إلى GitHub تُختبر وتُنشر آليًّاأسلوب الفرق المحترفة

توقّع وتحقّق

اسم خادم القاعدة في الاستضافة المشتركة:

انسخه من اللوحة.

الصلاحية المناسبة لملفات PHP:

قراءة للجميع وكتابة للمالك.

لنقل قاعدة بياناتك من XAMPP إلى الاستضافة:

ملف SQL.

أي طريقة رفع مشفّرة؟

FTP عادي غير مشفّر.

الخلاصة

تحدٍّ تصميمي: انشر تطبيق إدارة المستخدمين

متقدم

انشر تطبيق الدرس 21 (مع الدخول من الدرس 16) على استضافة مجانية أو استضافة القسم، ثم سلّم الرابط ولقطات الشاشة لمعلمك.

المطلوب:
  • أنشئ الموقع وقاعدة البيانات واستورد جدول users.
  • ارفع الملفات، وأنشئ secrets.php على الخادم، واضبط الصلاحيات.
  • اكتب في تقرير قصير: الاستضافة التي اخترتها ولماذا، وخطوات النشر، ومشكلة واجهتك وكيف حللتها.
☑ راجع عملك قبل التسليم:
💡 تلميح 1
جرّب الرابط من جوالك ببيانات الجوال (لا شبكة المعمل) لتتأكد أنه منشور فعلًا.
💡 تلميح 2
إن ظهرت صفحة بيضاء فارغة: فعّل التسجيل وراجع سجل الأخطاء في لوحة الاستضافة.
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس