تصحيح أخطاء PHP: تقنيات وأدوات للمحترفين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا يعتبر تصحيح الأخطاء مهارة خارقة للمطور

\n\n

كل مطور PHP واجه مرة على الأقل شاشة الموت البيضاء، أو خطأ 500 Internal Server Error الغامض، أو متغير "كان يعمل قبل قليل". في تلك اللحظات، تتمنى لو ترمي حاسوبك المحمول من النافذة. لكن بدلاً من ذلك، دعنا نحول تصحيح أخطاء PHP إلى روتين لا يسبب لك أي توتر.

\n\n

في هذا المقال، سنستعرض تقنيات وأدوات ستساعدك في العثور على الأخطاء بشكل أسرع من غليان الغلاية. من var_dump() الكلاسيكي إلى الإعداد المتقدم لـ Xdebug، مع أمثلة عملية وحالات واقعية. هيا بنا!

\n\n

1. التصحيح الأساسي: من var_dump() إلى error_reporting

\n\n

1.1. var_dump() و print_r() — طرق تقليدية لكنها فعّالة

\n\n

أبسط طريقة لتصحيح أخطاء PHP هي عرض محتوى المتغير على الشاشة. نعم، هذا ليس أنيقاً، لكن عندما تحتاج بسرعة إلى فهم ما يوجد في مصفوفة، فإن var_dump() يؤدي المهمة بنسبة 100%.

\n\n
<?php\n$users = [\n    ['name' => 'أحمد', 'age' => 25],\n    ['name' => 'سارة', 'age' => 30]\n];\n\n// var_dump يظهر أنواع البيانات والهيكل\nvar_dump($users);\n\n// print_r — خيار أكثر إيجازاً\necho '<pre>';\nprint_r($users);\necho '</pre>';\n?>
\n\n

نصيحة: استخدم <pre> حول المخرجات للحفاظ على التنسيق. ولا تنسَ أبداً حذف أسطر التصحيح هذه قبل النشر على الإنتاج — وإلا سيرى المستخدمون "هياكل عظمية في خزانتك".

\n\n

1.2. تفعيل عرض جميع الأخطاء

\n\n

غالباً ما يخفي إعداد PHP الافتراضي الأخطاء "تحت الغطاء". لرؤيتها، أضف في بداية السكريبت:

\n\n
<?php\n// عرض جميع الأخطاء بما في ذلك الإشعارات والتحذيرات\nerror_reporting(E_ALL);\nini_set('display_errors', 1);\n?>
\n\n

هذا مفيد بشكل خاص عند تصحيح أخطاء PHP على الخادم المحلي. لكن في بيئة الإنتاج، تأكد من إيقاف display_errors — فهذا يشكل خطراً أمنياً!

\n\n

1.3. debug_backtrace() — من استدعى هذه الدالة؟

\n\n

أحياناً يتم استدعاء دالة من مكان غير متوقع. يساعد تتبع مكدس الاستدعاءات في العثور على المصدر:

\n\n
<?php\nfunction logError($message) {\n    $trace = debug_backtrace();\n    echo "خطأ في الملف: {$trace[0]['file']} في السطر {$trace[0]['line']}<br>";\n    echo "الرسالة: $message";\n}\n\n// الآن أي استدعاء لـ logError سيظهر مصدره\nlogError('حدث خطأ ما');\n?>
\n\n

2. Xdebug — سكين سويسري لتصحيح أخطاء PHP

\n\n

2.1. تثبيت وإعداد Xdebug

\n\n

Xdebug هو إضافة PHP تحوّل تصحيح الأخطاء إلى مركبة فضائية. يمكنك من خلاله تعيين نقاط التوقف، ومشاهدة قيم المتغيرات في الوقت الفعلي، وحتى تحليل أداء الكود.

\n\n

التثبيت عبر pecl (لنظام Linux/Mac):

\n
pecl install xdebug
\n\n

لنظام Windows، الأسهل تنزيل ملف .dll من الموقع الرسمي وإضافته إلى php.ini:

\n\n
zend_extension = /المسار/إلى/xdebug.so\nxdebug.mode = debug\nxdebug.start_with_request = yes
\n\n

2.2. نقاط التوقف في بيئة التطوير المتكاملة (IDE)

\n\n

إذا كنت تستخدم PhpStorm أو VS Code، قم بإعداد التكامل مع Xdebug. ضع نقطة توقف (دائرة حمراء على يسار سطر الكود)، وشغّل التصحيح — وسيتوقف الكود عند هذا السطر. سترى جميع المتغيرات، ويمكنك تنفيذ الخطوات وحتى تغيير القيم "أثناء الطيران".

\n\n

مثال: تبحث عن سبب عدم صحة حساب إجمالي الطلب. ضع نقطة توقف على سطر الحساب، وشغّل الطلب — وسترى أن $discount يساوي null بدلاً من رقم. تم العثور على المشكلة في 10 ثوانٍ!

\n\n

2.3. تحليل الأداء باستخدام Xdebug

\n\n

الكود بطيء؟ فعّل محلل الأداء:

\n
xdebug.mode = profile\nxdebug.output_dir = /tmp/profiles
\n\n

بعد تشغيل السكريبت، ستحصل على

المدونات

توصيات الكتب