دیباگ کردن کد PHP تقریبا در هر پروژهای مورد نیاز است. برای این کار، وردپرس از سیستم دیباگ ویژهای استفاده میکند که علاوه بر ساده کردن فرآیند دیباگ ورد پرس، سبب استانداردسازی کدها در پلاگینها، افزونهها و هسته اصلی وردپرس شده است. در این مقاله قصد داریم تا روشهای مختلف در حالت دیباگ وردپرس را بررسی کنیم.
چرا از حالت دیباگ وردپرس استفاده کنیم؟
به طور پیشفرض اگر هیچ تغییری در هسته اصلی وردپرس ندهید و هیچ پلاگین یا قالب شخص ثالثی نداشته باشید، فعال کردن حالت دیباگ وردپرس تغییر خاصی بوجود نمیآورد و البته هیچ خطای خاصی هم مشاهده نخواهید کرد. به محض تغییر قالب یا اضافه کردن پلاگینهای مختلف، شرایط به طور کلی عوض میشود.
اصلیترین دلیل برای فعال کردن حالت دیباگ وردپرس، خطاهایی است که از طریق کد PHP بوجود میآیند. اگر در محیط «هاست داخلی» (Local Host) یا سرور آزمایشی فعالیت میکنید، بهتر است حتما از حالت دیباگ وردپرس استفاده کنید. اگر قالب یا پلاگین خودتان را طراحی میکنید، قطع به یقین باید از این امکان استفاده کنید.
فعال کردن حالت دیباگ وردپرس با استفاده از کد
با استفاده از مراحل زیر میتوانید حالت دیباگ وردپرس را فعال کنید.
فعال سازی WP_DEBUG
از WP_DEBUG برای فعال کردن حالت دیباگ وردپرس میتوانیم استفاده کنیم. به طور پیشفرض، این میزان در حالت false قرار دارد اما در فایل wp-config.php میتوان مقدار آن را به true تغییر داد.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG', false );
استفاده از حالت WP_DEBUG برای سایتهای در حال کار، توصیه شده نیست و فقط در فضای استیجینگ و لوکال به کار میرود.
فعال کردن WP_DEBUG سبب بروز خطاهای PHP و نمایش هشدارهای آن میشود. در این صورت نیاز به تغییر مقادیر پیشفرض PHP دارید که تنها با افزایش خطاهای سیستم امکان نمایش صفحه سفید وجود دارد.
نمایش تمامی خطاهای PHP در برخی موارد سبب نمایش خطاهایی میشود که در حقیقت مشکلی ندارند اما از قوانین PHP تبعیت نمیکنند. بعد از شناسایی کدهای مربوطه، اصلاح این خطاها سادهتر است. در نهایت، کد بدست آمده در برابر باگها و حفرههای امنیتی مقاومتر است.
فعال کردن WP_DEBUG سبب اعلام توابع و آرگومانهای منسوخ شده میشود که در نسخه وردپرس سایت شما در حال استفاده است. این هشدارها شامل توابعی هستند که بلااستفاده هستند، اما از هسته وردپرس حذف نشدهاند.
فعالسازی WP_DEBUG_LOG
WP_DEBUG_LOG به عنوان مکملی برای WP_DEBUG به حساب میآید که با فعالسازی آن تمام فعالیتها و خطاها در فایل debug.log ثبت و ذخیره میشوند.
لازم به ذکر است که این امکان باعث میشود تا شما با استفاده از تابع error_log() موجود در PHP، در فایل «صورت وضعیت» (Log) خود بتوانید تغییرات انجام دهید یا خطاها را در این فایل بنویسید و در مواردی همچون رویدادهای Ajax از آن استفاده کنید.
زمانی که مقدار را به true تغییر دهید، فعالیتها در فایلهای سیستمی سایت شما و در مسیر wp-content/debug.log ذخیره میشوند. البته میتوانید این مسیر را نیز تغییر دهید.
define( 'WP_DEBUG_LOG', true );
-or-
define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' );
برای فعالسازی WB_DEBUG_LOG، باید WP_DEBUG را از قبل فعال و مقدار آن را به True تغییر داده باشید.
فعال سازی WP_DEBUG_DISPLAY
با فعال کردن این امکان در وردپرس، پیامهای دیباگ به صورت HTML نمایش داده خواهند شد. در صورتی که از این امکان در سایتهایی که در حال اجرا هستند استفاده کنید، امکان افشا شدن اطلاعات حساس وبسایت شما وجود دارد. بنابراین توصیه میشود که هنگام استفاده از این قابلیت، احتیاط کنید. برای فعالسازی این حالت دیباگ وردپرس، کد زیر را در فایل wp-config.php وارد کنید:
define( ‘WP_DEBUG_DISPLAY’, true );
فعال سازی SCRIPT_DEBUG
با فعالسازی این قابلیت، وردپرس به جای استفاده از نسخه فشرده CSS و JavaScript ، از حالت توسعه یافته آن استفاده میکند. از این امکان میتوانید برای بررسی تغییرات فایلهای .js و .css استفاده کنید. برای فعال سازی این حالت دیباگ وردپرس، کد زیر را در فایل wp-config.php وارد کنید:
define( ‘SCRIPT_DEBUG’, true );
فعال سازی کوئری لاگینگ
میتوانید صورت وضعیت کوئری دیتابیس وردپرس را به صورت یک آرایه داشته باشید. این حالت زمانی به کار میآید که به مشکلاتی در پایگاه داده وردپرس برخورد کنید. برای فعال سازی این حالت از دیباگ وردپرس، کد زیر را در فایل wp-config.php وارد کنید:
define(‘SAVEQUERIES’, true);
با فعال کردن این حالت، کوئریها در مسیر $wpdb->queries ذخیره می شوند.
آموزش فعال کردن حالت دیباگ وردپرس از طریق پلاگین
پلاگینهای بسیاری برای فعال کردن حالت دیباگ وردپرس وجود دارند که از میان آنها میتوان به پلاگینهای رایگان Query Monitor، Debug Bar و Log Deprecated Notices اشاره کرد.
باید اشاره کنیم که پلاگین Debug bar یکی از بهترین پلاگینها در این زمینه است. هرچند به طور مداوم بهروزرسانی نمیشود. به همین دلیل بسیاری اوقات با نسخههای جدید وردپرس هماهنگ نیست.
فایل debug.log را پیدا نمیکنم
برخی از ارائه دهندگان هاست، فایل debug.log را اصلا ایجاد نمیکنند. تمامی خطاها و هشدارهای ایجاد شده توسط وردپرس را در یک لاگ فایل جداگانه ذخیره میکنند. بنابراین در صورتی که فایل debug.log را پیدا نکردید، احتمالا با عناوینی مانند error_log یا /logs در مسیر اصلی وبسایت شما ذخیره شدهاند که باید به دنبال آنها باشید.
اما اگر هیچ نوع فایل صورت وضعیتی پیدا نکردید، از هاست خود بخواهید تا مسیر آن را در اختیار شما قرار دهد. البته میتوانید از روش زیر برای ایجاد کردن این فایل استفاده کنید. کافی است کد زیر را در فایل wp-config.php ذخیره کنید.
define( 'WP_DEBUG_DISPLAY', true);
با فعال کردن این گزینه، بازدیدکنندگان سایت نیز میتوانند این خطاها را مشاهده کنند. بهتر است که بعد از رفع خطاها آن را به حالت false تغییر دهید.
آیا حالت دیباگ وردپرس بر عملکرد سایت تاثیر دارد؟
برای پاسخ این سوال باید بگوییم بله به طور کامل بر عملکرد سایت تاثیر دارد. مخصوصا وقتی حالت لاگ کوئری فعال باشد. پس بهتر است در فضای استیجینگ و آزمایش کردن سایت از حالت دیباگ وردپرس استفاده کنید و در مواقع دیگر آن را غیرفعال کنید.