وقتی وردپرس رو باز میکنیم و چشممون به یه خطا میفته تن و بدن آدم میلرزه! اما خب بیشتر خطاها یه سرنخی بهتون میدن که نشون میده از کجا اومدن و دلیلیشون چی بوده و وقتی شما دلیل خطا رو متوجه شدین حل کردنش هم براتون راحت‌تر میشه. متاسفانه خطای ۵۰۳ از این دسته ارورها نیست که خودش اقرار کنه از کجا سر و کله‌‌اش پیدا شده برای همین هم شاید رفع خطای ۵۰۳ یکم سخت‌تر از بقیه خطاها باشه!

توی این مقاله ما براتون از سیر تا پیاز ماجرا رو توضیح میدیم و بهتون یاد میدیم که عیب یابی این خطا رو از کجا باید شروع کرد و برای برطرف کردنش چه کاری لازمه!

خطای ۵۰۳ یا ارور Service Unavailable چیست؟

هنگامی که با خطای ۵۰۳ روبرو شدین، به این معنیه که سرور مورد نظر در دسترس نیست. برای مثال ممکنه سرویس خیلی شلوغ باشه یا تحت مراقبت باشه. بر خلاف یه سری کدهای خطای مشابه، ارور ۵۰۳ نشون میده که سایت شما آنلاین و در حال اجراست اما الان نمیتونین بهش دسترسی داشته باشین.

اون چیزی که در مورد این خطا خیلی ناراحت کننده است اینه که به سختی میشه اطلاعاتی رو برای ادامه کار پیدا کنین چون بیشتر اوقات فقط یه پیام «سرویس در دسترس نیست» براتون ظاهر میشه و نه هیچ چیز دیگه‌ای!

البته اگه خوش شانس باشین، این ارور به این دلیل اتفاق میفته که سایت وردپرس شما تحت نگهداریه چون وردپرس وقتی که یه افزونه ای رو اضافه میکنین، یه تمی رو آپدیت میکنین و یا از یه تم جدید استفاده میکنین، از سایت شما مراقبت میکند!

خطای 503

معمولاً زمان این خطا انقدر کوتاهه که اصلاً کسی متوجه اون نمیشه، اما خب با این وجود در مواردی خطای ۵۰۳ ادامه دار میشه و شما باید به فکر رفع خطای ۵۰۳ باشین . تازه تو همچین مواقعی نه تنها کاربران نمیتونن به سایت شما دسترسی پیدا کنن بلکه خودتون هم به پنل ادمین وردپرس دسترسی ندارین پس به هیچ وجه نمیتونین سایت خودتون رو به روز کنین و کارتون خیلی سخت میشه!

البته نگران نباشین ما اینجایم تا به شما روش‌های رفع ارور Service Unavailable رو یاد بدیم!

انواع خطای ۵۰۳

خطای ۵۰۳ میتونه بخاطر علت‌های زیادی به وجود بیاد و تنوع کد داره. بسته به پیکربندی سرور و مرورگر شما، نحوه ظهور خطا ممکنه متفاوت باشه:

  • ۵۰۳ Service Unavailable
  • 503 Service Temporarily Unavailable
  • HTTP Server Error 503
  • HTTP Error 503
  • Error 503 Service Unavailable
  • The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

این کد به هرشکلی هم که ظاهر بشه باید تا دیر نشده و کار از کار نگذشته برای برطرف کردن اون یه اقدامی کنین.

نحوه رفع خطای ۵۰۳

از اونجایی که شما اغلب نمیتونین مطمئن باشین چه عاملی باعث به وجود اومدن همچین خطایی شده، لازمه دنبال روش‌های عیب یابی ارور ۵۰۳ باشین. ما در زیر شش روش برای عیب یابی و رفع ارور ۵۰۳ جمع آوری کردیم.

بریم که با این مراحل آشنا بشیم:

۱. غیرفعال کردن موقتی پلاگین‌های وردپرس

یکی از شایع‌ترین دلایل خطای ۵۰۳ در وردپرس، مشکلات سازگاری افزونه هاست. برای تعیین این که آیا کدوم یکی از این افزونه ها مقصر به وجود اومدن این خطا هستند باید همه اونها رو به طور موقتی غیر فعال کنین. پس در واقع اولین روش ما برای رفع خطای ۵۰۳ غیرفعال کردن موقتی همه افزونه هاست! چطوری این کار رو انجام بدیم؟! بریم که ببینیم:

از اونجایی که خطای وردپرس مانع از دسترسی شما به پنل ادمین میشه، پس باید از یه کلاینت FTP استفاده کنین که ما به شما FileZilla رو پیشنهاد میکنیم.

پس از آماده شدن سرویس گیرنده FTP، از طریق اون به سایت خودتون متصل بشین و به پوشه “WordPress Root” برین. البته اگه نمیتونین فایلی با این اسم پیدا کنین، یادتون باشه که معمولاً بهش public-html, html, public, www یا نام سایت خودتون هم میگن!!

غیر فعال کردن پلاگین

سپس اون پوشه رو باز کنین و به دایرکتوری “wp-content” برین. در داخل اون یه فایلی به اسم “Plugins” قرار داره که شامل زیر شاخه‌های جداگونه برای هر کدوم از افزونه های نصب شده روی سایت شماست (چه فعال و چه غیرفعال)!

کاری که الان باید انجام بدین اینه که روی پوشه “Plugins” کلیک راست کنین و اسم اون رو تغییر بدین.

پلاگین ها

حالا دیگه وردپرس نمیتونه افزونه های شما رو تشخیص بده پس در حقیقت افزونه ها به طور خودکار غیرفعال شدن! حالا باید تلاش کنین تا به داشبورد وردپرس دسترسی پیدا کنین. اگه دیدین با این کار باعث رفع خطای ۵۰۳ شدین، میتونین نتیجه بگیرین که یکی از افرونه های شما مقصر اصلی برای این اتفاقه! پس باید اون رو پیدا کنین.

به دایرکتوری “wp-content” برگردین و پوشه “Plugins” رو به اسم اصلی خودش تغییر نام بدین. حالا باید یکی افزونه ها رو غیر فعال کنین و ببینین که سر کدوم یکی از اونها باز خطا اتفاق میفته.

برای این کار کافیه دایرکتوری “wp-content/plugins” رو باز کنین. در داخل اون برای هر پلاگینی یه فولدر وجود داره:

  • کار خودتون رو با اولین فولدر شروع کنین و اون رو تغییر نام بدین.
  • وبسایت رو باز کنین و ببنین که آیا خطا از بین رفته یا نه!
  • اگه خطا از بین نرفته به مرحله قبل برگردین و نام فولدر رو به اسم اصلیش تغییر بدین.
  • تا زمانی که افزونه مقصر رو پیا نکردین به همین کار ادامه بدین.

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

2. غیرفعال کردن تم وردپرس

دومین راه حل برای رفع ارور Service Unavailable ، غیرفعال کردن تم وردپرس است. پس یعنی تم شما هم میتونه باعث و بانی یه ارور ۵۰۳ بشه!

متاسفانه این روند به سادگی روند قبلی نیست و اگه پوشه تم رو تغییر نام بدین، وردپرس به تم پیش فرض خودش برنمیگرده و شما با یه خطایی مثل “The theme directory , theme name doesn’t exist” روبرو میشین.

پس با این تفاسیر لازمه که از طریق “phpMyAdmin” وارد پایگاه داده وردپرس بشین. روی گزینه “wp_options” کلیک کنین و سپس گزینه “Search” رو انتخاب کنین. سپس تو این بخش دنبال “option_name” بگردین.

phpMyAdmin

زیر قسمت “option_value” اسم فعلی تم خودتون رو می‌بینین. اون رو به یکی از اسم‌های پیش فرض مثل Twentynineteen تغییر بدین.

رفع خطای 503

حالا یه بار دیگه وبسایت خودتون رو چک کنین و ببینین با این کار تونسین باعث رفع مشکل ۵۰۳ بشین یا خیر! اگه خطا رفع شده بود یعنی تم شما مشکل داره و باید یه بار دیگه اون رو نصب کنین یا این که بیخیال اون بشین!

۳. غیرفعال کردن موقت CDN

گاهی اوقات خطای ۵۰۳ به دلیل وجود یه مشکل در سایت شما نیست، بلکه یه ایرادی تو شبکه تحویل محتوا CDN وجود داره و سریع‌ترین راه برای رفع خطای ۵۰۳ یی که به این دلیل اتفاق افتاده، غیرفعال کردن موقتی CDN است!

هر CDN باید دارای ویژگی‌هایی باشه که شما بتونین هر موقع که خواستین سرویسش رو متوقف کنین.

روندی که شما باید دنبال کنین، با توجه به نوع CDN که دارین متفاوته. البته Cloudflare هم میتونه باعث ایجاد خطای ۵۰۳ بشه. اگه نمیتونین گزینه توقف رو پیدا کنین، بهتره پایگاه داده سرویس خودتون رو بررسی کنین چون اونجا یه سری دستورالعمل‌های دقیقی وجود داره.

البته اگه از CDN استفاده نمیکنین و یا توقف شبکه توزیع محتوا باعث رفع ارور ۵۰۳ در سایت نشد، بهتره روش بعدی رو دنبال کنین تا جواب بگیرین!

۴. محدود کردن API Heartbeat در وردپرس

Heartbeat یه API ساخته شده در وردپرس است که برای ذخیره خودکار محتوا، نشون دادن اعلانات مربوط به پلاگین، نشون دادن این که فرد دیگه‌ای در حال استفاده از پستی که شما میخواین ازش استفاده کنین، هست یا نه و غیره به کار برده میشه.

درست مثل ضربان قلب، heartbeat هم در بک اند باید با یه فرکانس بالایی کار کنه تا یه موقع چیزی رو از دست نده. همونطور که میدونین این API منابع سرور رو مصرف میکنه و معمولاً این کار مشکلی به وجود نمیاره اما اگه سرور شما نتونه این بار رو تحمل کنه ممکنه منجر به ارور ۵۰۳ بشه.

سریع‌ترین راه برای این که متوجه بشین آیا این API باعث مشکلات شما شده یا نه، اینه که اون رو به صورت موقتی غیرفعال کنین و ببینین که آیا با این کار میتونین به رفع خطای ۵۰۳ کمکی کنین یا خیر!

برای انجام این کار باید برین سراغ یه برنامه FTP که بتونین فایل های روی سرور رو مدیریت کنین.

کلاینت FTP

از طریق اون به سایت متصل بشین و سپس پوشه تم فعلی خودتون رو باز کنین و فایل “Functions.php” رو داخل اون جستجو کنین:

روی فایل کلیک راست کنین و گزینه “View/Edit” رو انتخاب کنین، وقتی که باز شد باید قطعه کد زیر رو به اون اضافه کنین:


            add_action( 'init', 'stop_heartbeat', 1 ); function stop_heartbeat() { wp_deregister_script('heartbeat'); }
                            

این سه تا خط کد، به وردپرس میگه که heartbeat API رو غیرفعال کنین. تغییرات رو در پرونده “Functions.php” ذخیره کنین و اون رو ببینین. حالا سعی کنین به سایت خودتون دسترسی پیدا کنین.

اگه دیدین این کار باعث رفع خطای Service Unavailable شد یعنی این که مشکل از همین API بوده، البته غیرفعال کردن دائمی اون رو بهتون توصیه نمیکنیم چون ممکنه چیزهای خوب زیادی رو از دست بدین ولی بهتره اون رو کند کنین تا دیگه مشکلی پیش نیاد.

ساده‌ترین راه برای کند کردن اون اینه که افزونه Heartbeat Control رو نصب کنین، فعالش کنین و سپس به بخش “Settings→ Heartbeat control” برین. دنبال گزینه “Modify Heartbeat” بگردین و Frequency اون رو روی کمترین حالت تنظیم کنین.

Heartbeat API

تغییرات رو در تنظیمات خودتون ذخیره کنین و به پرونده “Functions.php” برگردین. برای اعمال تغییرات فوق، باید رشته کد اضافه شده رو حذف کنین و سپس تغییرات رو در پرونده ذخیره کنین.

اگه مشکل از Heartbeat API باشه، دیگه باید تو این مرحله خطای ۵۰۳ رفع بشه و اگه نشد یعنی باید برین سراغ روش بعدی!

۵. افزایش منابع سرور

اگه با وجود همه تلاش‌هایی که کردین، باز هم ارور ۵۰۳ باقی مونده، احتمالاً مشکل شما از کمبود منابع سروره. یعنی لازمه که برنامه میزبانی خودتون رو به روز کنین تا ببینین آیا این مسئله میتونه باعث رفع خطای ۵۰۳ بشه یا خیر!

همچین چیزی مخصوصاً اگه از یه هاست ارزون قیمت استفاده میکنین میتونه باعث ارور ۵۰۳ بشه، چون این جور هاست ها از منابع کم و مشترک استفاده میکنن!

با این حال ارتقای برنامه هاستینگ یه تصمیم بزرگه و حرکت عاقلانه اینه که اول با شرکت ارائه دهنده هاستینگ خودتون تماس بگیرین و خطای ۵۰۳ رو گزاش بدین. سپس تیم پشتیبانی به شما کمک میکنه واگه لازم باشه هاستینگ رو ارتقا بدین بهتون میگه.

6. بررسی لاگ ها و فعال کردن WP_DEBUG

لازمه که برای عیب یابی از سوابق خطاهای گذشته خودتون هم استفاه کنین. اگه هاست شما Log Tool نداره، مشکلی نیست فقط کد زیر رو وارد فایل “wp-config.php” کنین تا حالت لاگ گرفتن فعال بشه:


            define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
                            

لاگ ها معمولاً در قسمت دایرکتوری wp-content/ قرار داره. در کنارش دنبال فایلی بگردین که اسمش debug.log است و اون رو باز کنین.

رفع خطای 503

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

همچنین میتونین پرونده‌های گزارش رو در Appache و Nginx که معمولاً داخل آدرس‌های زیر قرار دارن، بررسی کنین:

Appache: /var/log/apache2/error.log

Nginx:/var/log/nginx/error.log

اگه خطای ۵۰۳ به دلیل خطای PHP نمایش داده میشه اصلاً نگران نباشین، گزارش خطای PHP رو فعال کنین و کد زیر رو به پرونده اضافه کنین:


            ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);