أخطاء 500 والتشخيص
كيفية تشخيص وإصلاح أخطاء 500 Internal Server Error.
الخطوة 1: مراجعة السجل
أهم خطوة على الإطلاق. يسجّل Laravel جميع الأخطاء في:
tail -100 storage/logs/laravel.log
سيعرض لك هذا رسالة الخطأ الدقيقة والملف ورقم السطر.
الخطوة 2: تفعيل وضع التشخيص (مؤقتًا!)
APP_DEBUG=true
أعد تحميل الصفحة -- ستظهر لك صفحة خطأ تفصيلية تحتوي على:
- رسالة الخطأ
- Stack trace
- تفاصيل الطلب
- معلومات البيئة
تحذير
اضبط APP_DEBUG=false فور الانتهاء من التشخيص!
أخطاء 500 الشائعة
"The stream or file could not be opened"
السبب: مشكلة في صلاحيات التخزين.
sudo chmod -R 775 storage bootstrap/cache
sudo chown -R www-data:www-data storage bootstrap/cache
"No application encryption key has been specified"
السبب: مفتاح APP_KEY مفقود أو غير صالح.
php artisan key:generate
"SQLSTATE[HY000] Connection refused"
السبب: فشل الاتصال بقاعدة البيانات.
تحقق من إعدادات قاعدة البيانات في .env وتأكد من تشغيل MySQL.
"Class 'X' not found"
السبب: تبعيات Composer مفقودة.
composer install --no-dev --optimize-autoloader
php artisan config:clear
"View [x] not found"
السبب: ملف عرض مفقود أو تالف.
php artisan view:clear
إذا كان الملف مفقودًا فعلاً، أعد رفعه من الحزمة الأصلية.
"Maximum execution time exceeded"
السبب: عملية طويلة (نسخ احتياطي، ترحيل، تحليل بالذكاء الاصطناعي).
زِد مهلة PHP:
max_execution_time = 300
جمع معلومات التشخيص للدعم
عند الإبلاغ عن خطأ، أرفق:
php -v # إصدار PHP
php artisan --version # إصدار Laravel
mysql --version # إصدار MySQL
cat .env | grep -E "^(APP_|DB_|MAIL_|QUEUE_)" # الإعداد (بدون كلمات المرور!)
tail -50 storage/logs/laravel.log # الأخطاء الأخيرة