✨ بررسی انواع خطاهای وردپرس و راهنمای رفع آن (wordpress debug)

تقریبا همه کسانی که با وردپرس کار کرده باشند حداقل یک بار با صفحه خطای وردپرس برخورد داشتند و با این خطا مواجه شدند.
این خطا می تواند دلایل مختلفی داشته باشد که بسته به نوع خطا ، روش رفع آن متفاوت است.
برخی خطاهای وردپرس باعث از در دسترس خارج شدن سایت می شود که باید سریعا بررسی و رفع شود، مخصوصا برای فروشگاه های آنلاین وردپرسی و یا وب سایت های خبری، این موضوع اهمیت زیادی دارد.
اگر شما از کاربران پارس وب سرور باشید و یکی از پلن های هاست وردپرس ما را تهیه کرده باشید در صورت بروز هر نوع خطایی می توانید تیکت بزنید تا همکاران ما در اسرع وقت خطا را بررسی و رفع کنند.
اگر هم از شرکت دیگری هاست دارید و قصد انتقال به پارس وب سرور را دارید، انتقال رایگان است و در آموزش انتقال رایگان هاست به پارس وب سرور به طور کامل توضیح داده شده است.
در وردپرس، خطاها به چند دستهی کلی تقسیم میشوند که هر کدام از این خطاهای نمایش داده شده، نقش متفاوتی در فرآیند دباگ (debug) وردپرس دارند . سه نوع مهم ترین خطاهایی که ممکن است با آنها مواجه شویم را در ادامه این پست با هم مرورو می کنیم .
شکل های کلی خطاهای وردپرس
در وردپرس، خطاها به سه دسته اصلی تقسیم میشوند:
Errors (خطاهای بحرانی)
اینها باعث میشوند کل یا بخشی از سایت کار نکند. مثلا خطاهای syntax یا خطاهای fatal error.
Warnings (هشدارها)
این خطاها به سایت آسیب نمیزنند ولی نشان میدهند که یک چیزی در کدهای قالب و یا افزونه اشتباه است. مثلا استفاده نادرست از یک تابع php در قالب و یا افزونه .
Notices (اطلاعیهها)
این خطاها بیشتر جنبه اطلاع رسانی دارند و برای برنامهنویسان هستند تا بدانند چه چیزهایی ممکن است در آینده مشکلساز شوند. مثلا استفاده از یک متغیر تعریف نشده یا توابعی که دیگر منسوخ شدند و باید با توابع جدید جایگزین شوند.
بررسی کامل خطاهای وردپرس
در ادامه این پست آموزشی می خواهیم این خطاها را کمی دقیق تر و بهتر بررسی کنیم .وردپرس به دلیل اجرا شدن در محیط PHP، تحت تاثیر ساختار گزارشدهی خطای این زبان است.
بهطور کلی سه نوع خطا در وردپرس توسط php ساخته می شود:
خطاهای Errors
خطاهایی از نوع E_ERROR, E_PARSE, E_COMPILE_ERROR و خطاهای مشابه که اجرای اسکریپت php را متوقف میکنند.
معمولا در صورت وجود این نوع خطا، صفحه سفید مرگ (WSOD) یا پیامهای fatal error مشاهده میشود. بهعنوان مثال:
Fatal error: Uncaught Error: Call to undefined function some_function()
پیام های Warnings
این خطاها مانند E_WARNING باعث توقف برنامه نمیشوند ولی نشانهای از مشکلی جدی در منطق برنامه و کدهای php یا سازگاری و تداخل افزونه ها و یا قالب هستند. به طور مثال پیام های وارنینگ ممکن است به اینصورت شروع و نمایش داده شوند:
Warning: include(file.php): failed to open stream
پیام های Notices
این پیام ها بیشتر برای برنامه نویس ها و توسعه دهندگان وردپرس هستند و زمانی نمایش داده می شوند که دباگ وردپرس فعال باشد و با غیر فعال کردن دباگ وردپرس دیگر نمایش داده نمی شود.
پیام هایی مثل E_NOTICE و E_USER_NOTICE درباره استفاده از متغیر های تعریف نشده یا توابع منسوخ شده deprecated function هشدار میدهند که یک نمونه از این نوتیس های در زیر آورده شده است:
Notice: Undefined variable: my_var
برای مشاهده و بررسی کامل این خطاها در وردپرس در فایل wp-config.php به صورت زیر تنظیم میشود:
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', true);
define('WP_DEBUG_LOG', true);
بررسی خطاهای وب سایت در سی پنل
در سیپنل (cPanel) گزینه های مختلفی برای نمایش و بررسی خطاها وجود دارد که به کاربران خود این امکان را میدهد تا مشکلات وب سایت خود را بهتر تشخیص دهند. این لاگ ها در بخشهای Metrics یا Advanced قرار دارند.
در سیپنل، برای دیدن خطاهای وب سایت خود میتوانیم از این گزینه ها استفاده کنیم (اگر هر کدام را در سرچ سی پنل وارد کنیم منوی مربوط به آن بخش را نمایش می دهد که باید روی آن کلیک کنید)
بخش های مختلف سی پنل که امکان بررسی خطای وب سایت وجود دارد:
Errors: گزارشی از آخرین خطاهای سایت را نمایش میدهد (مثل خطاهای 404 یا مشکلات فایل htaccess)
Raw Access یا Raw Access Logs: لاگ خام تمام درخواستهای ورودی به سرور را نمایش میدهد
Metrics > Visitors / Bandwidth / Awstats: آمار دقیقتر همراه با برخی خطاها را نشان میدهند
File Manager > public_html > error_log: فایل error_log معمولاً شامل خطاهای PHP است
در ادامه به بررسی کامل تر و دقیق تر هر کدام از بخش هایی که در سی پنل می توانیم خطاهای وب سایت را پیدا کنیم می پردازیم. در محیط سیپنل، بررسی خطاها از طریق منوهای زیر انجام میشود:
Errors (در بخش Metrics)
این ابزار، لیستی از آخرین 300 خطای گزارش شده در سایت را از طریق apache error log نمایش میدهد. این شامل خطاهای permission، فایلهای گمشده (404) و misconfiguration ها می باشد.
Raw Access Logs
فایل خام لاگ های Apache بدون فیلتر که میتوان آن را دانلود و بر روی سیستم خود آنها را بررسی کرد. این ابزار برای مشاهده رفتارهای غیرعادی از جمله حملات brute force مفید است.
Awstats / Webalizer
ابزارهای تحلیل آمار بازدیدکنندگان هستند که میتوانند برخی خطاهای رایج را هم نمایش دهند.
File Manager > error_log
در روت فولدر دامنه مثل public_html یا برای دامنه های ادان شده همان فولدر دامنه، یک فایل به نام error_log وجود دارد که خطاهای سطح PHP مثل notices و warnings در آن ذخیره میشود و بر اساس تاریخ و زمان اضافه شدن لاگ مرتب شده است. . این فایل بهخصوص هنگام دباگ و توسعه قالب یا افزونه بسیار مفید است و اطلاعات کامل خطا، شامل تاریخ و زمان خطا و نوع خطا و لاین خطا در فایل مربوطه را به صورت کامل نشان می دهد.
Select PHP Version > Options / PHP Selector
این منو از قسمت تغییر نسخه php در سی پنل قابل تنظیم و تغییر می باشد. در این قسمت میتوانید نمایش خطاها را فعال یا غیرفعال کنید. گزینههایی مثل display_errors، error_reporting و log_errors در اینجا تنظیم میشوند.
چطور خطاهای نمایش داده شده را رفع کنیم
برای رفع خطاهایی که در وردپرس یا سیپنل نمایش داده میشوند، ابتدا باید نوع خطا را تشخیص دهیم و سپس براساس آن اقدام کنیم. رفع هر خطا بستگی به نوع آن error، warning یا notice آن دارد و باید منبع آن مشخص شود که آیا از قالب، افزونه، PHP یا تنظیمات هاست است.
برای رفع خطاهای وردپرس که در سیپنل یا صفحه سایت نمایش داده میشوند باید کارهای زیر را انجام دهیم:
خطا را بخوانیم و محل آن را پیدا کنیم در متن خطا مسیر فایل و شماره خط که خطا دارد را مشخص میکند.
اگر مربوط به افزونه یا قالب بود، آن را غیرفعال می کنیم و تاثیر آن را چک می کنیم. از سیپنل با تغییر نام فولدر افزونه با اضافه کردن یک عدد مثلا عدد 1 می توانیم افزونه را غیر فعال کنیم یا اگر به پیشخوان وردپرس دسترسی داریم از انجا غیرفعال کنیم.
نسخه PHP را بررسی کنیم گاهی افزونه یا قالب با نسخه PHP سرور سازگار نیست. اکثرا وردپرس با نسخه های پایدار 7.4 و یا 8.1 به خوبی کار می کند. با استفاده از آموزش تغییر نسخه php می توانیم این نسخه ها را تنظیم کنیم تا خطا رفع شود.
یا ممکن است نیاز باشد که یک اکستنشن خاصی را فعال کنیم عموما در متن خطا به نام اکستنشن که فعال نبودن آن باعث خطا می شود اشاره شده است. از مهم ترین اکستنشن هایی که فعال نبودن آن باعث خطا می شود، اکستنشن یون کیوب و یا سورس گاردین است که با آموزش فعال کردن اکستنشن های php می توانیم آنها را فعال و خطاها را رفع کنیم.
همینطور اگر نمایش فایل های مخفی را در سی پنل فعال کنیم فایل error_log را در فولدر دامنه می توانیم مشاهده کنیم و خطا را در این فایل بررسی کنیم که مسیر دقیق خطاها را در آنجا میتوانیم ببینیم.
اگر آشنایی با برنامهنویسی php داشته باشیم ، کد را اصلاح می کنیم مثلا متغیر تعریف نشده را اضافه می کنیم یا مقدار پیش فرض برای آن در نظر می گیریم یا هر خطای دیگری که در لاگ بود.
در نهایت، اگر موفق به پیدا کردن و رفع خطا نشدید متن خطا را به همراه اسکرین شات و لینک صفحه از طریق تیکت ارسال می کنید تا همکاران بخش فنی، علت خطا و راهنمایی لازم برای رفع خطا را برای شما ارسال کنند.
راهنمای عدم نمایش خطاهای وردپرس برای بازدیدکنندگان و کاربران
با توجه به اینکه در متن خطاها، اطلاعات زیاد و مهمی در مورد فایل ها و مسیر فایل ها نمایش داده می شود، فقط برای مدت کوتاه و صرفا جهت دباگ، باید نمایش خطاها فعال شود و بلافاصله باید نمایش خطاها قطع شود.
این مورد از نظر امنیت وب سایت بسیار مهم است و باید خیلی جدی گرفته شود، در غیر اینصورت ممکن است امنیت وب سایت به خطر بیافند.
بارها پیش آمده است که ادمین وب سایت یا برنامه نویس وب سایت بعد از ویرایش و اصلاح و یا دباگ وردپرس، دباگ را غیر فعال نکرده و خطاها در صفحات وب سایت نمایش داده می شد. پس حتما باید به یاد داشته باشید که بعد از هر بار فعال کردن دباگ، باید غیر فعال شود.
برای جلوگیری کامل از نمایش خطاها و هشدارها (errors & warnings) در وردپرس، باید تنظیمات php و همچنین وردپرس را به گونهای تغییر دهیم که هیچ پیام خطایی نمایش داده نشود. این کار در وب سایت ها و فعال بسیار مهم است تا کاربران هیچ پیام خطایی را نبینند.
غیرفعال کردن نمایش ارور در php
برای اینکه خطاها در وردپرس نشان داده نشوند، باید کدی را در فایل functions.php پوسته یا قالب چایلد قرار داده شود که جلوی نمایش هر نوع خطا را بگیرد. همچنین باید مطمئن شویم که فایل wp-config.php هم به درستی تنظیم شده و دباگ غیرفعال باشد. در این حالت، حتی اگر مشکلی مثل وارنینگ و یا notice در کد های قالب و یا افزونه وجود داشته باشد، چیزی به کاربر و بازدید کننده نمایش داده نمیشود.
برای خاموشکردن تمام انواع خطاها، از جمله notices, warnings, و fatal errors باید به دو سطح تنظیمات توجه کنیم:
1. اضافه کردن کد به functions.php
خاموشکردن گزارش خطاها از طریق PHP
error_reporting(0);
@ini_set('display_errors', 0);
این کد باید در انتهای فایل functions.php یا در هوک init قرار بگیرد:
add_action('init', function() {
error_reporting(0);
@ini_set('display_errors', 0);
});
تذکر: قبل از اضافه کردن هر نوع کد و یا هر نوع ویرایشی، حتما فول بک اپ تهیه و دانلود کنید و یک نسخه از فایل قبل از ویرایش را دانلود و روی سیستم خود ذخیره کنید.
2. تنظیم wp-config.php
در فایل wp-config.php، مطمئن شوید که خطوط زیر وجود داشته باشند و به صورت درست تنظیم شده باشند و هر 3 گزینه false
باشد:
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);
اگر این مقادیر روی true باشند، وردپرس همچنان خطاها را نمایش خواهد داد.
سخن پایانی
در این پست پارس وب سرور، خطاهای وردپرس را به صورت کلی بررسی کردیم و راه حل های عمومی برای رفع مشکل ارائه دادیم. روش مشاهده خطا و بررسی خطاها هم از طریق وب سایت و هم از طریق سی پنل را بررسی کردیم. امیدواریم که وب سایت شما هیچ زمانی با خطا مواجه نشود اما اگر احیانا با خطا مواجه شد با آموزش بالا می توانید تا حدودی بعضی خطا ها را رفع کنید.
هر زمان در وب سایت وردپرسی خود با هر نوع خطایی مواجه شدید، بدون هر گونه نگرانی ، از ناحیه کاربری خود تیکت ارسال کنید تا همکاران ما در اسرع وقت ، وب سایت شما را بررسی کنند. (ارسال تیکت)