الأربعاء، 23 مارس 2016
حلول المشكله المزمنه Internal Server Error 500 بسهولة
السلام عليكم ورحمة الله وبركاتة
كثيرا من أصحاب السيرفرات ما يعاني من المشكله المزمنه Internal Server Error 500 هذه المشكله كثيرا ما تواجه اصحاب المواقع والسيرفرات وبالاخص السيرفرات القائمه علي الموديل suphp او التي تعمل في بيئه cgi هذا الخطأ قد يكون ناتج عن مشكلة ما داخل السيرفر او ناتجه من عن مشكله ما داخل احد اليوزرات الموجوده بالسيرفر بكل تأكيد يمكن حل المشكله بمجرد الرجوع الي ملف اللوج الخاص بالـ Apache نقوم بتنفيذ الامر التالي لرؤيه الايرور لوج الخاص بالاباتشي والموجوده به سبب المشكله
رمز PHP:
tail -f /usr/local/apache/logs/error_log
بعض الاسباب التي من الممكن ان تظهر لك والتي تسبب المشكله 1- أخطاء التصريحات
رمز PHP:
SoftException in Application.cpp:357: UID of script "/home/user/public_html/file.php" is smaller than min_uid
رمز PHP:
SoftException in Application.cpp:422: Mismatch between target UID (511) and UID (510) of file "/home/user/public_html/file.php"
رمز PHP:
SoftException in Application.cpp:264: File "/home/user/public_html/file.php" is writeable by others
ميع هذه الاخطاء تأتي او تنتج عن مشكله في التصريحات او الصلاحيات
الخاصه بالملفات الموجود داخل الموقع او اليوزر وتنتج عن اما ان يكون الملف
ممتلك لمستخدم اخر او له صلاحيات لا تتيح للمستخدم بتشغيله وغير مسموح له
بتنفيذه كما هو موجود بملف اعداد suphp.conf حل هذه المشكله كالتالي نقوم
بتنفيذ الاوامر التاليه مع مراعاة تغيير USER بـ اليوزر الخاص بالموقع
الموجود به المشكله
رمز PHP:
find /home/USER/public_html/* -type d -exec chmod 755 {} \;
find /home/USER/public_html/* -type f -exec chmod 644 {} \;
في حال لم يتم اصلاح المشكله بالاوامر السابقه يمكنك تنفيذ الاوامر التاليه في الشل
رمز PHP:
cd /root
wget http://egprovider.com/Bash/fixpermissions.sh ./fixpermissions.sh USER
مع مراعاة تغيير USER بـ اليوزر الخاص بالموقع الموجود به المشكله 2-
أخطاء ملف .htaccess أذا كان السيرفر يعمل في بيئه CGI/suPHP فأنه لن يسمح
بتفعيل او عدم تفعيل القيم والمتغيرات الخاصه بأعدادات php في ملف
.htaccess لذا ستحتاج الي htscanner لكي تسمح للأباتشي بتحليل تلك
المتغيرات وتغيرها مع ما يتوافق مع اعدادات php.ini داخل مسار المستخدم
نفسه او انك تقوم بألغاء تلك المتغيرات نهائيا وحذفها من ملف .htaccess بعض
اخطاء ملف .htaccess
رمز PHP:
/home/user/public_html/.htaccess: Invalid command 'php_flag', perhaps misspelled or defined by a module not included in the server configuration
3- أخطاء الصلاحيات أفتراضيا ملفات php و المجلدات الرئيسيه لليوزر لا
يمكن ان تملك المجموعه او مستخدم اخر تصريح الكتابه ولا يمكن ان تكون
مملوكه ليوزر اخر علي نفس النظام غير اليوزر الذي يملك المجلد الرئيسي
الموجود به الملفات او المجلدات بالاضافه الي ان suphp لا يسمح بتشغيل
الملفات المطلوبه من خلال المتصفح من المواقع التي ليست داخل المجلد
الرئيسي لليوزر لذا لابد من التاكد من ان الاسكربتات او الملفات غير مملوكه
لجروب او ليوزر اخر غير الاساسي ويمكنك ان تعرف الخطأ من متابعه اللوج
الخاص بـ suphp
رمز PHP:
/usr/local/apache/logs/suexec_log
لذا ننصح بتعديل تلك الاعدادات داخل ملف suphp.conf
رمز PHP:
pico /home/cpeasyapache/src/suphp.conf
ثم تقوم بتعديل تلك القيم بالشكل التالي
رمز PHP:
; Security options
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
اتمني ان اكون قد وفقت في الشرح وتمنياتي بالتوفيق للجميع
tail -f /usr/local/apache/logs/error_log
رمز PHP:
SoftException in Application.cpp:357: UID of script "/home/user/public_html/file.php" is smaller than min_uidSoftException in Application.cpp:422: Mismatch between target UID (511) and UID (510) of file "/home/user/public_html/file.php"SoftException in Application.cpp:264: File "/home/user/public_html/file.php" is writeable by others
رمز PHP:
find /home/USER/public_html/* -type d -exec chmod 755 {} \;
find /home/USER/public_html/* -type f -exec chmod 644 {} \;cd /root
wget http://egprovider.com/Bash/fixpermissions.sh ./fixpermissions.sh USER /home/user/public_html/.htaccess: Invalid command 'php_flag', perhaps misspelled or defined by a module not included in the server configuration
رمز PHP:
/usr/local/apache/logs/suexec_log pico /home/cpeasyapache/src/suphp.conf ; Security options
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
