شناسایی و رفع خطا های وردپرس

در برخی مواقع، هنگام اجرای سایت وردپرس خود، با مشکلات و خطاهایی مواجه می شوید و ممکن است در نهایت مجبور شوید از خود بپرسید، چگونه سایت وردپرس خود را تعمیر کنم؟

در صورتیکه مشکل با ریستور بک اپ حل نشود و یا افزونه ای مشکل ساز به آسانی مشخص نباشد. تشخیص اینکه دقیقاً چه چیزی باعث مشکلات سایت شما شده شاید کار دشواری باشد در این آموزش، اصول عیب یابی صحیح  وردپرس را برای تصحیح مشکلات رایج در وردپرس بیان خواهیم کرد. اولین جایی که باید به دنبال منبع مشکل خود بگردید، در فایل لاگ خطا است.

از کجا می توانم لاگ های خطای وردپرس را پیدا کنم؟

رایج ترین یا احتمالاً مشاهده شده ترین گزارش خطا که در تحقیقات وردپرس دیده شده است  در واقع از وردپرس نشات نمی گیرد بلکه از نسخه php شما بر روی سرور است.

فایل php.ini که برای کنترل تنظیمات PHP برای سایت شما استفاده می شود، تعیین می کند که گزارش خطا در کجا گزارش می شود .
در صورتیکه ثبت خطا در سایت شما فعال باشد خطا های ایجاد شده در فایل error_log که معمولا در پوشه اصلی وردپرس شما قرار دارد ثبت می شوند. مسیر فایل error_log را  می توانید در فایل php.ini مشخص کنید . در صورتیکه لاگ گیری در سایت شما فعال نیست لازم است برای مشاهده  خطا ها Debugging را فعال کنید .

چگونه اشکال زدایی  یا Debugging وردپرس را فعال کنیم ؟

می توانید اشکال زدایی را برای وردپرس در فایل wp-config.php فعال کنید.. برای اینکه بهتر ببینید چه اتفاقی در حال رخ دادن است، کافی است خط زیر را در فایل wp-config.php خود ویرایش کنید:

define(‘WP_DEBUG’, false);

و false را به true تغییر دهید:

define(‘WP_DEBUG’, true);

تغییر مقدار به true حالت اشکال زدایی را فعال می کند و هرگونه خطا در کد سایت را مستقیماً در صفحه مروگر نمایش می دهد. این می تواند در هنگام تلاش برای ردیابی مشکلات سایت یا دیدن اینکه آیا ارتقاء مشکل جدیدی ایجاد کرده است مفید باشد.

اصلاح نسخه های PHP مورد استفاده :

اگر نسخه PHP سایت را تغییر داده اید  و سایت دیگر بارگذاری نمی شود، این روش دلیل آن را به شما می گوید.همچنین با استفاه از فایل   wp-config.php می توانید گزارش خطای PHP وردپرس را فعال کنید و به جای چاپ روی صفحه مروگر ، مستقیماً خطا ها را در یک فایل ذخیره کنید . برای این کار می توانید کد زیر را به فایل wp-config اضافه کنید:

define(‘WP_DEBUG_LOG’, true);

 

این کد در صورت وجود و ایجاد خطا، گزارش خطای پی اچ پی وردپرس (php.error_log) را ایجاد می کند. شما می توانید این فایل را در پوشه wp-content وردپرس خود پیدا کنید. اگر خطا ایجاد نشود، ممکن است در این فایل ، خطا را نبینید، بنابراین عدم وجود خطا در این فایل ، پس از فعال کردن این تنظیم، ممکن است به این معنی باشد که هیچ خطایی در رابط با نسخه php گزارش نشده است. به عنوان مثال، اگر فایل htaccess. شما دارای یک خطای نحوی باشد، php.error_log این خطا را نشان نخواهد داد زیرا این یک خطای PHP نیست.

PHP Error Logging را فعال کنید

اگر ترجیح می‌دهید ثبت خطای PHP را فعال کنید، می‌توانید مقادیری را به فایل  php.ini برای دامنه مورد نظر خود و  یا از طریق فایل htaccess. اگر تنظیمات  هاست شما شما از آنها پشتیبانی می‌کند، اضافه کنید:

فایل php.ini سایت خود را باز کنید. اگر مطمئن نیستید که کجا قرار دارد، می توانید از یک صفحه phpinfo برای نشان دادن مکان این فایل استفاده کنید .

ایجاد صفحه PHP Info

به صورت دستی یک فایل phpinfo.php را در پوشه public_html وب سایت خود ایجاد و کد زیر را  در ان قرار دهید.

<?php

// Show all information

phpinfo();

?>

 

پس از افزودن این کد به فایل، از طریق مرورگر این فایل در دسترس خواهد بود . مسیر php.ini را در قسمت Loaded Configuration File پیدا خواهید کرد

هنگامی که این مکان را پیدا کردید، فایل را ویرایش کنید و در صورتیکه کد زیر در ان وجود ندارد کد را به ان اضافه کنید :

 

;;; log php errors

display_startup_errors = false

display_errors = false

html_errors = false

log_errors = true

track_errors = true

error_log = /home/USER/logs/error_log

error_reporting = E_ALL | E_STRICT

 

نحوه خواندن گزارش های خطا

برای درک نحوه خواندن خروجی این گزارش‌ها به لاگ ایجاد شده زیر نگاه کنید:

[09-Sep-2018 22:57:20 UTC] PHP Fatal error:  Allowed memory size of 41943040 bytes exhausted (tried to allocate 32768 bytes) in home/USERNAME/public_html/wp-content/plugins/wordpress-seo/inc/class-wpseo-meta.php on line 477

می توانید تاریخ و زمان را به دنبال پیام کلی و مسیری که از آن منشا گرفته است را مشاهده کنید. این بیشتر جزئیاتی را که برای تعیین اینکه مشکل در کجاست به شما می گوید. شما می توانید از زمان این خطا ببینید که چه زمانی خطا رخ می دهد و آیا این خطا به مشکل فعلی مربوط می شود یا اینکه به  خطای دیگری بوده است.

مسیر معمولاً نشان می‌دهد که آیا این خطا از یک افزونه یا تم   ایجاد شده است  یا خیر. این حتی خطی را در سند یا فایلی که باعث بروز خطا شده است نمایش می دهد که می تواند توسط توسعه دهنده وب سایت شما بررسی شود.

 

برخی از خطاهای رایج وردپرس چیست؟

Fatal Error:

“fatal error” رایج ترین نوع خطای است که مشاهده می شود و علت آن می تواند از کدگذاری متفاوت باشد، مانند “undefined function”، نشان دهنده عملکرد و خط مشکل ساز کد تا خطاهای حافظه (مانند مورد استفاده شده در مثال بالا). این معمولاً زمانی اتفاق می‌افتد که حافظه سرور تمام شود یا PHP memory limit به اندازه کافی برای اجرای کد مورد نیاز تنظیم نشده باشد. برای رفع این خطاها ممکن است نیاز به به روز رسانی نرم افزار (معمولاً تم ها و افزونه ها) داشته باشید زیرا ممکن است از کد و یا توابع قدیمی استفاده کند. همچنین ممکن است نیاز داشته باشید که PHP memory limit را افزایش دهید یا هر گونه استفاده از منابع سنگین را در سرور که ممکن است حافظه را مصرف کند، را  پیدا کنید.

 

Error Establishing a Database Connection:

این به طور کلی به این معنی است که یک مشکل در پایگاه داده در حال استفاده یا پیکربندی تنظیمات وردپرس شما وجود دارد. این می تواند به این معنی باشد که پایگاه داده شما خراب است یا تنظیمات پیکربندی استفاده شده در wp-config شما صحیح نیست یا اصلاح شده است. بررسی کنید فایل wp-config شما دارای اعتبار و نحو صحیح باشد تا مطمئن شوید پایگاه داده شما می تواند با فایل های وردپرس شما ارتباط برقرار کند. همچنین ممکن است زمانی که سرور تحت بار سنگین قرار دارد یا سرویس MySQL از کار افتاده است، این خطا را مشاهده کنید. شما باید میزان استفاده از منابع روی سرور را بررسی کنید تا علت آن را مشخص کنید.

File Not Found:

یک خطای استاندارد 404 به این معنی است که سرور شما نمی تواند فایلی را که توسط نرم افزار مورد استفاده در دامنه فراخوانی می شود، پیدا کند. این معمولاً زمانی اتفاق می‌افتد که مالکیت یا مجوزها نادرست هستند، مسیر فایل به اشتباه فراخوانی می‌شود یا فایل کاملاً از بین رفته است.

مطالب مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *