تفعيل تسجيل الأخطاء في PHP
فعّل الإبلاغ عن الأخطاء لتشخيص صفحة بيضاء — إلى ملف سجل، لا إلى المتصفح على موقع مباشر أبدًا.
اجعل PHP يسجّل الأخطاء لترى ما يتعطّل. ينطبق على الاستضافة المشتركة والموزِّعة والمميّزة.
الصفحة البيضاء تعني دائمًا تقريبًا خطأً فادحًا مع تعطيل العرض. والتسجيل هو كيف تراه.
لا تفعّل display_errors على موقع مباشر أبدًا. فرسائل الأخطاء تكشف مسارات
الملفات وأسماء قواعد البيانات وأحيانًا بيانات الاعتماد، والمهاجمون يقرأونها
عمدًا. سجّل إلى ملف بدلًا من ذلك — فالمعلومات ذاتها ولا يراها إلا أنت.
لسكربت واحد
أضف في أعلى الملف تمامًا، قبل أي كود آخر:
<?php
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/error_log');
error_reporting(E_ALL);وتُكتَب الأخطاء إلى error_log بجوار السكربت. اقرأه كما هو موضّح في
العثور على سجل الأخطاء.
للحساب كله
cPanel ← Select PHP Version ← Options:
| الإعداد | القيمة |
|---|---|
log_errors | On |
error_reporting | E_ALL |
display_errors | Off — اتركه معطّلًا |
راجع تغيير إصدار PHP وإعداداته.
ووردبريس
حرّر wp-config.php، فوق /* That's all, stop editing! */:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );وتذهب الأخطاء إلى wp-content/debug.log.
وضبط WP_DEBUG_DISPLAY على false هو ما يبقيها خارج الصفحة. أما تفعيل
WP_DEBUG وحده فيعرض الأخطاء للزوار — راجع
تفعيل WP_DEBUG.
التنقيح على موقع مباشر
إن اضطررت، فقيّد الإخراج على عنوانك أنت:
if ( $_SERVER['REMOTE_ADDR'] === '203.0.113.10' ) {
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
}وأزله فور انتهائك.
أوقفه بعد ذلك
التسجيل المفصَّل يكتب مع كل طلب. وترك E_ALL على موقع مزدحم ينتج ملف سجل كبيرًا
بما يكفي للتأثير في حصة قرصك، والضجيج يدفن كل ما هو حقيقي.