مواجه شدن با خطا ها در سایت های وردپرسی همیشه ناامید کننده است. برای رفع هر خطا لازم است قبل از هرچیز دلیل ایجاد خطا را بیابیم که همیشه میتواند عیبیابی ارور را آسان تر کند. یافتن دلیل خطای 503 کار دشواری است زیرا سرنخ چندانی راجب ایجاد خطا نداریم. در این مقاله به رایج ترین دلایل ایجاد ارور 503 خواهیم پرداخت، برای یافتن علت این خطا و رفع آن لازم است چندین روش را دنبال کنیم.
خطای HTTP 503 Service Unavailable چیست؟
خطا های 5XX از خطاهای سمت سرور است، خطای 503 در وردپرس به معنی این است که در حال حاضر نمیتوانید به سایت وردپرس دسترسی داشته باشید، زیرا سرور مورد نظر در دسترس نیست و علت در دسترس نبودن سرور ممکن است این باشد که منابع سرور به شدت درگیر هستند، سرور تحت تعمیر است و یا موارد دیگری که نیاز به تجزیه و تحلیل عمیقتری دارد.
غیر از خطای 503 خطا های زیادی در وردپرس وجود دارد که ممکن است به دفعات آن ها را مشاهده کرده باشید از جمله این خطا ها میتوان به موارد زیر اشاره کرد:
- ارور 429 Too Many Requests
- ارور 500 Internal Server
- ارور 404 not found
- ارور 408 Request Timeout
- ارور 413 Request Entity Too Large
علت وجود ارور HTTP 503
HTTP 503 Service Unavailable نشان میدهد که وب سایت آنلاین و در حال اجرا است، اما در حال حاضر نمیتوان به آن دسترسی پیدا کرد پس مشکل از سایت نیست. چیزی که در مورد این خطا آزار دهنده است عدم اطلاعات کافی برای پیدا کردن خطا و رفع آن است.
یکی از دلایل بروز خطای 503 میتواند بروزرسانی وردپرس باشد. وردپرس زمانی که در حال بروزرسانی یک افزونه و یا یک قالب است سایت را در حالت تعمیر قرار میدهد، معمولاً این تایم اوت آنقدر کوتاه است که کسی متوجه آن نمیشود. از این گذشته هنگام بروز خطای 503 نه تنها کاربران نمیتوانند از سایت بازدید کنند بلکه دسترسی به بخش مدیریت وردپرس را نیز از دست خواهید داد و این مسئله کار را کمی سخت میکند، این بدان معناست که به هیچ وجه نمیتوانید سایت را بروز کنید و برای عیبیابی آن باید فایل های سایت را جستجو کنید.
ساختار مختلف خطای 503
ارور 503 میتواند به طریق مختلف ظاهر شود، در اینجا برخی از تغییراتی که ممکن است با آنها روبرو شوید، نسبت به پیکربندی سرور و مرورگر آمده است:
- 503 Service Unavailable
- 503 Service Temporarily Unavailable
- خطای سرور HTTP 503
- HTTP Error 503
- Error 503 Service Unavailable
به دلیل خرابی، تعمیر و نگهداری یا مشکلات ظرفیت، سرور به طور موقت قادر به ارائه درخواست نیست. در هر صورت خطایی که با آن مواجه میشوید هر چیزی که باشد به این معنی است که قبل از اینکه بر روی کاربرانتان تاثیر منفی بگذارد باید سریع دست به کار شوید و آن را رفع کنید.
بیشتر بخوانید: نصب وردپرس روی ساب دامین در سی پنل
نحوه رفع خطای 503 در وردپرس
از آنجایی که اغلب نمیتوانید مطمئن باشید که چه چیزی باعث خطای 503 شده است باید هوشمندانه ارور را عیبیابی کنید. در ادامه به راه های مختلف برای رفع ارور 503 خواهیم پرداخت هر کدام از موارد ذکر شده به بررسی یکی از راه حل های رفع این خطا میپردازد. پس از هر مرحله، به وب سایت بازگردید و ببینید آیا خطای 503 برطرف شده است یا خیر؟ اگر اینطور است با موفقیت مشکل را برطرف کرده اید، اگر نه به مرحله بعدی روند ادامه دهید.
مرحله 1 : به طور موقت افزونه های وردپرس را غیرفعال کنید
یکی از رایج ترین دلایل خطای 503 در وردپرس مشکلات سازگاری افزونهها است، برای تعیین اینکه آیا این اتفاق میافتد یا خیر؟ باید همه افزونه های سایت را غیرفعال کنید. از آنجایی که خطای 503 مانع از دسترسی به بخش مدیریت وردپرس میشود، برای این مرحله لازم است وارد بخش cPanel سایت شوید. در قسمت File بر روی گزینه File manager کلیک کنید.
به پوشه ریشه وردپرس بروید اگر نمیتوانید آن را پیدا کنید، معمولاً در هاست لینوکس سیپنل public_html و در هاست دایرکت ادمین www نامیده میشود.
به دایرکتوری wp-content بروید، پوشهای به نام plugins را مشاهده خواهید کرد که شامل پوشههای جداگانه برای هر یک از افزونههای نصب شده در سایت (اعم از فعال و غیرفعال) است.
روی پوشه افزونهها راست کلیک کنید و نام آن را به نام دیگری تغییر دهید، ما plugins.old یا plugins.deactivated را توصیه میکنیم تا بتوانید بعدا پوشهی افزونهها را به راحتی تشخیص دهید، وردپرس اکنون نمیتواند هیچ یک از افزونه ها را پیدا کند. هنگامی که این اتفاق میافتد به طور خودکار افزونه ها را غیرفعال میکند. اکنون سعی کنید به داشبورد وردپرس دسترسی پیدا کنید، اگر خطای 503 رفع شده باشد میتوانید فرض کنید مشکل یکی از افزونه های سایت است. راه حل رفع خطای 503 پیدا کردن افزونهایست که باعث ایجاد این خطا شده است.
به دایرکتوری wp-content برگردید و نام پوشه پلاگین اصلی را به درستی تغییر دهید. سپس، باید هر یک از افزونهها را یک به یک غیرفعال کنید تا زمانی که افزونه مورد نظر را پیدا کنید. برای انجام این کار، دایرکتوری wp-content/plugins را باز کنید. در داخل wp-content برای هر یک از پلاگین ها یک پوشه پیدا خواهید کرد. روندی که لازم است دنبال کنید تقریباً مانند قبل است:
نام تک تک پلاکین ها را تغییر دهید تا وردپرس قادر به شناسایی آن نباشد سپس وبسایت را بررسی کنید تا ببینید آیا خطای سایت رفع شده است یا خیر؟ در غیر اینصورت پوشه را به نام قبلی بازگردانید. تمامی پلاگین های وردپرس را با این روش امتحان کنید تا متوجه این موضوع شوید که مشکل از کدام پلاگین است. اگر پلاگین های زیادی دارید این فرآیند ممکن است کمی طول بکشد اما بررسی هر افزونه بهنوبه خود بسیار مهم است. اگر در هر مرحله افزونهای را که باعث خطا میشود شناسایی کردید میتوانید آن را حذف و مجددا نصب کنید یا با یک افزونه با کارایی مشابه جایگزین کنید. اگر بدون یافتن راه حل به پایان این مراحل برسید، میتوانید به مرحله بعدی عیبیابی بروید.
مرحله 2 : قالب وردپرس را غیرفعال کنید
اکنون که پلاگین ها را به عنوان دلیل خطای 503 رد کردهاید، وقت آن است که موضوع کلیتری را مورد بررسی قرار دهید، درواقع موضوع میتواند عدم سازگاری قالب باشد. متاسفانه غیر فعال کردن قالب سایت به سادگی غیر فعال کردن یک پلاگین نیست اگر بخواهید مانند روش قبل نام پوشه قالب را در wp-content تغییر دهید با خطایی همچون ” فهرست قالب خالی است” “ERROR: The themes directory is either empty or doesn’t exist. Please check your installation.” مواجه خواهید شد . بنابراین، باید با ورود به phpMyAdmin به پایگاه داده وردپرس دسترسی پیدا کنید.
روی جدول “wp_options” کلیک کنید، در “option_name” نام قالب سایت را جستجو کنید، در زیر ستون “option_value” نام فعلی قالب سایت را خواهید دید، این نام را به یکی از قالب های پیش فرض مانند “twentyneteen” تغییر دهید. دوباره وب سایت را بررسی کنید، آیا خطا برطرف شده است یا خیر؟
اگر خطای 503 برطرف شده باشد، بدین معنی است که دلیل ایجاد این ارور قالب سایت شماست. میتوانید قالب سایت را دوباره نصب کنید یا آن را بروزرسانی کنید. در صورتی که برای نصب قالب به راهنمایی نیاز دارید میتوانید مقاله آموزش نصب قالب وردپرس را مطالعه نمایید.
مرحله 3 : غیر فعال کردن CDN
میتوانید به طور موقت شبکه توزیع محتوا CDN را غیرفعال کنید، گاهی اوقات CDN خطای 503 را ایجاد میکند، یک راه سریع برای فهمیدن اینکه خطا به دلیل CDN است یا خیر؟ غیرفعال کردن موقت آن است، بسته به اینکه از کدام CDN استفاده میکنید فرآیندی که باید دنبال کنید ممکن است متفاوت باشد همچنین دیده شده است که Cloudflare گاهی اوقات باعث ایجاد خطاهای 503 میشود.
اگر از CDN استفاده نمیکنید یا متوجه میشوید که توقف موقت CDN به مشکل شما کمکی نمیکند، هنوز چند راه حل دیگر وجود دارد که باید امتحان کنید به یاد داشته باشید قبل از شروع مجدد CDN را فعال کنید.
مرحله 4 : محدود کردن Heartbeat API وردپرس
WordPress Heartbeat یک API است که در وردپرس تعبیه شده است که پلتفرم آن برای ذخیره خودکار محتوا، نمایش اعلانهای افزونه، اطلاع رسانی در مورد اینکه آیا شخص دیگری بر روی محتوایی که میخواهید به آن دسترسی داشته باشید کار میکند یا خیر و یا برای موارد دیگر استفاده میشود، همانطور که ممکن است تصور کنید این API منابع سرور را مصرف میکند، معمولاً این مشکلی نیست اما در برخی موارد اگر سرور نتواند بارگذاری را انجام دهد ممکن است منجربه خطای 503 شود.
سریعترین راه برای تعیین اینکه آیا Heartbeat API در مرکز مشکلات قرار دارد یا خیر؟ غیرفعال کردن موقت آن است، برای انجام این کار از طریق cPanel به وبسایت وردپرس متصل شوید، سپس پوشه قالب های فعلی را باز کنید و فایل functions.php را در مسیر wp-content پوشه theme >> نام قالب >> جستجو کنید: روی فایل کلیک راست کرده و گزینه View/Edit را انتخاب کنید، سپس باید قطعه کد زیر را به آن اضافه کنید:
add_action( ‘init’, ‘stop_heartbeat’, 1 );
function stop_heartbeat() {
wp_deregister_script(‘heartbeat’);
}
این سه خط کد به وردپرس میگویند که Heartbeat API را غیرفعال کند. تغییرات را در فایل functions.php ذخیره کنید، سعی کنید دوباره به وب سایت دسترسی پیدا کنیدپ اگر خطای 503 برطرف شد میدانید که مشکل API بوده است. با این حال غیرفعال کردن WordPress Heartbeat بسیاری از عملکردهای مفید را حذف میکند، توصیه میکنیم آن را «آهسته» کنید تا مشکلی ایجاد نکند.
ساده ترین راه برای انجام این کار، نصب پلاگین Heartbeat Control است. افزونه را فعال کنید و به بخش تنظیمات >> کنترل ضربان قلب بروید. به دنبال گزینه های Modify Heartbeat بگردید و فرکانس را به کمترین عدد ممکن کاهش دهید. تغییرات را در تنظیمات ذخیره کنید و به فایل functions.php که مدتی قبل تغییر دادهاید بازگردید، برای اینکه تغییراتی که ایجاد کردهاید اعمال شود آن را ذخیره کنید، باید رشته کدی را که قبلا اضافه کرده اید حذف کنید و تغییرات را در فایل ذخیره کنید. در این مرحله اگر مشکل Heartbeat API باشد خطای 503 باید برطرف شود اگر اینطور نیست وقت آن است که یک روش متفاوت را امتحان کنید.
مرحله 5 : افزایش منابع سرور
اگر خطای 503 با وجود تمام تلاشهایی که تاکنون برای رفع آن انجام دادهاید همچنان رخ میدهد، احتمال آن وجود دارد که این مشکل به دلیل کمبود منابع سرور باشد. به این معنا که باید سرور را ارتقا دهید تا ببینید آیا مشکل را برطرف میکند یا خیر؟ این امر مخصوصاً اگر از هاست با منابع کم استفاده میکنید ممکن است اتفاق بیفتد، میتوانید از انواع پلن های مختلف هاست وردپرس در نظر گرفته شده استفاده کنید تا با توجه به منابع مورد نیاز هر یک از آنها را انتخاب نمایید.
مرحله 6 : گزارش ها را مرور کنید
وارد دایرکتوری log در cPanel شوید، اگر هاست ابزار لاگ ندارد میتوانید کد زیر را به فایل wp-config.php اضافه کنید تا گزارشات را فعال کند:
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );
گزارشها معمولاً در پوشه /wp-content قرار دارند به دنبال فایلی به نام Error log بگردید و آن را باز کنید، تفسیر گزارش عیبیابی میتواند کمی ترسناک باشد اما خواندن آن آنقدر که تصور میکنید سخت نیست، به طور خلاصه گزارش شامل هر خطایی است که در سایت به ترتیب زمانی ظاهر میشود، این نشان میدهد که کدام فایل باعث هر خطا شده است و همچنین کدام خطوط خاص کد درگیر خطا شده است.
در نظر داشته باشید در log ارجاع مستقیم به خطای 503 پیدا نخواهید کرد. با این حال اگر همه چیز شکست خورد میتوانید با بررسی ارور های ایجاد شده در مسیر درست قرار بگیرید، به این ترتیب میدانید که تلاشهایتان را در کجا متمرکز کنید.
اگر خطای 503 به دلیل یک خطای PHP نمایش داده میشود، میتوانید گزارش خطای PHP را نیز فعال کنید. کد زیر را به فایل log اضافه کنید.
ini_set(‘display_errors’, 1);
ini_set(‘display_startup_errors’, 1);
error_reporting(E_ALL);
و ممکن است لازم باشد فایل php.ini را تغییر دهید:
display_errors = on
مواردی که تا اینجای کار به آن اشاره کردیم راه حل های احتمالی برای رفع خطای 503 است. امیدواریم توانسته باشیم در رفع error HTTP 503 Service Unavailable به شما کمک کرده کنیم.