الدليل الشامل لتتبع مشكلة Internal Server Error وكيفية حلّها

30 أبريل، 2017 نورس علي

إدارة مواقع الويب, ووردبريس

الوسوم:,

إذا لم يكن لديك الوقت الكافي لقراءة الشرح الآن، يمكنك تحميل ملف الشرح بصيغة PDF في أسفل الصفحة للقراءة والإطلاع دون الحاجة لأي اتصال بالانترنت.
تظهر رسالة خطأ 500 | Internal Server Error عندما لا يكون باستطاعة السيرفر/الخادم (مُضيف الموقع الإلكتروني) تحديد سبب خطأ حلّ به. من الصعب معرفة سبب هذا الخطأ من الوهلة الأولى، علينا القيام بعدة خطوات لتحديد سبب هذه المشكلة و إصلاحها فيما بعد.

خطوات حل خطأ 500 | Internal Server Error

1. التحقق من ملف HTAccess.
2. التحقق من صحة أذونات ملفات الموقع.
3. التحقق من عدم تداخل الإضافات (في حال استخدام برمجية إدارة محتوى).
4. التحقق من الإعدادات المُتعلّقة بــِ PHP
5. التحقق من ملفات PERL/CGI.
6. الحل النهائي ليس بيدك.

التحقق من ملف HTAccess.

يتضمن ملف HTAccess.بعض إعدادات برنامج سيرفر/خادم الويب لمسارات الموقع الإلكتروني. أي خطأ في كتابة التعليمات البرمجية (الكود البرمجي) في ملف HTAccess. يؤثر سلباً على عمل السيرفر، وكما يؤدي ذلك إلى ظهور رسالة خطأ 500.
الآن علينا تحديد إذا كان مصدر الخطأ من ملف HTAccess.:
1. تغيير اسم ملف htaccess. الموجود في مسار PUBLIC_HTML. يمكنك تسميته بأي اسم تريد مثلاً: htaccessOld.

2. مسح التخزين المؤقت في المتصفح (الكاش).
3. إعادة تحديث صفحة الموقع الإلكتروني (انقر على زر إعادة تحميل أو اضغط على F5).
إذا اختفت رسالة الخطأ، هذا يعني أن سبب المشكلة هو خطأ في أحد التعليمات البرمجية في ملف htaccess.، قم بتصحيح ذلك الخطأ وأعد تسمية الملف إلى اسمه الصحيح htaccess.
إذا لم تختفي الرسالة، هذا يعني أن سبب المشكلة ليس ملف htaccess. لا تنسَ إعادة تسمية ملف htaccess. إلى اسمه الصحيح، و الانتقال للخطوة الثانية لمعرفة سبب المشكلة.

التحقق من صحة الأذونات (الصلاحيات)

يجب أن تكون أذونات ملفات موقعك الإلكتروني صحيحة، وخاصة إذا كنت تستخدم برمجية إدارة المحتوى مثل جوملا أو ووردبريس. إذا لم يتم وضع الأذونات الصحيحة لملفات موقعك الإلكتروني، سيتوقف موقعك عن العمل وستظهر رسالة خطأ 500 أو Internal Server Error. في ووردبريس مثلاً: يجب أن تكون الأذونات الصحيحة للملفات 0644، وللمجلدات 0755.

خطوات حل خطأ 500: التحقق من أذونات الملفات

أذونات ملفات غير صحيحة

في الصورة السابقة: يبدو أن أذونات ملف wp-config.php خاطئة، حيث يجب أن تكون أذونات هذا الملف 0644 بدلاً من 0000. ونتيجة لهذه الأذونات الخاطئة، توقف الموقع عن العمل وظهرت رسالة HTTP ERROR 500.
الأذونات الخاطئة قد تسبب خطأ 500

ظهور رسالة خطأ 500 نتيجة أذونات خاطئة

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

التحقق من عدم تداخل الإضافات

في حال كنت تستخدم برمجية إدارة المحتوى مثل ووردبريس، جوملا أو غيرها، فمن الاحتمال أن تسبب أحد الإضافات (Plugins) ظهور رسالة HTTP ERROR 500. علينا القيام بالخطوات التالية للتحقق إذا كانت إضافات الموقع تسبب هذا الخطأ أو لاً:

1. الذهاب إلى مجلد الإضافات الموجود على الموقع، في ووردبريس: مسار مجلد إضافات هو: wp-content/plugins. توجد كل الإضافات المُثبتة (المُفعّلة أو غير المُفعّلة) في هذا المجلد.
2. تغيير اسم مجلد الإضافة المُثبتة حديثاً. على سبيل المثال: في حال كان اسم مجلد الإضافة -NawPlugin-، قم بتغيير هذا الاسم إلى -NewPlugin0-. وذلك لتعطيل هذه الإضافة.
3. إعادة تحميل صفحة الموقع الإلكتروني الرئيسية (يُفضّل مسح التخزين المؤقت -Cache- في المتصفح قبل ذلك).
4. إذا اختفت رسالة الخطأ، هذا يعني أن سبب الخطأ هو وجود هذه الإضافة.
5. إذا لم تختفي رسالة الخطأ، فقم بتكرار الخطوة رقم 2 و 3 على جميع الإضافات المُثبتة على الموقع حتى تختفي الرسالة.
6. إذا لم تختفي الرسالة، هذا يعني أن الإضافات المُثبتة ليست هي سبب المشكلة.

كيفية حل مشكلة خطأ 500 بتعطيل الإضافات

تعطيل عمل إضافة ووردبريس بتغيير اسم هذه الإضافة

التحقق من الإعدادات المُتعلّقة بــِPHP

أهم قيم PHP التي يجب ضبطها بشكل مناسب للموقع الإلكتروني:
الحد الأقصى لحجم ذاكرة سكربت PHP:
ويعني ذلك: الحد الأقصى المسموح من حجم الذاكرة الذي يُمكن أن يستخدمه كود PHP. فإذا احتاج كود PHP حجم ذاكرة أكبر من الحد الأقصى لحجم ذاكرة PHP، فذلك يؤدي إلى حدوث خطأ. لإصلاح هذا الخطأ: علينا رفع قيمة الحد الأقصى لحجم ذاكرة PHP.
الحد الأقصى لحجم البيانات المُرسلة من خلال طريقة POST:
طريقة POST هي أحد الطرق في PHP لإرسال بيانات من متصفح الزائر إلى السيرفر. وبالتأكيد هناك حد أقصى لحجم البيانات المسموح إرساله. أحياناً يتم إرسال حجم بيانات أكبر من الحد الأقصى به، فيؤدي ذلك إلى حدوث خطأ. الحل بسيط في هذه الحالة هو رفع الحد الأقصى للبيانات المُرسلة بطريقة POST.
الحد الأقصى لوقت تنفيذ سكربت PHP:
يُمكن أن تحتوي ملفات PHP على أوامر قواعد بيانات طويلة، والتي تحتاج لوقت طويل للتنفيذ أكبر من الحد الأقصى المسموح به (الافتراضي 30 ثانية). وفي هذه الحالة يحدث خطأ لعدم حصول كود PHP و SQL على الوقت اللازم للتنفيذ. لحل هذه المشكلة: يجب رفع الحد الأقصى لتنفيذ سكربت PHP.

كيفية ضبط قيم PHP

الطريقة الأولى:
من خلال التعديل على ملف PHP.IN الموجود في مسار PUBLIC_HTML. في الكود التالي: تم رفع حجم الذاكرة الأقصى إلى 64 ميغا (memory_limit = 64M ) ، الحجم الأقصى للبيانات المُرسلة عبر طريقة POST إلى 32 ميغا (post_max_size = 32M ) ، والوقت الأقصى للتنفيذ إلى 40 ثانية (max_execution_time = 40). يمكنك تغيير هذه القيم حسب ما يناسبك (انتبه: يجب أن تكون قيمة post_max_size أقل من قيمة memory_limit)

memory_limit = 64M
post_max_size = 32M
max_execution_time = 40

الطريقة الثانية:
من خلال التعديل على ملف htaccess. الموجود في مسار PUBLIC_HTML:


<IfModule mod_php5.c>
php_value memory_limit 64M
php_value post_max_size 32M
php_value max_execution_time 40
<IfModule/ >

الطريقة الثالثة (الأسهل):
من خلال السي بانل. هذه هي الطريقة الأسهل ولكنها ليست متاحة في كل الاستضافات.
تتيح لي الاستضافة التي استخدمها حاليّاً (غرين غيكز) هذا الخيار، حيث يمكنني بخطوات بسيطة تعديل القيم المُتعلقة بـــِ PHP:
1. الذهاب إلى قسم البرنامج في الصفحة الرئيسية في السي بانل.
2. اختيار * Select PHP Version * وثم التصفح إلى * Switch to PHP Options *
3. قم بتغيير القيم بما يناسبك، ثم انقر على *حفظ *

كيفية ضبط إعدادات PHP.IN في السي بانل

التحقق من ملفات PERL/CGI

 
تجاهل هذه الخطوة إذا كنت لا تستخدم ملفات PERL/CGI، أو لم تقم بتعديل على أي من هذه الملفات.
في حال حصولك على رسالة ERROR 500 عند تصفحك لملفات CGI/PERL، فهناك عدة أسباب مُحتملة لهذا الخطأ:
1. خطأ في كتابة التعليمات البرمجية في هذه الملفات.
2. أذونات خاطئة لبعض ملفات PERL/CGI: يجب أن تكون الأذونات لهذه الملفات 755.
3. عدم تحديد المسار الصحيح لــِ PERL المُثبتة على السيرفر: يجب إضافة المسار الصحيح في بداية ملف PERL/CGI على الشكل الآتي:


#!/usr/bin/perl
# Write Your Script Here

الحل النهائي ليس بيدك

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

مُلخص الحديث

قد يحدث خلل معيّن في الموقع الإلكتروني مما يؤدي إلى توقفه عن العمل، وظهور رسالة Internal Server Error | Error 500. لمعرفة سبب هذا الخطأ، علينا القيام بعدة خطوات لتتبع هذه المشكلة وحلّها بناءً على ذلك. بدايةً علينا التحقق من المشتبه الأول هو ملف htaccess.، ثم علينا التحقق من أذونات ملفات موقع الويب، و التأكد من عدم تداخل أي إضافات في حال استخدام برمجية إدارة محتوى مثل الووردبريس. يُمكن أن يكون سبب المشكلة هو قيم خاطئة لبعض إعدادات PHP، في هذه الحالة علينا وضع القيم المناسبة لملفات PHP المُستخدمة. قد يكون مصدر خطأ 500 هو ملفات PERL/CGI في حال تم استخدامها أو التعديل عليها مؤخراً.