🔺 شرح Laravel

الأخطاء والتسجيل (Logging)

معالجة الأخطاء

Laravel يلتقط الأخطاء ويعرض صفحة مناسبة. في التطوير (APP_DEBUG=true) يعرض التفاصيل، وفي الإنتاج يخفيها.

إطلاق أخطاء HTTP

<?php
abort(404);                          // غير موجود
abort(403, 'ممنوع الوصول');          // مع رسالة
abort_if($user->banned, 403);        // شرطيًّا

// إيجاد أو فشل بـ 404 تلقائيًّا
$post = Post::findOrFail($id);

صفحات أخطاء مخصّصة

أنشئ ملفًّا باسم رمز الخطأ في resources/views/errors/:

{{-- resources/views/errors/404.blade.php --}}
@extends('layouts.app')

@section('content')
  <h1>الصفحة غير موجودة</h1>
  <a href="/">العودة للرئيسية</a>
@endsection

التسجيل (Logging)

سجّل الأحداث لتتبّع المشاكل. السجلّات في storage/logs/laravel.log:

<?php
use Illuminate\Support\Facades\Log;

Log::info('سجّل مستخدم دخوله', ['id' => $user->id]);
Log::warning('محاولة وصول مشبوهة');
Log::error('فشل الاتصال بالبوّابة', ['error' => $e->getMessage()]);

مستويات الخطورة

من الأقل إلى الأكثر خطورة:

المستوىالاستخدام
debugتفاصيل التطوير
infoأحداث عادية
warningتحذيرات
errorأخطاء
criticalأعطال حرجة

التقاط الأخطاء يدويًّا

<?php
try {
    $result = $service->process();
} catch (\Exception $e) {
    Log::error('فشلت المعالجة', ['msg' => $e->getMessage()]);
    return back()->with('error', 'حدث خطأ، حاول لاحقًا');
}

أخطاء شائعة

  • ترك APP_DEBUG=true في الإنتاج فتُكشف تفاصيل حسّاسة.
  • إهمال السجلّات فيصعب تشخيص مشاكل الإنتاج.

🎯 التالي: إرسال البريد الإلكتروني.