الإنترنت مليء بالأخطاء التي تواجهنا بشكل يومي. وكثيراً ما نتعرض لرموز غريبة كـ403 أو 400 أو 502 ولا نفهم معناها. سنتعرف اليوم على أحد هذه الأخطاء وهو خطأ الخادم الداخلي 500 Internal Server Error، ونتحدث عن سبب حدوثه وأخيراً سنوضح كيف يمكن حل مشكلة http 500 خطأ خادم داخلي سواءً كنت زائراً تريد الوصول لموقع محدد أو كنت صاحب هذا الموقع بالفعل.
ما هو خطأ الخادم الداخلي 500 Error؟
التعريف بـStatus Codes
بدايةً علينا أن نوضح بعض المصطلحات وما الذي يحدث فعلاً عندما تكتب عنوان موقع ما في المتصفح.
في كل مرة تزور فيها موقعاً ما فإن المتصفح على جهازك يرسل طلباً Request إلى الخادم Server الذي يستضيف الموقع المطلوب. يستقبل الخادم هذا الطلب ويعالجه ومن ثم يُرسل المعلومات التي طلبها المتصفح مع HTTP header ورمز معيّن يُدعى Status Code.
لا يُعرَض هذا الـStatus Code دوماً مالم يكن يمثل خطأً محدداً. ويمثل هذا الرمز الوسيلة التي يتبعها الخادم لإعلامك أن شيئاً ما لم يتم بالشكل الصحيح. ويمكن من خلال هذا الرمز توقّع المشكلة وبالتالي محاولة حلّها.
لكل مجموعة من الرموز دلالة خاصة، فمثلاً:
- الرموز 100-199 تمثل رموزاً إعلامية Informational، أي أنها تعلمك بالذي يفعله الخادم، فمثلاً الرمز 100 يعني أن الخادم سيستجيب والرمز 101 يعني أن الخادم سيغيّر من البروتوكول المُستخدم وهكذا
- الرموز 200-299 تدل على نجاح الطلب، وبالتالي لا تراها عادةً لأنك سترى الصفحة التي طلبتها
- الرموز 300-399 تدل على وجود عملية إعادة توجيه Redirect بمختلف أشكالها
- الرموز 400-499 تمثل مجموعة أخطاء على حساب العميل أو الزائر
- الرموز 500-599 تمثل مجموعة من الأخطاء على حساب الخادم Server
الخطأ 500 خطأ الخادم الداخلي Internal Server Error
مما سبق يمكننا أن نقول أن الخطأ 500 يعد من أخطاء الخادم. ويحدث هذا الخطأ عندما يواجه الخادم مشكلةً غير مُحددة تمنعه من الاستجابة للطلب الذي أرسله المتصفح. أي أن الخطأ 500 هو خطأ عام يدل على أن الخادم يواجه مشكلة ما، لكنه -أي الخادم نفسه- لا يستطيع تحديد ما هي المشكلة بالضبط.
وعلى الرغم من أن الخادم لا يستطيع عادة تحديد سبب المشكلة، إلّا أن هذا الخطأ ينتج عادةً عن:
- ملفات التخزين المؤقتة Cache الخاصة بالمتصفح
- ملف .htaccess تالف أو تجاوز حدود ذاكرة PHP
- مشاكل تتعلق بالإضافات أو القوالب المستخدمة في الموقع
- ملفات تالفة في الووردبريس المنصب نفسه
- مشاكل في الخادم الذي يحتوي على قواعد البيانات
يختلف شكل الصفحة التي تظهر عند حدوث خطأ الخادم الداخلي 500، وذلك باختلاف الموقع والخادم الذي يستضيفه والمتصفح الذي يستخدمه الزائر. ومن الأمثلة عليها:
- 500 Internal Server Error
- HTTP 500
- Internal Server Error
- HTTP 500 – Internal Server Error
- 500 Error
- HTTP Error 500
- 500 – Internal Server Error
- 500 Internal Server Error. Sorry something went wrong.
- 500. That’s an error. There was an error. Please try again later. That’s all we know.
- The website cannot display the page – HTTP 500.
- Is currently unable to handle this request. HTTP ERROR 500.
يمكن أن يبدو الخطأ بالشكل التالي في مواقع ووردبريس:
يمكن أن يظهر الخطأ أيضاً على شكل صفحة بيضاء تماماً، خصوصاً عند استخدام متصفح مثل فايرفوكس أو سفاري.
حتى أن موقع اليوتيوب نفسه قد يتعرض لهذا النوع من الأخطاء
حل مشكلة HTTP 500 خطأ خادم داخلي
من أين عليك أن تبدأ لحل مشكلة الخطأ 500؟ في الحقيقة فإن الخطأ هذا لا يساعدك أساساً على حل المشكلة لأنه لم يحدد لك سببها في المقام الأول، ولكن من خبرتنا التقنية يمكننا أن نقول لك أن هذا الخطأ يظهر إما بسبب مشكلة من طرف المستخدم أو من طرف الخادم. لذا ننصحك بتجريب الحلول التالية:
1. تحديث الصفحة
قد يكون هذا الحل بديهياً، ولكنه الخطوة الأولى التي يجب عليك أن تُجربها لأنها سهلة ولا تحتاج الكثير من الوقت. كل ما عليك فعله هو الانتظار لدقيقة ثم تحديث الصفحة. فقد تكون المشكلة في أن الخادم يعاني من حمل زائد بكثرة الطلبات.
يمكنك ريثما تعيد محاولة فتح الصفحة تجريب فتحها باستخدام متصفح مختلف. أو حتى تجريب فتح الموقع باستخدام جهاز آخر أو استخدام الموقع downforeveryoneorjustme.com للتأكد إن كانت المشكلة تحدث عند الآخرين أم لا.
لاحظنا أيضاً أن مشكلة خطأ الخادم الداخلي 500 هذه تحدث أحياناً بعد تحديث إضافة أو قالب في مواقع الووردبريس. إلا أنها تزول تلقائياً بعد بعض الوقت، لذا فإن تحديث الصفحة سيحل المشكلة غالباً.
2. حذف ملفات التخزين المؤقت في المتصفح
وهذا الحل البسيط من الحلول التي يجب تجريبها قبل الانتقال للحلول الأصعب الأخرى.
قد تكمن المشكلة في احتفاظ المتصفح ببعض ملفات التخزين المؤقتة التالفة أو القديمة، ولذا فإن حذفها قد يحل المشكلة.
سننتقل الآن لمجموعة الحلول التقنية التي تخص أصحاب المواقع. ولكن إذا كان الموقع لا يزال لا يعمل عندك فيمكنك الانتظار بعض الوقت قبل التجريب مرة أخرى أو التواصل مع المسؤولين عنه ليقوموا بإصلاح المشكلة.
3. التحقق من وجود أي أخطاء في الاتصال بقاعدة البيانات
قد ينتج الخطأ 500 عن مشاكل في الاتصال بقاعدة البيانات. قد تعرض بعض المتصفحات هذا عند حدوثه -أحياناً وليس دائماً- بالشكل التالي.
تكون الصفحة في هذه الحالات فارغة تماماً وذلك لعدم تمكن المتصفح من الحصول على أي بيانات ليعرضها لأن الاتصال لم يتم بشكل صحيح. وهذا لا يعني فقط أن الـfront-end من موقعك لن يظهر بل سيمنعك ذلك من الدخول للوحة تحكم الووردبريس.
يمكن أن تحدث هذه المشكلة لعدة أسباب مثل:
- السبب الأشيع أن معلومات تسجيل الدخول الخاصة بقاعدة البيانات غير صحيحة. فكما نعرف أن البيانات المستخدمة لتسجيل الدخول وربط الموقع بقاعدة بيانات MySQL تختلف عن تلك التي تستخدم في لوحة التحكم cPanel أو لوحة تحكم ووردبريس.
- وجود ملفات تالفة في قاعدة بيانات ووردبريس. كأن يكون هناك الكثير من العناصر المتغيرة في القوالب والإضافات، أو أن المستخدم يقوم بشكل متكرر بحذفها وإعادة تنصيبها، وفي هذه الحالات فإن قواعد البيانات ستصبح تالفة. وهذا كله قد يسبب المشكلة السابقة.
- وجود ملفات تالفة في أثناء تنصيب الووردبريس نفسه، وقد يكون ذلك ناتجاً أحياناً عن هجمات بهكر.
- مشاكل تتعلق بالسيرفر الذي يستضيف قواعد البيانات، كأن يكون الخادم يعاني من حمل زائد أو كثرة الطلبات التي يتعامل معها في ذات الوقت. يحدث هذا خصوصاً عند استخدام استضافة مشتركة shared host.
4. التحقق من الإضافات والقوالب
كثيراً ما تسبب الإضافات والقوالب مشاكل عديدة للمواقع، ولا يقتصر ذلك على الخطأ 500. ولكننا لاحظنا أن إضافات الـSlider التي تتضمن صور متحركة أو تلك التي تتعامل مع الإعلانات.
كثيراً ما ستلاحظ حدوث الخطأ 500 بعد تفعيل إحدى الإضافات أو القوالب. ولهذا السبب فإننا ننصح دوماً بتنزيل الإضافات أو إجراء التعديلات على الموقع بشكل تدريجي، بحيث إذا حدثت مشكلة بإحدى هذه التحديثات فإنك ستستطيع تحديد سببها بسهولة.
لحل هذه المشكلة عليك تعطيل كل الإضافات، علماً أن تعطيل deactivate الإضافات لن يفقدك أي بيانات، بل ستستعيد الشكل الطبيعي لموقعك بمجرد إعادة تفعيلها.
إذا كنت تستطيع الوصول للوحة تحكم ووردبريس فيمكنك تعطيل جميع الإضافات بنقرة واحدة.
إذا عاد الموقع للعمل دون أن يظهر الخطأ 500 فهذا يعني أن إحدى الإضافات هي المسببة للمشكلة. وعندها عليك البدء بتفعليها واحدةً تلو الأخرى لتحديد الإضافة بدقة، ومن ثم مراسلة مطوريها لإصلاح المشكلة أو العودة لنسخة احتياطية قديمة من الموقع تتضمن النسخة الأقدم من الإضافة، إذ أنه تحديث الإضافات يكون أحياناً سبب المشكلة.
إذا لم تكن تستطيع الوصول للوحة تحكم ووردبريس فيحب هنا استخدام FTP client (ننصحك هنا بـFileZilla).
بعد الدخول لملفات الموقع عليك تحديد مجلد يُدعى بـpublic_html ثم مجلد wp-content ثم plugins. ستجد ضمن مجلد plugins عدة مجلدات فرعية تحتوي على ملفات كل إضافة. ولإيقاف تفعيل كل الإضافات عليك إعادة تسمية مجلد plugins وليكن الاسم الجديد مثلاً plugins.deactivated لتستطيع تمييزه.
والآن افحص الموقع مجدداً وانتبه إن عاد للعمل أم لا. في حال نجح هذا الحل سيتحتم عليك إيجاد الإضافة المسببة للمشكلة بإعادة تسمية المجلد باسمه الأصلي ومن ثم تغيير اسم المجلدات الفرعية التي يحتوي عليها واحداً تلو الآخر.
يجب عموماً التحقق من أن كل الإضافات والقوالب ونسخة الووردبريس محدثة لآخر نسخة، وأنها أيضاً تتوافق مع إصدار PHP.
5. أعد تنصيب الووردبريس
قد تكون بعض ملفات الووردبريس تالفة خصوصاً إذا كان موقعك قديماً. من السهل عموماً إعادة رفع ملفات الووردبريس بدلاً من حذفه ومن ثم إعادة تنصيبه مجدداً الأمر الذي قد يؤثر على إضافاتك وقوالبك.
يتيح الووردبريس عموماً العودة لنسخة قديمة وتنصيبها من صفحة التحديثات كما هو موضح بالصورة. أو قد تضطر أحياناً لإعادة تنصيب الووردبريس واستبدال الملفات القديمة من خلال تنزيل نسخة جديدة من موقع WordPress.org ومن ثم رفعها واستبدال الملفات القديمة باستخدام FTP.
6. التحقق من الصلاحيات
يمكن أن تسبب الأخطاء في صلاحيات الوصول للملفات أو المجلدات للخطأ 500. حيث يجب أن تكون هذه الصلاحيات كالتالي:
- كل الملفات يجب أن تكون 644 (-rw-r–r–) أو 640.
- كل المسارات يجب أن تكون 755 (drwxr-xr-x) أو 750.
- لا يجب أن يكون أي مسار 777.
- ملف wp-config.php يجب أن يكون 440 أو 400 لمنع الآخرين على الخادم من قراءة هذا الملف.
7. زيادة حد ذاكرة PHP
لأن الخطأ 500 يمكن أن ينتج عن استهلاك كامل ذاكرة PHP المخصصة. يمكنك زيادة الذاكرة المتاحة لـPHP في cPanel من خلال اختيار Select PHP Version.
ثم عليك اختيار Switch to PHP Options
ثم اختر memory_limit وغيّر القيمة ثم اضغط على Save
8. إصلاح ملف .htaccess
وقد تحدثنا في مقال سابق عن هذا الملف بالتفصيل. يتواجد هذا الملف في الخوادم التي تعمل بنظام Apache وقد يكون هو سبب المشكلة في حال وجود أي أخطاء فيه.
للتحقق من ذلك عليك الدخول إلى لوحة التحكم أو استخدام FTP وتحديد موقع ملف .htaccess كما شرحنا سابقاً. ثم عليك إعادة تسميته لـ.htaccess.old مثلاً، ومحاولة فتح الموقع مجدداً، فإذا عاد الموقع للعمل فهذا يعني أن الملف هو سبب المشكلة، وإلّا فعليك التراجع عن تغيير تسميته لكي لا يسبب ذلك أي أخطاء في الموقع.
أما إذا كان الملف هو سبب المشكلة فعلاً فعليك إنشاء ملف جديد وإدخال التعليمات التالية ومن ثم رفعه إلى الخادم.
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
وهذا هو الجزء الأساسي من ملف .htaccess، علماً أن بإمكانك إضافة وظائف أخرى كإنشاء عمليات إعادة توجيه أو إنشاء صفحات 404 مخصصة أو غيرها.
10. تحقق من وجود أي مشاكل في الخادم مع مزوّد خدمة الاستضافة
بما أن خطأ الخادم الداخلي 500 يمكن أن ينتج عن انتهاء صلاحية PHP أو أخطاء قاتلة في PHP ناتجة عن إضافات محددة فإن من الأفضل دوماً العودة للشركة المقدمة لخدمة استضافة موقعك لحل هذه المشكلة. من الأمثلة على الحالات التي تتطلب التواصل مع شركة الاستضافة الخطأ التالي:
PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_error()...
وهكذا يمكننا القول أننا تحدثنا عن كل الحلول الممكنة لحل مشكلة http 500 خطأ خادم داخلي. هل لديك أي أسئلة؟ أو هل تعرف أي أخطاء أخرى تُريد معرفة المزيد عنها؟ شاركها معنا لنتحدث عنها في مقالاتنا التالية.