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

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

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

ابدأ الدورة

مقدمة: لماذا يُعد التصحيح قوة خارقة للمطور

\n\n

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

\n\n

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

\n\n

1. الكلاسيكيات: var_dump و print_r

\n\n

أسهل طريقة لـ تصحيح أخطاء PHP هي إدراج var_dump($variable) في مكان مشبوه. لكن هناك فارق بسيط: ليس الجميع يفعل ذلك بشكل صحيح.

\n\n

الطريقة الصحيحة لاستخدام var_dump

\n

يكتب الكثيرون بهذا الشكل:

\n
var_dump($user);
\n

ويحصلون على مخرجات غير منظمة على الشاشة. من الأفضل تنسيق المخرجات:

\n
echo '<pre>';\nvar_dump($user);\necho '</pre>';\ndie(); // إيقاف التنفيذ لمنع تداخل المخرجات الأخرى
\n\n

وبالنسبة للمصفوفات والكائنات، يُفضل استخدام print_r() مع العلم true لحفظ النتيجة في سلسلة نصية:

\n
$data = print_r($users, true);\nfile_put_contents('debug.log', $data, FILE_APPEND);
\n\n

نصيحة: لا تترك أبداً var_dump في بيئة الإنتاج. استخدم التصحيح الشرطي:

\n
if (defined('DEBUG_MODE') && DEBUG_MODE) {\n    var_dump($variable);\n}
\n\n

2. التسجيل (Logging): أفضل صديق لك في بيئة الإنتاج

\n\n

عندما يكون الموقع على الخادم، لا يمكنك ببساطة عرض الخطأ على الشاشة. هنا يأتي دور تسجيل PHP. الدالة المدمجة error_log() هي الأساس.

\n\n

كيفية إعداد error_log

\n

في ملف php.ini، حدد:

\n
error_reporting = E_ALL\ndisplay_errors = Off\nlog_errors = On\nerror_log = /var/log/php_errors.log
\n\n

الآن، سيتم كتابة جميع الأخطاء، بما في ذلك التحذيرات، في ملف. وفي الكود يمكنك القيام بذلك:

\n
if ($result === false) {\n    error_log("خطأ في استعلام قاعدة البيانات: " . $db->error, 3, '/var/log/myapp.log');\n    // 3 تعني الكتابة في ملف، وليس في syslog\n}
\n\n

النهج الحديث: Monolog

\n

للمشاريع الجادة، استخدم مكتبة Monolog. يمكنها الكتابة في ملفات، وفي Slack، وفي قاعدة البيانات، وحتى في Telegram. مثال على التوصيل:

\n
use Monolog\\Logger;\nuse Monolog\\Handler\\StreamHandler;\n\n$log = new Logger('my_app');\n$log->pushHandler(new StreamHandler(__DIR__ . '/app.log', Logger::WARNING));\n$log->warning('حاول مستخدم الدخول بدون صلاحيات', ['user_id' => 123]);
\n\n

3. Xdebug: محرك التصحيح التفاعلي

\n\n

إذا لم تقم بتثبيت Xdebug حتى الآن، فأنت تهدر وقتك. هذه ليست مجرد أداة - إنها حقيبة نفاثة للمطور. تتيح لك تعيين نقاط التوقف (breakpoints)، ومشاهدة قيم المتغيرات في الوقت الفعلي، وحتى تحليل أداء الكود.

\n\n

التثبيت والإعداد

\n

قم بالتثبيت عبر مدير الحزم:

\n
pecl install xdebug\n# أو لأوبونتو:\nsudo apt install php-xdebug
\n\n

أضف إلى php.ini:

\n
zend_extension=xdebug.so\nxdebug.mode=debug\nxdebug.start_with_request=yes\nxdebug.client_host=127.0.0.1\nxdebug.client_port=9003
\n\n

الآن قم بإعداد بيئة التطوير المتكاملة (IDE) الخاصة بك. في PhpStorm، يتم ذلك بنقرتين: قم بإعداد مفسر PHP واضغط على "Start Listening for PHP Debug Connections".

\n\n

كيف يعمل هذا عملياً

\n

ضع نقطة توقف (دائرة حمراء) في السطر الذي يحتوي على الكود المشبوه. قم بتشغيل السكريبت في المتصفح مع المعامل ?XDEBUG_SESSION_START=1.

المدونات

توصيات الكتب