الانتقال إلى المحتوى الرئيسي
AllsWeb
فحص مسبق · مجاني · بدون تثبيت

افحص الخادم قبل أن يفتح المتجر

SixPreflight فحص مجاني يجري على خادمك ليخبرك عما إذا كان قادراً على تشغيل 6amMart. إذا أنت تشتري SixPanel بعد ذلك، سينتقل التثبيت أسرع وأكثر أماناً لأننا سنعرف بالفعل حالة الخادم.

قم بتشغيل الفحص المجانيتحدث معنااقرأ الدليل

دائمًا الإصدار الحالي، وتعمل على خادمك أنت. إنها تقرأ فقط: لا تقرأ ولا تكتب في أي جدول تطبيق، ولا ترسل بريدًا أو رسالة نصية إلى أحد. وثلاث واجهات تستطيع التصرف خارج مجلد الأداة نفسه، ورابعة تكتب داخله — وكل منها لا يعمل إلا حين تضغط زره. انظر «ما الذي ستغيّره، إن طلبت منها».

163

فحصًا مستقلًا في الكود

10

خطوات، الأرخص والأرجح عطبًا أولًا

1

جملة واحدة في نهايتها

A–F

تقدير، مع تسمية كل مانع

هل تقرأ هذه الصفحة بمساعدة ذكاء اصطناعي؟

عرض بتنسيق Markdown

الحصول على SixPreflight

SixPreflight مجلد PHP ترفعه. لا شيء تثبّته قبله، ولا شيء تسجّل فيه. وهو مجاني.

جرّبه قبل أن تنزّله

متجر 6amMart حيSixPreflight على النسخة التجريبية

كلمة مرور النسخة التجريبية

Password: a3uap648vnh7yqenc9vb

No username — SixPreflight asks for the password only.

The shop runs a real dataset — tens of thousands of orders — so the screens behave the way they will on yours, not the way a demo with forty products does. Two things are switched off on the demo: maps and SMS one-time passwords. Both use keys locked to a single server, which is how they should be held, so they cannot answer from a demo host. They work normally on your own install.

احصل على SixPreflight

Free
  • التحديثات مشمولة — كل إصدار يصل إلى CodeCanyon دون تكلفة إضافية. لا خادم تراخيص، ولا مفتاح يُجدَّد.
  • الإعداد الأول مجاني — أرسل رمز الشراء وتفاصيل الخادم عبر واتساب أو البريد الإلكتروني.
احصل عليه من CodeCanyon
اقرأ الدليل

لا شيء يُفعَّل — يعمل على خادمك أنت، ولا يتصل بنا، ويظل يعمل حتى لو تعطّل هذا الموقع.

ماذا تفعل

لصاحب متجر، لا لمهندس

اشتريت 6amMart، واستأجرت خادمًا، وثبّته لك أحدهم. والموقع يفتح. وهذا ليس مثل أن يكون جاهزًا. فقد يبدو المتجر طبيعيًا تمامًا في المتصفح بينما بوابة الدفع فيه بلا بيانات اعتماد عاملة، وإشعاراته لا تصل إلى أحد، وملف env. الخاص به قابل للقراءة من أي شخص على الإنترنت، ومهامه المجدولة لم تعمل ولا مرة، وقاعدة بياناته مضبوطة لاستخدام جزء يسير من الذاكرة التي تدفع ثمنها. ولا يظهر أي من ذلك حتى يضع عميل حقيقي طلبًا حقيقيًا ويحدث خطأ ما بصمت.

SixPreflight هي الفحص الذي تشغّله قبل أن يحدث ذلك. ترفع مجلدًا واحدًا إلى موقعك، وتفتحه في المتصفح، وتضبط كلمة مرور، وتضغط زرًا. فتنظر إلى الخادم كما ينظر مهندس دقيق — العتاد، وPHP، وإعدادات قاعدة البيانات، وخادم الويب، وصلاحيات الملفات، وما يستطيع الإنترنت بلوغه، وما إذا كانت المدفوعات والبريد والرسائل النصية والخرائط والإشعارات تعمل فعلًا حين تستدعيها بجدّ.

ثم تعطيك جملة واحدة — «جاهز للافتتاح» أو «غير جاهز لاستقبال الطلبات» — وتقديرًا بحرف، وقائمة مرتبة بما يجب إصلاحه، مع ذكر السطر الدقيق الذي يجب تغييره والملف الذي يوجد فيه وما يكلّفه متجرك إن تركته.

جاهز للافتتاحغير جاهز لاستقبال الطلبات

المسح نفسه يقرأ فقط. وحيثما تستطيع الأداة التصرف، فإنها تتصرف عند ضغطك زرًا، لا من تلقاء نفسها.

معه مقابل بدونه

ما تعرفه قبل أن تفتح

السيرفر نفسه في الحالتين. والفرق هو: هل تجد المشكلات أنت، أم يجدها عميل يدفع؟

  • يوم افتتاحك

    بدون SixPreflight

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

    مع SixPreflight

    ما يصل إلى 163 فحصًا تنتهي بجملة واحدة — جاهز للافتتاح، أو غير جاهز لاستقبال الطلبات — مع تقدير بالحروف وقائمة مرتّبة بما يجب إصلاحه أولًا.

  • كيف تعرف أن شيئًا ما معطوب

    بدون SixPreflight

    عميل حقيقي يضع طلبًا حقيقيًا فيحدث خلل بصمت. تلك هي إشارتك الأولى، وثمنها الطلب والعميل معًا.

    مع SixPreflight

    تعرف قبل أن تفتح، من فحص تشغّله بنفسك — وكل بند يذكر السطر الذي يجب تغييره بالضبط، والملف الذي يقع فيه، وما يكلّفه متجرك إن تركته.

  • بيانات اعتماد موجودة لكنها خاطئة

    بدون SixPreflight

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

    مع SixPreflight

    تحسم الأمر نداءات حقيقية: توليد رمز Firebase حقيقي وإرساله إلى نقطة نهاية Google، ومحادثة SMTP حقيقية مع EHLO / STARTTLS / AUTH، ونداء جغرافي حيّ إلى خرائط Google. والموجود-لكن-الخاطئ يفشل هنا، وهو الموضع الوحيد الذي يمكن التقاطه فيه قبل أن يجده عميل.

  • ما يستطيع الإنترنت الوصول إليه أصلًا

    بدون SixPreflight

    تفترض أن الملفات التي لا يجب أن تكون عامة ليست عامة. ولا شيء على السيرفر يخبرك بغير ذلك، لأن لا شيء يُجري تلك الطلبات.

    مع SixPreflight

    يجلب قائمة ثابتة من العناوين المعروفة بخطورتها من موقعك الحيّ نفسه — /.env و/.git/config و/artisan وملف database.sql الخاص بالمثبِّت وملفات الأداة نفسها — ويُبلّغ بما عاد فعلًا.

  • ما يكلّفه

    بدون SixPreflight

    أن تعرف هذا من عميل هو النسخة المكلفة.

    مع SixPreflight

    لا شيء. فـ SixPreflight مجاني على CodeCanyon والإعداد الأول مجاني. ولا شيء في الحزمة يتحقق من ترخيص أو حساب أو تاريخ انتهاء، ولا شيء فيها يُبلّغ AllsWeb بأي شيء.

شُغِّل على خوادم حقيقية

ما الدرجة التي حصل عليها حين وجّهناه إلى أجهزتنا نحن

أداة فحص لم تنشر نتيجة قط هي مجرد ادّعاء. هذه النتائج من جولة القياس نفسها التي خرج منها معيار SixPanel — الأداة منصّبة على خوادم حقيقية تشغّل متجرًا حقيقيًا، ومُقيَّمة كما يقيّمها المتصفح لا من سطر الأوامر.

SixPanel

97 · A

صفوف تحتاج انتباهًا: لا شيء

SixPanel Docker

96 · A

صفوف تحتاج انتباهًا: لا شيء

كيف تقرأ درجة مسقوفة قراءةً صحيحة

تتوقف الدرجة عند 88 ما دام هناك صف واحد باللون الأحمر، مهما كان الباقي جيدًا. هذا مقصود — فمتجر لا يستطيع البيع لا ينبغي أن يُقرأ على أنه جيد جدًا — لكنه يعني أيضًا أن رقمًا مسقوفًا لا يخبرك شيئًا يُذكر عن التسعة والتسعين فحصًا الأخرى. في الجولة نفسها سجّل خادم 88 وآخر 96، وكان الفارق بين درجتيهما الأساسيتين 0.03 عبر نحو مئة فحص. الفجوة الظاهرة كلها كانت مهمّة خلفية قديمة واحدة. اقرأ دائمًا الصفوف الحمراء، لا العنوان وحده.

عيب اكتشفته هذه الجولة في الأداة نفسها

مُشغِّل الفحص في SixPreflight لم يكن فيه أي معالجة للأخطاء على الإطلاق. على خادم عطّلت فيه شركة الاستضافة دالة من دوال PHP، لا يكون استدعاؤها في PHP 8 تحذيرًا يمكن كتمه — بل خطأ قاتلًا — فتنتهي عملية الفحص كلها بأثر استدعاءات بدل التقرير بسبب دالة واحدة معطّلة. وهذه بالضبط هي الاستضافة المشتركة على cPanel وPlesk، وهي الأحوج إلى هذه الأداة. صُحِّح الأمر: الدالة المعطّلة صارت الآن صفًا يقول إنه تعذّر قياسها، والفحص يكمل إلى نهايته.

وأمر يخطئ فيه على خادم مُحكَم التأمين

على خادم يكون فيه PHP محبوسًا داخل صندوق رملي على مستوى النواة، لا يستطيع SixPreflight قراءة إعدادات خادم الويب — فيبلّغ أن أحد مُهَل الانتظار غير مضبوط بينما خادم الويب ضبطه فعلًا. غياب الدليل يُقرأ على أنه دليل الغياب، فيُعاقَب الخادم لأنه مُحكَم التأمين. ذُكر هنا لأن أداة تُعلن نقاط عماها أثمن من أداة تدّعي أنها بلا نقاط عمى.

كيف تعمل

على خطوات، لا انتظارًا طويلًا واحدًا

الصفحة نفسها لا تُجري أي فحص. بل ترسم هيكلًا فارغًا، ثم يطلب المتصفح من الخادم خطوة واحدة في كل مرة.

  • أول رسم فوري

    قيس على تثبيت الاختبار: 6.8 KB في 2 ms، مقابل 36 KB ونحو 1.6 s حين كانت الصفحة تؤدي كل العمل قبل العرض. وعلى خادم يُفترض بحكم التعريف أنه قد يكون مضبوطًا خطأ، فإن الانتظار حتى أبطأ فحص قبل عرض أي شيء مقايضة خاطئة.

  • شريط التقدم حقيقي

    الخطوات المكتملة على إجمالي الخطوات، لا رسمًا متحركًا. وحين يتوقف، فهناك شيء عالق فعلًا، والوصف يذكر أي فحص.

  • الفحص المتعلّق لا يستطيع إسقاط الصفحة

    كل خطوة طلب قصير مستقل، فلا يصطدم شيء بـmax_execution_time. والخطوة التي ترمي خطأً تُبلَّغ كنتيجة ويستمر المسح. وكل خطوة منتهية تُكتب على القرص فور اكتمالها، فيبقى المسح المُقاطَع قابلًا للقراءة.

زران

  • افحص الآن

    يقرأ الإعدادات المحلية ويستعلم عن عنوان IP العام للخادم — نحو ثانية.

  • فحص أعمق

    يضيف الخطوتين اللتين تُجريان اتصالات خارجية حقيقية: اختبارات الانكشاف العام على رابطك أنت، والاختبارات الحية للتكاملات.

تفصيل صريح: «افحص الآن» ليس دون اتصال بالكامل. فصف عنوان IP العام يسأل خدمة صدى خارجية — ifconfig.me، ثم api.ipify.org، ثم icanhazip.com، تُجرَّب بالترتيب وتُخزَّن بين عمليات المسح، وثلاثة مزوّدين عمدًا حتى لا تطمس دقيقة سيئة إجابة معروفة الصحة.

الطرق الثلاث التي تعمل بها

تحدد SixPreflight ما الذي تنظر إليه وتغيّر ما تقوله، لأن النصيحة الصادقة تختلف في كل حالة.

  • على خادم عادي — بلا تطبيق مثبَّت بعد

    هذا هو الوضع المناسب لاختيار خادم أو تجهيز خادم جديد. فالعتاد وPHP وخادم قاعدة البيانات وخادم الويب والصلاحيات والانكشاف العام تُفحص كلها. أما خطوة ملف env. فلا تُرجع شيئًا، وخطوة التطبيق تُرجع صف الملف التعريفي فقط، وخطوة قاعدة البيانات تُبلّغ «لم يُفحص — لا يوجد تطبيق هنا يحمل بيانات الاعتماد» كنجاح بدل أن يصبح اتصال مفقود أسوأ صف على جهاز فارغ عن حق.

    ولا يزال بإمكانك تدقيق قاعدة بيانات جهاز فارغ بتوجيه env_path إلى ملف env. بديل يحمل بيانات الاعتماد.

  • داخل متجرك — عند قاعدة كود إدارة 6amMart

    ارفع المجلد إلى public/، وهو المجلد الذي يقدّمه خادم الويب فعلًا. ويُعثر على جذر التطبيق بالصعود من مجلد الأداة نفسه، بخمسة مستويات كحد أقصى، إلى أول مجلد يحتوي artisan — فيعمل كلٌّ من public/preflight/ ومجلد في جذر التطبيق، أما الرفع الأعمق من خمسة مستويات فيحصل على الوضع المستقل بصمت. والموضع الصحيح هو public/ — فالمجلد في جذر التطبيق لا يمكن بلوغه بالرابط إلا حين يكون جذر المستند خاطئًا، وهو بذاته أخطر ما تبحث عنه هذه الأداة.

    وهنا يعمل كل فحص، بما فيها تلك المكتوبة من قاعدة كود 6amMart تحديدًا: المُجدوِل الذي يدفع للمتاجر والمندوبين، والوحدات المُعلَّمة كمفعَّلة لكنها مفقودة، وامتدادات PHP الدقيقة التي تتطلبها حزمه، وطبقة الـwebsocket خلف تتبع التوصيل الحي. وعلى أي تطبيق Laravel آخر يبقى كل ما يخص الخادم منطبقًا كما هو مكتوب، وتُتخطى الفحوصات الخاصة بـ6amMart بدل تخمينها.

  • مضمَّنة داخل SixPanel

    على خادم SixPanel، تملك اللوحة خادم الويب وPHP وإعدادات قاعدة البيانات وcron وعامل الطابور والشهادة، وتعيد كتابة تلك الملفات من قوالبها الخاصة عند كل نشر — فالقيمة التي تُلصق يدويًا تضيع بصمت عند النشر التالي. وفي ذلك الوضع تُسقط SixPreflight كتل اللصق، وكتل nginx وApache الخام، وأسطر إعادة تشغيل php-fpm، ومسارات «أين تنقر في لوحة استضافتك»، وتشير بدلًا من ذلك إلى صفحة SixPanel التي تملك كل إعداد. وتُبقي كل ما يخص التطبيق — ملف env.، وإعدادات العمل، والمفاتيح المفقودة أو الخاطئة، وقيمة APP_URL خاطئة، وتخزين معطوب، وأخطاء في السجل — لأن هذا هو النصف الذي لا تستطيع اللوحة إصلاحه بنفسها. وتذكر في أي وضع هي، في سطر واحد أعلى الصفحة، فلا يكون الوضع لغزًا أبدًا.

    ويُحدَّد الوضع بمتغيّر بيئة يضبطه بلوك الخادم الذي يستجيب للمسار (SIXPANEL_EMBED=1)، أو بـ'embedded' => true في config.php. أما ترويسة الطلب فليست الإشارة الأساسية عمدًا: فالترويسة يكتبها من يُرسل الطلب، فتصمد داخل إطار اللوحة ولا شيء غير ذلك — افتح الصفحة نفسها في تبويب جديد وستعود الأداة إلى نصيحة الوضع المستقل على الخادم نفسه. ولا تُحترم X-SixPanel-Embed: 1 إلا حين تُفعّل 'trust_embed_header'، وهو مطفأ افتراضيًا، لأنه بلا قيود سيتيح لأي زائر أن يمنح نفسه عرض الخادم المُدار على خادم هو في الواقع مسؤوليته هو.

ماذا تفحص

163 فحصًا مستقلًا، في عشر خطوات

163 فحصًا مستقلًا تعيش في الكود، تعمل في عشر خطوات، مرتبة بالأرخص والأرجح عطبًا أولًا. والخطوتان اللتان تُجريان اتصالات خارجية معلَّمتان كبطيئتين ولا تعملان إلا في الفحص الأعمق.

خطوات المسح العشر، وما تنظر إليه كل خطوة، وكم فحصًا مستقلًا تحمل.
الخطوةما تنظر إليهالفحوصاتأمثلة حقيقية
النظام والعتادالجهاز الذي تدفع ثمنه7عدد الأنوية الافتراضية، والذاكرة، وذاكرة التبديل، والقرص الحر، ومتوسط الحمل، وإصدار نظام التشغيل، ووجود أي أداة نسخ احتياطي أصلًا
بيئة تشغيل PHPاللغة التي يعمل بها المتجر18نطاق إصدار PHP، و25 امتدادًا مطلوبًا، وmemory_limit، وقيمة max_execution_time الفعلية، وdisplay_errors، وتشغيل/إطفاء OPcache، وذاكرة OPcache وعدد ملفاته، ومعدل الإصابة
صحة التطبيقLaravel و6amMart نفسه22تتبّع ملف env. في git، والترحيلات المعلّقة، والمهام الفاشلة، وتراكم الطابور، وحجم السجل، وعدد الأخطاء في السجل، وهل عمل المُجدوِل يومًا، وصحة قائمة الوحدات، والوسطاء الموثوقون، ووجود إعدادات التثبيت
البيئة (env.)الملف الواحد الذي يقرأه كل شيء14المفاتيح المكررة (الأخير يفوز، فلا يفعل تعديلك شيئًا)، ومحارف \r غير المرئية، وقيمة APP_KEY غير صالحة أو مشحونة مسبقًا، وAPP_DEBUG=true، وAPP_URL بصيغة خاطئة، ومفاتيح لا يقرؤها شيء، ومفاتيح تصبح فارغة بعد تخزين الإعدادات مؤقتًا
هوية المضيف والصلاحياتمن يملك الملفات9عنوانا IPv4 وIPv6 العامان، ومستخدم PHP، وملكية الملفات، والمجلدات الستة التي يجب أن تكون قابلة للكتابة، والملفات القابلة للكتابة من الجميع، وملف env. قابل للقراءة من الجميع، وأي شيء قابل للكتابة والتنفيذ داخل public/
خادم الويبnginx أو Apache في المقدمة17نوع المعالج، وgzip، وserver tokens، ومهلة قراءة FastCGI، ووحدات Apache وMPM، وعدد عمّال php-fpm مقابل الذاكرة، وسلسلة حجم الرفع، والضغط الحي، والتخزين المؤقت للملفات الثابتة، وHSTS، وانتهاء الشهادة
الذاكرة المؤقتة والطوابير والوقت الحيالعمل الخلفي11اتصال الطابور، وهل يعمل عامل الطابور فعلًا وتحت إشراف، ومشغّلات الجلسات والذاكرة المؤقتة، وRedis، وMemcached، وبيانات اعتماد Reverb ومخططه، وبيانات اعتماد Pusher
إعدادات قاعدة البياناتحيث يعيش المال32حجم تجمّع ذاكرة InnoDB مقابل بياناتك الحقيقية وذاكرتك، وسجل الإعادة، وطريقة التفريغ، وmax_connections مقابل عمّال php-fpm، وskip_name_resolve، وsql_mode، وترميز المحارف، وفارق الساعة بين PHP وقاعدة البيانات، ومعدل الإصابة في تجمّع الذاكرة، والجداول المؤقتة على القرص، وصلاحيات مستخدم قاعدة البيانات
الانكشاف العامبطيئةما يستطيع غريب جلبه12HTTPS، وقابلية قراءة env. عبر الويب، وقابلية قراءة git/config.، وتقديم laravel.log، وتنفيذ ملف php. مرفوع فعلًا، واستجابة Debugbar أو Telescope، ونسخ قواعد بيانات المثبِّت المتروكة، وتقديم ملفات هذه الأداة نفسها كنص
المدفوعات والبريد والرسائل النصيةبطيئةالخدمات التي يجب أن تعمل21محادثة SMTP حقيقية، وإصدار رمز Firebase حقيقي، واستدعاء ترميز جغرافي حقيقي لـGoogle Maps، وصلاحية استخدام طرق الدفع، وبيانات اعتماد بوابة الرسائل النصية، وقابلية الكتابة في قرص التخزين، ووضع الصيانة، وreCAPTCHA، والمنطقة الزمنية، والعملة

مجموع العمود 163. وصفّان يحملان قيدًا.

  • واحد من فحوصات قاعدة البيانات الـ32 — db_standalone — موجود فقط لحالة عدم وجود تطبيق يحمل بيانات الاعتماد. فهو ينوب عن الـ31 الأخرى بدل أن ينضم إليها.
  • اثنان من فحوصات المدفوعات/البريد/الرسائل النصية الـ21 هما بادئتان (sms_ وsocial_) تتوسّعان وقت التشغيل إلى صف لكل بوابة نشطة أو لكل تسجيل دخول اجتماعي مضبوط. فقد تُصدر تلك الخطوة أكثر من 21 صفًا على متجر مزدحم، أو أقل على متجر فارغ.

لا يُنفّذ أي تشغيل واحد الـ163 كلها — وإليك السبب بالضبط

  1. 01

    المتجر المثبَّت يستطيع إنتاج 162 صفًا مستقلًا كحد أقصى — ولا يُصدر أي تشغيل واحد الـ162 كلها

    db_standalone لا يُصدر إلا حين لا يوجد تطبيق، فلا يمكن لمتجر مثبَّت أن يراه أبدًا؛ وهذا هو الفحص رقم 163. والـ162 سقف، لا تشغيل.

  2. 02

    الفحص الأعمق على متجر مثبَّت يُصدر 160

    حين تكون الخطوة الأعمق قادمة، يكبح صنف خادم الويب توأمَيه المقروءين من الإعدادات — gzip وserver_tokens في nginx، أو keepalive وserver_tokens في Apache — لأن القياس الحي يجيب عن السؤال نفسه من استجابة حقيقية، ويمكن أن يختلف الاثنان (gzip مفعّل، مع قائمة gzip_types لا تتضمن application/json، نجاح بحسب الإعدادات وتحذير بحسب القياس، بفارق إعداد واحد تقريبًا). وهذان التوأمان يقعان داخل الـ162؛ وهما سبب وصول الفحص الأعمق إلى 160 بدل 162، لا زوج إضافي فوقها.

  3. 03

    «افحص الآن» يُصدر 123 — ويتخطى 39

    وتلك الـ39 هي فحوصات الانكشاف العام الـ12، وفحوصات المدفوعات/البريد/الرسائل النصية الـ21، وصفوف خادم الويب الستة التي لا تُقرأ إلا من استجابة حية — compression وstatic_cache وkeepalive_live وserver_banner وhsts وcert_expiry. أما التوأمان المقروءان من الإعدادات فموجودان في هذا التشغيل، لأن القياس الحي الذي كان سيحل محلهما لن يأتي.

  4. 04

    كلا الرقمين يعدّ مفاتيح مستقلة، والخادم الحقيقي ينزل أدنى من ذلك — فاعتمد الطرف الأدنى

    ثلاثة من مفاتيح خادم الويب الـ17 تخص خادم الويب الذي لا تشغّله (nginx يساهم بـclient_max_body_size وgzip وfastcgi_read_timeout؛ وApache يساهم بـapache_modules وapache_mpm وkeepalive)، وخطوة قاعدة البيانات تحمل أزواجًا مشروطة بالمحرك — MySQL 8.0.30+ يُبلّغ innodb_redo_log_capacity، وكل ما عداه يُبلّغ innodb_log_file_size، ولا يجتمعان أبدًا. وباحتساب انقسام خادم الويب وحده، فإن الفحص الأعمق على تثبيت nginx أو Apache يُصدر 157 كحد أقصى، و«افحص الآن» 120 كحد أقصى؛ وكل صف قاعدة بيانات مشروط بالمحرك يخفض ذلك أكثر.

  5. 05

    على خادم عادي، 40 صفًا ليس لديها ما تقرؤه

    فحوصات env. الـ14، وفحوصات تطبيق Laravel الـ12، وفحوصات منصة 6amMart الـ9، وفحوصات الوقت الحي الـ5، ليس لديها ما تقرؤه إطلاقًا — 40 صفًا، فلا يبقى إلا صف الملف التعريفي من خطوة التطبيق.

فالصيغة الصادقة إذن هي «حتى 163» — مع فحص أعمق على تثبيت 6amMart يشغّل المجموعة الكاملة المتاحة له، وهي 160 مفتاحًا مستقلًا ولا تزيد على 157 صفًا على جهاز حقيقي بخادم ويب واحد.

لا خطوة من الخطوتين البطيئتين تخمين

  • خطوة الانكشاف تجلب عناوين حقيقية من موقعك الحقيقي

    تجلب قائمة ثابتة من العناوين المعروفة بخطورتها من موقعك الحي — env/.، وgit/config/.، وstorage/logs/laravel.log/، وartisan/، وcomposer.json/، وvendor/autoload.php/، وملفَي المثبِّت database.sql وpublic.zip، وtelescope/، و_debugbar/open/، ومسار تسجيل المتاجر، وملفات هذه الأداة نفسها — وتُبلّغ بما عاد فعلًا.

  • خطوة الخدمات تُجري اتصالات حقيقية

    تُصدر JWT حقيقيًا وترسله إلى نقطة نهاية الرموز لدى Google لتثبت أن حساب خدمة Firebase لديك يعمل، وتفتح محادثة SMTP حقيقية بـEHLO / STARTTLS / AUTH، وتُجري استدعاء ترميز جغرافي حيًا لـGoogle Maps. وبيانات الاعتماد الموجودة لكن الخاطئة تفشل هنا، وهذا هو المكان الوحيد الذي يمكن كشفها فيه قبل أن يجدها عميل.

سبر SMTP يتوقف عند المصادقة. يرسل EHLO، ويتفاوض على STARTTLS، ويصادق، ثم ينهي بـQUIT — فلا يوجد MAIL FROM ولا RCPT TO ولا DATA في ذلك الصنف، ولا يُسلَّم شيء إلى أحد.

صفحتان إضافيتان ليستا جزءًا من الـ163

كلتاهما واجهة منتج حقيقية ولا تساهم أي منهما في الدرجة.

  • تتبع التوصيل الحي — 15 فحصًا

    لها صفحتها الخاصة، وتغطي عملية Reverb، ومدير العمليات، والمقبس المستمع، والجدار الناري، والوسيط، والشهادة، وبيانات الاعتماد، ومفاتيح التطبيق، وإعدادات التطبيق، ومصادقة القنوات، وهدف العميل، وتخزين الإعدادات المؤقت، والطابور، والـCDN، والمشغّل. ولمشتري 6amMart، هذه هي الميزة خلف الخريطة الحية، وتُفحص على حدة بدل دمجها في درجة الخادم.

  • تنبيه طلب تجريبي

    يرسل إشعارًا فوريًا حقيقيًا إلى جهاز متجر أو مندوب حقيقي، عبر أمر artisan الخاص بالمنصة بدل حمولة مبنية يدويًا. وهناك زر «أرِني ما سيُرسَل» يشغّله تجريبيًا، لكن الزر الافتراضي يرسل فعلًا.

كيف تحتسب الدرجة

رقم واحد — ويخبرك بما لم يستطع قياسه

كل فحص ينتهي إلى واحد من أربعة: نجاح، أو تحذير، أو مشكلة، أو غير مُقاس.

نجاحتحذيرمشكلةغير مُقاس

الرقم متوسط موزون، لا عدّ. وجدول الأوزان يمتد من 200 نزولًا إلى 11، محدَّدًا بما يكلّفك حين يكون خاطئًا — فـAPP_DEBUG=true عند 200، وصف اسم نظام التشغيل عند 12، وapp_profile وpublic_ipv6 عند 11. وأي مفتاح ليس في ذلك الجدول يسقط إلى قيمة افتراضية 10، ومفتاح مسح حي واحد يفعل ذلك بالضبط: db_standalone، وهو غير مصنَّف فعلًا ويظهر في تقرير الانحراف الخاص بالأداة نفسها. والنجاح يكسب وزنه كاملًا، والتحذير يكسب نصفه، والمشكلة لا تكسب شيئًا.

نطاقات التقدير الخمسة ومعنى كل منها.
الدرجةالتقديرما تعنيه
90 فأعلىAجاهز للإنتاج
75–89Bجيد. عالج البنود البرتقالية وأعد الفحص
55–74Cقابل للعمل، لكنك تترك أداءً حقيقيًا دون استفادة
35–54Dغير جاهز. عدة إعدادات ستؤذيك تحت الحمل
أقل من 35Fلا تطلق على هذا الإعداد

الموانع تحدّ التقدير

بعض الإخفاقات ليست «خصم نقاط» — بل تعني أن المتجر لا يستطيع البيع. فمانع واحد يحدّ الدرجة عند 74، ومانعان عند 54، وثلاثة فأكثر عند 34، فيدفع المانع نطاق التقدير إلى الأسفل ولا يقرر المتوسط الموزون سوى موضعك داخل ذلك النطاق. وبلا أي موانع إطلاقًا، يظل صف أحمر واحد يحدّ الدرجة عند 88 — فالتقدير A غير قابل للبلوغ مع وجود أي أحمر في الصفحة.

قائمة الموانع قصيرة ومحددة، وهي تسعة عشر مفتاحًا مسمّى بالضبط إضافةً إلى كل ما يبدأ بـsms_: ملف env. قابل للقراءة عبر الويب، والسجلات مقدَّمة عبر الويب، والموقع في وضع الصيانة، وتنفيذ ملف php. مرفوع، وعجز المتاجر الجديدة عن التسجيل، وعدم وجود طريقة دفع صالحة، وتعذّر الوصول إلى قاعدة البيانات، وتخزين مضبوط خطأ، وفشل البريد، وفشل الرسائل النصية، وsql_mode تنهار المنصة تحته، وترميز محارف خاطئ، وعدم عمل المُجدوِل، وشهادة تنتهي خلال 14 يومًا، وخمسة أعطال أخرى في ملف env. — قيمة APP_KEY مفقودة أو مشحونة مسبقًا، وAPP_DEBUG=true، وكتلة قاعدة بيانات معطوبة، وكتلة بريد معطوبة، ومفاتيح مكررة.

لاحظ ما ليس مانعًا عن قصد: قابلية قراءة الملفات فوق جذر المستند تُصنَّف تحذيرًا لا مانعًا، لأن ذلك كشف معلومات لا اختراق. والقائمة قصيرة عن قصد — فإن كان كل شيء طارئًا، فلا شيء طارئ.

نتيجة واحدة تستحق القول بوضوح: cert_expiry مانع لا يُقاس إلا في الفحص الأعمق، لأنه يُقرأ من مصافحة TLS حية. فـ«افحص الآن» لا يستطيع إخبارك بأن شهادتك تنتهي الأسبوع القادم.

لماذا لا يُقيَّم «غير مُقاس» أبدًا — ولماذا يهم ذلك

الفحص الذي تعذّر على الأداة تشغيله يُستبعد من الدرجة تمامًا.

وهذا أهم ما ينبغي فهمه عن الرقم. فعلى لوحة مُدارة، يكون PHP محصورًا في مجلد الموقع نفسه — وهو أمر صحيح ويستحق الإبقاء — ويعني ذلك أن proc/ وetc/os-release/ وإعدادات nginx وإعدادات تجمّع php-fpm لا يمكن قراءتها إطلاقًا. فتبقى سبعة فحوصات بلا إجابة.

والأداة التي تُقيّم تلك كإخفاقات ستعاقبك على إجراء تحصين ينبغي أن تُبقيه. والأداة التي تُقيّمها كنجاحات ستكذب. وSixPreflight لا تفعل أيًّا منهما: فتلك الصفوف تقول «غير قابلة للقراءة من هنا»، وصف واحد في قسم PHP يشرح السبب مرة ويعطي الطريقتين لتجاوزه، ولا يمسّ أي منها الدرجة.

وتنطبق القاعدة نفسها على فحص النسخ الاحتياطي. فإن لم توجد أداة نسخ احتياطي، يكون الصف غير مُقاس — لا تحذيرًا — لأن لقطات مزوّد استضافتك غير مرئية من داخل الخادم، والأداة ترفض وصف شيء بأنه معطوب وهي ببساطة لا تستطيع رؤيته.

الخادم المُحكم الإغلاق يجب ألا يحصل على درجة سيئة لأنه مُحكم الإغلاق. هذه هي القاعدة، وهي سبب جدارة الرقم بالقراءة.

قائمة الإصلاح

كل تحذير وكل مشكلة تصل إلى صفحة «ما يجب إصلاحه»، الحمراء أولًا، ثم بترتيب الوزن. ويحمل كل بند وصف أثر مشتقًا من الوزن نفسه الذي أنتج الدرجة، فلا يُقيَّم شيء بمقياس ويُرتَّب بمقياس آخر.

  • يوقف الطلبات
  • قد يوقف الطلبات
  • خطر جسيم
  • خطر
  • يبطئ الموقع
  • يستحق الإصلاح
  • ترتيب

وتخبرك كل بطاقة بما عليه الإعداد الآن، وما ينبغي أن يكون، وفي أي ملف يوجد، والأمر الذي تشغّله إن وُجد، وكيف تُثبت أن التغيير سرى. وهناك كتلة «أرِني كل سطر يجب لصقه» لكل ملف وجهة، تحتوي فقط الأسطر التي ما زالت تحتاج تغييرًا — لأن نسخ عشرين قيمة واحدةً واحدة هو ما يجعل رقمًا يسقط. وتُفصل القيم التي تُلصق عن الأوامر التي تُشغَّل في كتل منفصلة؛ فهي تذهب إلى أماكن مختلفة.

وأهداف قاعدة البيانات على البطاقات مشتقة من الحساب نفسه الذي ينتج كتلة my.cnf التي تنسخها، فلا يمكن أبدًا أن يختلف رقم الصف عن الكتلة.

وهي تتذكر أيضًا

تحتفظ الأداة بآخر 60 عملية مسح على القرص. وتعرض صفحة السجل بطاقة «منذ المسح الأخير» — ما الذي عطب حديثًا وما الذي أصلحته حديثًا — وتستطيع مقارنة أي فحصين محفوظين جنبًا إلى جنب، وتصدير تشغيل كملف نصي.

ونقطة النهاية ?api=findings للقراءة فقط تُرجع آخر فحص محفوظ بصيغة JSON للوحة معلومات أو أداة مراقبة. وهي لا تبدأ مسحًا أبدًا: فأداة مراقبة تُشغّل مسحًا كاملًا — إحدى خطواته تجلب روابط من موقعك الحي — عند كل تحديث للوحة المعلومات ستكون مولّد حمل يرتدي ثوب المراقبة. وتحمل الاستجابة run.age_seconds حتى يستطيع المستدعي أن يقول «هذه القراءة عمرها أسبوعان» بدل تقديم خبر قديم على أنه حالي.

النصف الآخر

ولها نصف ثانٍ أيضًا: سكريبت الإعداد

SixPreflight تقرأ وتشرح. أما bin/setup-6ammart.php فهو النصف الآخر من الحزمة: هو الذي يُجري التغييرات. وصفحة الوثائق المشحونة تقولها في سطر واحد — «SixPreflight تقرأ الخادم وتشرح ما يجب تغييره. وsetup-6ammart.php هو النصف الآخر: هو الذي يُجري تلك التغييرات.»

  • سكريبت bash بامتداد php.، عن قصد

    يأخذ PHP الملف، فيصطدم بأمر خروج في السطر 3، ولا يعطي المتصفح شيئًا. شغّله بـbash، لا عبر متصفح أبدًا.

  • الوضع الافتراضي تشغيل تجريبي

    فتشغيله بالخطأ لا يغيّر شيئًا. و‏--check يُبلّغ عن الحالي مقابل الموصى به. و‏--apply هو الذي يؤدي العمل.

  • 84 مدخلًا في الكتالوج، 40 منها آمنة للتطبيق دون سؤال

    مصدر حقيقته هو كتالوج الضبط نفسه الذي تستخدمه بطاقات الإصلاح — 84 مدخلًا عبر php وphp-fpm وos وmysql وnginx وlaravel و6ammart، منها 40 معلَّمة كآمنة للتطبيق دون سؤال و44 يُسأل عنها مع ذكر المقايضة في سطر واحد، أو تُطبع كتعليمة يدوية. ولا يُطبَّق أي مدخل من المجموعة الثانية بصمت أبدًا، ولا حتى مع ‎--yes.

عدد مُختلف عليه، مذكور بصراحة

صفحة docs/setup.html المشحونة تقول 84 مدخلًا، منها 40 آمنة للأتمتة و44 غير آمنة. أما ترويسة السكريبت نفسه والعدّ المباشر لملفات data/tuning-*.json.php الثلاثة فيقولان 86 / 41 / 45. والرقم المنشور الأدنى هو المستخدم أعلاه.

الكتابة في vhost حي لـnginx، وcron الخاص بالمُجدوِل، وأي شيء يشغّل عامل طابور فوق تراكم، كلها تقع في صنف ما يُسأل عنه: كل منها يعرض بالضبط ما هو مقبل على فعله ويسأل، و‎--yes لا يجيب نيابةً عنها.

فـSixPreflight إذن أداة فحص ومعها مُصلِح اختياري، لا أداة فحص وحدها.

أربعة أدلة تُشحن معها

مجموعة الوثائق تمنح المُصلِح ربع صفحاتها.

  • كيف تستخدمها

    index.html — لوحة المعلومات، وزرّا المسح، وقائمة الإصلاح، وصفحة السجل.

  • ما الذي تثبّته، ومن أين يأتي كل مفتاح اعتماد

    requirements.html — الحزم، والامتدادات، ومن أي لوحة يُصدر كل مفتاح.

  • أي PHP وقاعدة بيانات ونظام تشغيل

    versions.html — التوصية، وبطاقة النتائج المرتبة، والسبب وراء كل اختيار.

  • ماذا يفعل سكريبت الإعداد

    setup.html — الكتالوج، وأي المدخلات تُؤتمت، وأيها تتوقف وتسأل.

لماذا يتفوق هذا على التخمين

أربعة أشياء لا تستطيع فحصها بالنظر

  • مقابل حكمك أنت

    صفحة متطلبات المورّد تسرد الحدود الدنيا، والحدود الدنيا شيء خاطئ للبناء عليه. فعبارة «MySQL 5.7+ / MariaDB 10.3+» تُخفي أن النوعين يتصرفان بشكل مختلف تحت ONLY_FULL_GROUP_BY: فـMySQL 5.7.5+ يفعّله افتراضيًا ويتعامل معه، لأنه يستنتج التبعية الدالية التي تعتمد عليها هذه التقارير؛ أما MariaDB فتتركه مطفأً، وتنهار إن شغّلته — إذ يفشل تقرير الأصناف عندئذٍ بالخطأ ERROR 1055. وقد تحقق ذلك بتشغيل التقرير على الاثنين، لا بالافتراض. فيجب أن يبقى الوضع مطفأً على MariaDB، وعلى MySQL ينبغي ترك الافتراضي كما هو. والأداة تُقيّم ذلك التركيب تحديدًا، لا رقم الإصدار.

  • مقابل صفحة ()phpinfo

    ‏()phpinfo تطبع قيمًا، لا أكثر. أما قيمة max_execution_time الحقيقية لديك فهي الأصغر بين php.ini وrequest_terminate_timeout في php-fpm؛ وSixPreflight تحسب ذلك الرقم الفعلي وتُقيّمه. و‏()phpinfo لا تستطيع تحديد حجم تجمّع ذاكرة InnoDB من ذاكرتك الفعلية وعدد عمّال php-fpm الفعلي وحجم بياناتك الفعلي — وSixPreflight تفعل، ثم تفحص هل يتسع عمّال php-fpm أصلًا داخل max_connections. ولا تستطيع حساب هدف عدد ملفات OPcache من عدد ملفات PHP في مشروعك. ولا تستطيع إخبارك بما يستطيع الإنترنت جلبه من موقعك، لأنها لا تُجري طلبات.

  • مقابل كلام شركة استضافتك

    «الخادم بخير» ليست دعوى يستطيع أحد فحصها. أما هذه فتستطيع: تجلب env/. من رابطك الحي وتخبرك بما عاد. وتفتح جلسة SMTP حقيقية. وتُصدر رمز Firebase حقيقيًا. وتُجري استدعاء Maps حقيقيًا. وكل واحد من هذه واقعة بختم زمني، محفوظة في ملف تستطيع تصديره وإرساله إلى من قال لك إن كل شيء بخير.

  • وتخبرك حين لا تعرف

    الأداة التي لديها إجابة دائمًا تخمّن في مكان ما. أما هذه فتسمّي الصفوف التي تعذّر عليها قياسها وتخرجها من الدرجة.

تستخدم SixPanel بالفعل؟

تستخدم SixPanel بالفعل؟ هذه عندك أصلًا

على cPanel أو aaPanel أو CloudPanel أو خادم VPS فارغ، SixPreflight لك

فأنت تملك خادم الويب وPHP وإعدادات قاعدة البيانات وcron والشهادة، فكل كتلة لصق وكل أمر لك لتستخدمه.

وعلى خادم SixPanel هي موجودة أصلًا

يُركّب SixPanel أداة SixPreflight داخل المتجر ويعرضها كصفحة «فحص المتجر» الخاصة به. فلا تنزّل شيئًا، والإعدادات التي تملكها اللوحة يُشار فيها إلى صفحة اللوحة التي تملكها بدل كتلة لصق سيطمسها النشر التالي.

شاهد SixPanel

وملاحظة صريحة أخرى لذلك الوضع: على جهاز SixPanel تُستبعد إعدادات التطبيق نفسه — المدفوعات والبريد والرسائل النصية وFirebase والخرائط والمنطقة الزمنية والعملة — من درجة الخادم وتُدرج على حدة، لأنها مسؤولية صاحب المتجر لا الخادم. أما الحكم بلغة واضحة في الأعلى فيظل يتحدث عن العمل كله.

المتطلبات والتشغيل

المتطلبات، وكيف تشغّلها، وما الذي ستغيّره

ما تحتاجه الأداة نفسها

ما تتطلبه SixPreflight نفسها كي تعمل.
المتطلبما تحتاجه
PHP8.2 أو أحدث لتشغيل الأداة
خادم الويبأي شيء يقدّم مجلد public/ الخاص بموقعك
صلاحية الكتابةpreflight/config.php (أو الصق بصمة كلمة مرور يدويًا) وpreflight/history/
التطبيقغير مطلوب. تعمل على خادم فارغ
اللوحات التي تتعرف عليهاcPanel · aaPanel · CloudPanel · DirectAdmin · Plesk · CWP · خادم عادي

ما الذي تُقيّم خادمك مقابله

الحد الأدنى الذي تطلبه SixPreflight والرقم الذي توصي باختياره.
الموردالحد الأدنىما تختاره
الأنوية الافتراضية24
الذاكرة4 GB8 GB
القرص الحر20 GB في صفحة المتطلبات — لكن فحص القرص نفسه ينجح عند 20 GB، ويحذّر بين 10 و20، ولا يفشل إلا دون 1040 GB+
نوع التخزينSSDNVMe
نوع الاستضافةVPS أو خادم مخصصVPS مع صلاحية الجذر

صف القرص الحر يتناقض مع نفسه فعلًا، وسترى ذلك على الشاشة

‏()Requirements::platform تكتب في الكود «تحتاج 20 GB، واختر 40 GB+»، بينما يُقيّم فحص العتاد مقابل min_free_disk_gb = 10 من config.php — فالخادم الذي فيه 12 GB حرة يكون إخفاقًا في المتطلبات في جدول وتحذيرًا برتقاليًا في جدول آخر، على الصفحة نفسها.

في المتصفح — الطريقة العادية

  1. 01

    ارفع المجلد

    ارفع مجلد preflight/ كاملًا إلى مجلد public/ الخاص بموقعك.

  2. 02

    اضبط كلمة مرور في الشاشة الأولى

    افتح https://your-domain/preflight/ واضبط كلمة مرور. فهي لن تبدأ بدونها، ومن يفتحها أولًا هو من يضبطها — فافعل ذلك فور انتهاء الرفع. والحد الأدنى ثمانية محارف. وإن كان config.php غير قابل للكتابة، تقول الصفحة ذلك وتعطيك أمر ()password_hash من سطر واحد للصقه بدلًا من ذلك.

  3. 03

    اضغط زرًا

    «افحص الآن» يستغرق نحو ثانية. و«فحص أعمق» يضيف الاختبارات الخارجية.

  4. 04

    احذف المجلد حين تنتهي

    فهو محمي، لكنه يكشف تفاصيل داخلية عن الخادم ولا سبب لبقائه على موقع حي.

اختياري: قيّد الوصول بعنوان IP عبر allow_ips في config.php (عناوين مفردة أو نطاقات CIDR، بـIPv4 وIPv6). وخلف Cloudflare أو موزّع حمل يكون العنوان الذي تراه هو عنوان الوسيط، فقائمة سماح بعنوانك أنت تحبسك خارجًا — اتركها فارغة واعتمد على كلمة المرور، أو قيّد عند الوسيط. وإن حبست نفسك خارجًا فعلًا، تطبع صفحة 403 العنوان الذي وصل فعلًا وما يدّعيه الوسيط.

ما الذي ستغيّره، إن طلبت منها

المسح يقرأ. وأربع واجهات في الحزمة تستطيع الكتابة، ولا تعمل أي منها من تلقاء نفسها — فكل واحدة تحتاج زرًا أو أمرًا.

  • صفحة سجلات الأخطاء تستطيع مسح سجل

    زر «مسح» يقصّ الملف بـftruncate بدل حذفه، لأن PHP وMySQL وnginx تُبقي تلك الملفات مفتوحة، وحذف الاسم يتركها تكتب في مقبض بلا اسم. ويتطلب رمز CSRF، وإن كان الملف غير قابل للكتابة من مستخدم PHP فإنه يطبع أمر الطرفية بدل التصرف. وهذه كتابة في سجلات Laravel، وسجلات MySQL البطيئة وسجلات أخطائها، وphp-fpm، وخادم الويب — وهي ملفات لا تملكها الأداة.

  • صفحة تنبيه الطلب التجريبي ترسل إشعارًا حقيقيًا

    إلى جهاز متجر أو مندوب حقيقي، عبر أمر artisan الخاص بالمنصة. ويوجد زر تشغيل تجريبي «أرِني ما سيُرسَل»؛ لكنه ليس الافتراضي.

  • اختبار أداء قاعدة البيانات ينشئ جدوله ويحذفه

    باسم zz_preflight_bench_<random> ولاحقة عشوائية جديدة في كل تشغيل — والحجة الأمنية الكاملة أدناه.

  • ضبط كلمة مرور يعيد كتابة config.php

    وإجراء «حفظ الملف التعريفي» في لوحة المعلومات يكتب قيم الذاكرة والأنوية التي يزوّدها المشغّل في ملف الملف التعريفي للخادم. وكلاهما داخل مجلد preflight/.

وبمعزل عن ذلك، عن قصد: bin/setup-6ammart.php يطبّق التغييرات حين تشغّله بـ‎--apply. وهذا هو الغرض منه.

من سطر الأوامر — بلا تطبيق وبلا متصفح

أداتا المقارنة تعملان من سطر الأوامر فقط وترفضان الاستجابة عبر HTTP.

php preflight/server-compare.php  # قياس هذا الجهازphp preflight/server-compare.php --save=box-a.jsonphp preflight/server-compare.php --compare=box-a.json,box-b.jsonphp preflight/detect-size.php  # تسجيل الذاكرة والأنوية

وليستا الملفين الوحيدين اللذين يحملان ذلك الحارس. فأحد عشر ملفًا في الحزمة ترفض العمل خارج سطر الأوامر — هذان، وثماني أدوات اختبار من بينها tests/smoke.php، وbin/setup-6ammart.php. وtests/smoke.php هو سبب أهمية الحارس: فتركه قابلًا للبلوغ عبر الويب بلا كلمة مرور، وهي الحالة التي شُحن بها ذات مرة، جعل طلب GET مجهولًا واحدًا يكلّف إحدى عشرة ثانية من المعالج، وسبرًا كاملًا لقاعدة بيانات التطبيق، وعشرة طلبات يرسلها الخادم إلى رابطه العام، واتصالات خارجية بـGoogle Maps ومضيف SMTP المضبوط وFirebase، قابلة للتكرار بقدر ما يشاء أي أحد. والمسح الآن يسبر خادمك بحثًا عن ذلك الملف تحديدًا، لأن مجلدًا كهذا يُنسخ بين الأجهزة لسنوات.

و‏server-compare.php مستقل وبلا أي اعتماديات — فلا يحتاج تطبيقًا إطلاقًا، وهذا ما يجعله الأداة المناسبة لمقارنة خادمين تفكر في استئجارهما، قبل أن تلتزم بأي منهما.

قراءة درجات اختبار الأداء

الدرجتان مُعيَّرتان بحيث تعنيان الشيء نفسه عند أي مستوى صعوبة — فلا يغيّرهما إلا الجهاز، والأعلى أسرع. والنواة الافتراضية السحابية الحالية تقرأ نحو 100. شغّله مرتين أو ثلاثًا في ساعات مختلفة: فالجهاز القابل للاندفاع ينخفض بحدة بعد نفاد رصيده، ولن يظهر ذلك في تشغيل واحد. والجهاز المرجعي وراء ذلك الرقم 100 هو نواة افتراضية من AMD EPYC 7713 مع NVMe محلي، وPHP 8.3، وOPcache مفعّل.

وفي درجة قاعدة البيانات، راقب INSERT/sec لصف واحد تحديدًا: فمع innodb_flush_log_at_trx_commit=1 ينتظر كل إدراج مزامنة قرص، فيكون ذلك الرقم في الحقيقة زمن fsync لتخزينك. وهو أوضح فارق بين المزوّدين.

طبّق my.cnf المقترح أولًا، ثم قارن بين خادمين — وإلا فأنت تقارن إعدادات، لا أجهزة.

ما الذي تثبّته فعلًا

توصية SixPreflight نفسها، لتثبيت أصلي بلا حاويات:

  • Ubuntu 26.04 LTS
  • PHP 8.5
  • MariaDB 11.8
  • PHP 8.5

    أيًّا كان ما يحمله أرشيف إصدارك — 8.5 على Ubuntu 26.04، و8.4 على Debian 13، و8.3 على Ubuntu 24.04. وقد شُكِّك في 8.5 لأن phpspreadsheet، عبر maatwebsite/excel، يعلن php <8.5؛ وذلك إعلان في composer.json لا قياس، وفحص المنصة في composer معطّل، وتشغيل الكود على 8.5.4 أنتج تصدير جدول بيانات متطابقًا بايتًا ببايت على شجرة CodeCanyon الخالصة وعلى نسختنا المتفرّعة كلتيهما. وكلها تعمل بالسرعة نفسها فعليًا، فهذا ليس قرارًا يتعلق بالسرعة — خُذ ما يرقّعه لك إصدارك.

  • MariaDB 11.8 أو 10.11

    أيّهما، بحسب ما يحمله إصدارك — فبالقياس على المتجر نفسه، 11.8 في مواجهة 10.11 تعادُل. وما ليس تعادلًا هو النوع: فكلتا نسختَي MySQL تحتاج تغييرات في الكود قبل أن يعمل عليها 6amMart إطلاقًا، لأن بحث العناصر يضبط راية مُحسِّن خاصة بـ MariaDB، ولأن ترحيلَي فهرسة يقرآن فهرس الخادم بحالة أحرف لا يعيدها MySQL، فيبقى المخطّط مطبّقًا جزئيًا.

  • Ubuntu 26.04

    متعادل مع Ubuntu 24.04 وDebian 13 في السرعة — فالفروق المقيسة كانت أصغر من اختلاف جهاز واحد مع نفسه. وما يفرّق بينها هو نافذة الدعم: أبريل 2031 لـ 26.04، مقابل مايو 2029 لـ 24.04 وأغسطس 2028 لـ Debian 13. هذا قرار يتعلق بنافذة الدعم، لا بالسرعة.

ما الذي تغطيه أرقام المحركات تلك هي من جهاز واحد ومجموعة بيانات واحدة — نسخة قاعدة بيانات متجر حقيقي فيها 66,701 طلب — مع ترحيل كل محرك أولًا ومقارنة مجموعات الفهارس الناتجة عند 460 فهرسًا، متطابقة في الخمسة كلها، فتكون المقارنة بين المحركات لا بين فهارس مفقودة. وهي تقارن المحركات الخمسة بعضها ببعض على ذلك الجهاز الواحد. وليست بيانًا عن سرعة 6amMart عمومًا.

ولا شيء هنا يقول إن نظام تشغيل أسرع من آخر: فالفروق المُقاسة بين أنظمة التشغيل كانت أصغر من فارق جهاز واحد مع نفسه.

كيف تعمل

لا شيء في الحزمة يفحص ترخيصًا أو حسابًا أو تاريخ انتهاء، ولا شيء فيها يُبلّغ AllsWeb بأي شيء. والاتصالات الخارجية التي تُجريها كلها إلى جهات تتعامل معها أصلًا — موقعك أنت، ومضيف SMTP الخاص بك، ونقطتا الرموز والترميز الجغرافي لدى Google — إضافةً إلى خدمة صدى واحدة لعنوان IP العام لاكتشاف عنوانك أنت.

والسبب الصريح لوجود هذه الفحوصات أصلًا: خرجت من بناء هذه الخوادم وإصلاحها، وكل واحدة منها سؤال كنا سنضطر إلى سؤالك إياه على أي حال. فصاحب المتجر الذي يستطيع الإجابة عنها قبل التواصل يوفّر يومًا؛ ومن لا يستطيع يحصل على تقرير يستطيع إرساله إلى مضيفه.

حدود صريحة

اقرأ هذا قبل أن تعتمد على الرقم

  1. 01

    لا تستطيع رؤية ما لا يُظهره الخادم لها

    الفحوصات التي تحتاج shell_exec أو proc/ تتحول إلى «غير مُقاس» بدل التخمين. واللوحات المُدارة تعطّل أشياء مختلفة، فتكون بعض الصفوف فارغة على مضيف وممتلئة على آخر.

  2. 02

    على لوحة مُدارة، سبعة فحوصات بلا إجابة

    ‏open_basedir يحصر PHP في مجلد الموقع. وهذا صحيح ويستحق الإبقاء. والصفوف تقول ذلك وتُستبعد من الدرجة.

  3. 03

    «افحص الآن» لا يستطيع رؤية ستة من صفوف خادم الويب، وأحدها مانع

    الضغط، والتخزين المؤقت للملفات الثابتة، وكيب-أَلايف الحي، ولافتة الخادم، وHSTS، وانتهاء الشهادة، تُقرأ من استجابة حقيقية، فلا تظهر إلا في الفحص الأعمق — وcert_expiry في قائمة الموانع. شغّل الفحص الأعمق قبل أن تثق بنتيجة خضراء.

  4. 04

    الأداة تناقض نفسها في القرص الحر

    جدول المتطلبات يقول إنك تحتاج 20 GB حرة؛ وفحص القرص يعدّ 10–20 GB تحذيرًا ولا يفشل إلا دون 10. إجابتان لسؤال واحد، على صفحة واحدة.

  5. 05

    تُبلّغ بما يقول الخادم إنه مضبوط به

    إن كانت اللوحة تطبّق إعدادات في طبقة لا تراها هذه الأداة، فثق بواجهة اللوحة نفسها قبلها. فـcPanel وaaPanel تديران إعدادات PHP وMySQL عبر واجهتيهما وتستطيعان طمس الملفات المعدَّلة يدويًا؛ أما CloudPanel والخادم العادي فيتركان ملفات الإعدادات هي المرجع. وإن ظل إعداد يعود إلى سابقه بعد إعادة التشغيل، فتلك هي اللوحة تعيد كتابته — غيّره من اللوحة بدلًا من ذلك.

  6. 06

    اختبارات الأداء تقيس هذا الجهاز في هذه اللحظة

    فالجار المزعج يجعل كل رقم متشائمًا — راجع صف متوسط الحمل قبل استخلاص النتائج.

  7. 07

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

    فهي تجلب قائمة ثابتة من العناوين المعروفة بخطورتها من رابطك أنت وتُبلّغ بما عاد. ولا تبحث عن ثغرات غير معروفة وليست تدقيقًا للكود.

  8. 08

    شيء واحد لا يمكن اختباره فعلًا من خادم

    مفتاح Google Maps للمتصفح مقيَّد بمُحيل المتصفح، فتستطيع الأداة إخبارك بأنه مفقود، أو أنه مطابق بشكل خطير لمفتاح خادمك — لكنها لا تستطيع التحقق من مفتاح مقيَّد بشكل صحيح من جهة الخادم، وتقول ذلك بدل أن تمرّره كنجاح.

  9. 09

    أعداد الصفوف في جدول الأحجام تقديرية

    فهي تأتي من information_schema. والأعداد الدقيقة تعني مسحًا كاملًا لكل جدول على موقع حي.

  10. 10

    الرفع الأعمق من خمسة مجلدات تحت artisan يحصل على الوضع المستقل

    بصمت — فالبحث عن جذر التطبيق يتوقف عند خمسة مستويات.

  11. 11

    إنها أداة فحص أولًا

    المسح نفسه لا يغيّر شيئًا. وأربع واجهات في الحزمة تكتب حين تضغط زرها، وbin/setup-6ammart.php يطبّق التغييرات حين تشغّله بـ‎--apply. والخمسة كلها مذكورة أعلاه.

هل هي آمنة على متجر حي؟

نعم، وإليك السبب بالضبط.

  • عمليات السبر على البيانات الحقيقية للقراءة فقط بحكم البناء

    كل سبر يمر عبر دالة ()query واحدة ترفض أي شيء لا يبدأ بـSELECT أو EXPLAIN أو SHOW أو WITH — ولا يوجد في ذلك الصنف أي مسار كود يستطيع إصدار INSERT أو UPDATE أو DELETE أو ALTER أو CREATE أو DROP، وهذا هو الضمان الذي يحمل الوعد فعلًا. وتوضع الجلسة في وضع TRANSACTION READ ONLY حيثما يدعمه الخادم، فحتى الخطأ سترفضه قاعدة البيانات لا هذا الكود. ويحمل كل أمر حدًا زمنيًا قدره 15 ثانية من جهة الخادم، فلا يستطيع سبر على جدول ضخم غير متوقع أن يبقى محتجزًا للموارد — والسبر الذي يتجاوزه يُبلَّغ كـ«بطيء جدًا»، وهذا بذاته هو النتيجة. وقد تحقق ذلك: أعداد الصفوف وSUM(order_amount) متطابقة قبل وبعد.

  • اختبار أداء قاعدة البيانات لا يمسّ أي جدول تطبيق

    فكل كائن ينشئه يُسمّى zz_preflight_bench_<random> بلاحقة عشوائية جديدة في كل تشغيل؛ ويتحقق من أن الاسم غير مستخدم قبل إنشاء أي شيء ويتوقف بدل أن يمسّ جدولًا قائمًا؛ ولا يستطيع أي أمر فيه تسمية جدول لم ينشئه؛ والتنظيف مشروط بأن يكون الجدول قد أُنشئ فعلًا، ويعمل في كتلة finally وفي معالج إغلاق، ويكتب الإيداعات على دفعات صغيرة فلا يحتجز قفلًا طويلًا. وقد تحقق ذلك: أعداد صفوف الطلبات والأصناف متطابقة قبل وبعد، ولا يبقى أي جدول zz_preflight_ بعد التشغيل.

  • النطاق هو الجدول لا قاعدة البيانات، والفارق هو الوعد كله

    فهي لا تقرأ من أي جدول تطبيق ولا تكتب فيه أبدًا — وهذه صياغة ملف README نفسه وهي الصياغة الصحيحة. أما اختبار الأداء فينشئ جدولًا واحدًا خاصًا به داخل قاعدة بيانات التطبيق، باسم يولّده، ثم يزيله؛ ولا يُمسّ شيء آخر في تلك القاعدة.

  • وداخل مجلدها تكتب شيئًا واحدًا

    ‏preflight/history/، ملف واحد لكل مسح محفوظ. وتلك الملفات تصف نقاط ضعف الخادم بالتفصيل، فيُسمّى كل منها json.php. ويبدأ بأمر خروج PHP — فإن جُلب عبر HTTP ينفّذه خادم الويب، فيتوقف فورًا، ولا يُرجع شيئًا. وهذا يصح على nginx أيضًا، وهو يتجاهل htaccess..

لديك قائمة حمراء ولا وقت؟

أرسل لنا التقرير المُصدَّر. نحن نثبّت 6amMart ونضبطه ونسلّمه لك على خادمك أنت، مع توقيع مهندس كبير على الإصدار.

شاهد خدمة تثبيت 6amMartتحدّث إلى الدعم

الخادم جاهز والمتجر لا يزال بطيئًا؟

تخبرك SixPreflight إن كان الخادم جاهزًا. أما إن كان المتجر نفسه بطيئًا، فتلك مشكلة التطبيق لا الخادم — وهي ما تشحنه خدمة تثبيت 6amMart الآن فوق أحدث إصدار من 6amMart: بناء 6amMart المُحسَّن من AllsWeb قيس أسرع 10× إلى 22× — أي أسرع بنسبة 90–95% — على كل شاشة يراها العميل، مُقاسًا على الخادم الحي، مع تجاوز الـCDN.

شاهد خدمة تثبيت 6amMart

الأسئلة الشائعة

أسئلة يطرحها الناس فعلًا

  • 01كيف أعرف إن كان خادمي جاهزًا لـ6amMart؟

    شغّل SixPreflight عليه. فهي تحمل 163 فحصًا تغطي العتاد وPHP والتطبيق وملف env. والصلاحيات وخادم الويب والتخزين المؤقت وقاعدة البيانات والانكشاف العام وكل خدمة خارجية. والفحص الأعمق على تثبيت 6amMart يشغّل المجموعة الكاملة المتاحة له — 160 فحصًا مستقلًا، ولا يزيد على 157 صفًا على جهاز حقيقي يشغّل خادم ويب واحدًا؛ أما «افحص الآن» السريع فيشغّل 123، ولا يزيد على 120 على الجهاز نفسه، متخطيًا فحوصات الانكشاف الـ12 وفحوصات الخدمات الـ21 وصفوف خادم الويب الستة التي تحتاج استجابة حية. وفي الحالتين تنتهي بجملة واحدة، وتقدير بحرف من A إلى F، وقائمة مرتبة بما يجب إصلاحه أولًا.

  • 02هل تغيّر SixPreflight أي شيء على خادمي؟

    المسح لا يفعل. فهو لا يقرأ ولا يكتب في أي جدول تطبيق، ولا يرسل بريدًا أو رسالة نصية إلى أحد. وأربع واجهات تكتب فعلًا حين تضغط زرها: صفحة سجلات الأخطاء تستطيع قصّ ملف سجل، وصفحة تنبيه الطلب التجريبي ترسل إشعارًا حقيقيًا إلى جهاز حقيقي، واختبار أداء قاعدة البيانات الاختياري ينشئ جدوله ويحذفه، وضبط كلمة مرور يعيد كتابة config.php الخاص بالأداة. كما تشحن الحزمة bin/setup-6ammart.php، وهو يطبّق التغييرات عن قصد حين تشغّله بـ‎--apply.

  • 03هل تشغيلها آمن على متجر حي يستقبل طلبات؟

    نعم. فعمليات سبر قاعدة البيانات للقراءة فقط بحكم البناء — دالة ()query ترفض أي شيء لا يبدأ بـSELECT أو EXPLAIN أو SHOW أو WITH، ولا يوجد في ذلك الصنف مسار كود يستطيع إصدار كتابة، والجلسة تعمل في وضع TRANSACTION READ ONLY حيثما يُدعم. واختبار الأداء الاختياري لا يعمل إلا على جدول ينشئه بنفسه باسم عشوائي، ويزيله في كتلة finally وفي معالج إغلاق. وقد تحقق الأمران بمقارنة أعداد الصفوف وSUM(order_amount) قبل وبعد.

  • 04هل أحتاج 6amMart لاستخدامها؟

    لا. فهي تكتشف ما تنظر إليه. وعلى خادم عادي بلا تطبيق تظل تفحص العتاد وPHP وخادم قاعدة البيانات وخادم الويب والصلاحيات والانكشاف — وإن كانت فحوصات env. الـ14 وفحوصات تطبيق Laravel الـ12 وفحوصات منصة 6amMart الـ9 وفحوصات الوقت الحي الـ5 بلا ما تقرؤه، فلا يبقى إلا صف الملف التعريفي من خطوة التطبيق. وعلى أي تطبيق Laravel، يبقى كل ما يخص الخادم منطبقًا وتُتخطى الفحوصات الخاصة بـ6amMart بدل تخمينها. وعلى 6amMart، يعمل كل فحص يستطيع العمل.

  • 05أي درجة أحتاجها قبل الإطلاق؟

    ‏90 فأعلى هي A — جاهز للإنتاج. ودون ذلك، اقرأ الموانع أولًا: فمانع واحد يحدّ الدرجة عند 74 مهما كان كل شيء آخر جيدًا، ومانعان عند 54، وثلاثة فأكثر عند 34. وحتى بلا موانع، يحدّك صف أحمر واحد عند 88. والموانع هي ما يوقف المتجر عن البيع — عدم وجود طريقة دفع صالحة، وفشل البريد، وتعذّر الوصول إلى قاعدة البيانات، وقابلية قراءة env. عبر الويب، وشهادة تنتهي خلال 14 يومًا. وشغّل الفحص الأعمق قبل الوثوق بالرقم: فذلك الأخير، وخمسة صفوف أخرى لخادم الويب، لا تُقاس إطلاقًا في الفحص السريع.

  • 06لماذا تقول بعض الصفوف «غير قابلة للقراءة من هنا»؟

    لأن لوحة استضافتك تحصر PHP في مجلد موقعك، وهو أمر صحيح ويستحق الإبقاء — فلا يمكن فعلًا قراءة proc/ وetc/os-release/ وإعدادات nginx وإعدادات تجمّع php-fpm. فتبقى سبعة فحوصات بلا إجابة. وهي تُبلَّغ بصدق وتُستبعد من الدرجة تمامًا، فلا يُعاقب الخادم المُحكم الإغلاق أبدًا على كونه مُحكم الإغلاق.

  • 07هل تعمل على cPanel أو aaPanel أو CloudPanel أو خادم VPS عادي؟

    نعم — وهذا سوقها الأساسي. فهي تتعرف على cPanel وaaPanel وCloudPanel وDirectAdmin وPlesk وCWP والخادم العادي، وتعطي أوامر ومسارات تثبيت لكل لوحة. ومما يستحق المعرفة: cPanel وaaPanel تديران إعدادات PHP وMySQL عبر واجهتيهما وتستطيعان طمس الملفات المعدَّلة يدويًا، فإن ظل إعداد يعود إلى سابقه بعد إعادة التشغيل، غيّره من اللوحة بدلًا من ذلك.

  • 08هل تخبرني بما هو خاطئ فقط، أم تستطيع إصلاحه؟

    الأمران، والنصف الإصلاحي اختياري. فلوحة المعلومات تطلب منك إجراء كل تغيير يدويًا أولًا، لأن من يُجري تغييرًا يفهم ما غيّره. وحين لا يكون ذلك عمليًا، يؤدي bin/setup-6ammart.php العمل نفسه من سطر الأوامر: تشغيل تجريبي افتراضيًا، و‎--check للإبلاغ، و‎--apply للتنفيذ. وهو يطبّق فقط مدخلات الكتالوج المعلَّمة كآمنة للأتمتة — 40 من المدخلات المنشورة الـ84 — ويسأل عن البقية أو يطبعها، حتى مع ‎--yes.

  • 09أشغّل SixPanel. هل أحتاج إلى تنزيل هذه؟

    لا. يُركّب SixPanel أداة SixPreflight داخل المتجر ويعرضها كصفحة «فحص المتجر» الخاصة به. وفي ذلك الوضع تُسقط كتل اللصق لكل ما تملكه اللوحة — خادم الويب وPHP وإعدادات قاعدة البيانات وcron وعامل الطابور والشهادة — وتشير إلى صفحة اللوحة التي تملك كل إعداد، لأن القيمة التي تُلصق يدويًا هناك تضيع عند النشر التالي. وتُبقي كل فحص على مستوى التطبيق.

  • 10أي إصدار PHP وقاعدة بيانات ينبغي أن أثبّت فعلًا؟

    Ubuntu 26.04 LTS، ثم ما يحمله أرشيفه نفسه — PHP 8.5 وMariaDB 11.8 — لتثبيت مباشر. وقد شُكِّك في PHP 8.5 لأن إحدى الاعتماديات تعلن حدًّا أدنى منه، لكن ذلك الحد إعلان لا قياس: فتشغيل الكود على 8.5.4 أعطى تصدير جدول بيانات متطابقًا بايتًا ببايت على شجرة CodeCanyon الخالصة وعلى نسختنا المتفرّعة. وكل نسخة PHP وMariaDB قِيست عملت بالسرعة نفسها فعليًا، فلا شيء من هذا قرار يتعلق بالسرعة. أما الحقيقي فهو النوع: كلتا نسختَي MySQL تحتاج تغييرات في الكود قبل أن يعمل عليها 6amMart إطلاقًا، لأن بحث العناصر يضبط راية مُحسِّن خاصة بـ MariaDB، ولأن ترحيلَي فهرسة يقرآن فهرس الخادم بحالة أحرف لا يعيدها MySQL.

  • 11هل أستطيع ربط النتيجة بلوحة معلوماتي؟

    نعم. ‏?api=findings تُرجع آخر فحص محفوظ بصيغة JSON عبر مصادقة HTTP Basic، مع إصدار عقد ثابت. وهي لا تبدأ مسحًا أبدًا، وتحمل الحمولة run.age_seconds حتى تستطيع لوحة معلوماتك أن تقول «عمر هذه القراءة أسبوعان» بدل تقديم خبر قديم على أنه حالي.

مجلد واحد، إجابة واحدة

ارفع مجلدًا واحدًا. افتحه في المتصفح. احصل على إجابة واحدة.

دائمًا الإصدار الحالي، ويعمل على خادمك أنت. يقرأ أولًا، ويخبرك بما لم يستطع قياسه بدل التخمين.

احصل على SixPreflightشاهد خدمة تثبيت 6amMart

لا شيء في الحزمة يفحص ترخيصًا أو حسابًا أو تاريخ انتهاء، ولا شيء فيها يُبلّغ AllsWeb بأي شيء.

AllsWeb

AI + Automation + Human Engineers — مشاريع جاهزة للإنتاج تُسلَّم في 1-3 أيام. تثبيت وتخصيص ورفع تطبيقات ودعم مُدار لأي سكريبت أو قاعدة كود.

  • hi@allsweb.com
  • +91 72328 80007

استكشف

  • وكيل الذكاء الاصطناعي
  • أتمتة الذكاء الاصطناعي وسير العمل
  • تحسين البحث بالذكاء الاصطناعي
  • جميع الحلول
  • جميع السكريبتات الجاهزة
  • جميع الخدمات
  • 6amMart المُحسَّن
  • SixPanel
  • SixPreflight
  • خدمة التحديث / الترقية
  • إصلاح Play Store لـ 16 كيلوبايت
  • العروض والكوبونات

الشركة

  • من نحن
  • وظّفنا
  • الدعم والتواصل
  • برنامج الشركاء
  • قريباً

القانوني

  • الشروط والأحكام
  • سياسة الخصوصية
  • سياسة الاسترداد
  • سياسة الدفع
  • سياسة الدعم
  • سياسة الاستخدام المقبول
  • سياسة ملفات تعريف الارتباط
  • شروط الشركاء
  • إخلاء المسؤولية

© 2026 AllsWeb. جميع الحقوق محفوظة.