وقتی وردپرس رو باز میکنیم و چشممون به یه خطا میفته تن و بدن آدم میلرزه! اما خب بیشتر خطاها یه سرنخی بهتون میدن که نشون میده از کجا اومدن و دلیلیشون چی بوده و وقتی شما دلیل خطا رو متوجه شدین حل کردنش هم براتون راحتتر میشه. متاسفانه خطای 503 از این دسته ارورها نیست که خودش اقرار کنه از کجا سر و کلهاش پیدا شده برای همین هم شاید رفع خطای 503 یکم سختتر از بقیه خطاها باشه!
توی این مقاله ما براتون از سیر تا پیاز ماجرا رو توضیح میدیم و بهتون یاد میدیم که عیب یابی این خطا رو از کجا باید شروع کرد و برای برطرف کردنش چه کاری لازمه!
خطای 503 یا ارور Service Unavailable چیست؟
هنگامی که با خطای 503 روبرو شدین، به این معنیه که سرور مورد نظر در دسترس نیست. برای مثال ممکنه سرویس خیلی شلوغ باشه یا تحت مراقبت باشه. بر خلاف یه سری کدهای خطای مشابه، ارور 503 نشون میده که سایت شما آنلاین و در حال اجراست اما الان نمیتونین بهش دسترسی داشته باشین.
اون چیزی که در مورد این خطا خیلی ناراحت کننده است اینه که به سختی میشه اطلاعاتی رو برای ادامه کار پیدا کنین چون بیشتر اوقات فقط یه پیام «سرویس در دسترس نیست» براتون ظاهر میشه و نه هیچ چیز دیگهای!
البته اگه خوش شانس باشین، این ارور به این دلیل اتفاق میفته که سایت وردپرس شما تحت نگهداریه چون وردپرس وقتی که یه افزونه ای رو اضافه میکنین، یه تمی رو آپدیت میکنین و یا از یه تم جدید استفاده میکنین، از سایت شما مراقبت میکند!
معمولاً زمان این خطا انقدر کوتاهه که اصلاً کسی متوجه اون نمیشه، اما خب با این وجود در مواردی خطای 503 ادامه دار میشه و شما باید به فکر رفع خطای 503 باشین . تازه تو همچین مواقعی نه تنها کاربران نمیتونن به سایت شما دسترسی پیدا کنن بلکه خودتون هم به پنل ادمین وردپرس دسترسی ندارین پس به هیچ وجه نمیتونین سایت خودتون رو به روز کنین و کارتون خیلی سخت میشه!
البته نگران نباشین ما اینجایم تا به شما روشهای رفع ارور Service Unavailable رو یاد بدیم!
انواع خطای 503
خطای 503 میتونه بخاطر علتهای زیادی به وجود بیاد و تنوع کد داره. بسته به پیکربندی سرور و مرورگر شما، نحوه ظهور خطا ممکنه متفاوت باشه:
- 503 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.
این کد به هرشکلی هم که ظاهر بشه باید تا دیر نشده و کار از کار نگذشته برای برطرف کردن اون یه اقدامی کنین.
نحوه رفع خطای 503
از اونجایی که شما اغلب نمیتونین مطمئن باشین چه عاملی باعث به وجود اومدن همچین خطایی شده، لازمه دنبال روشهای عیب یابی ارور 503 باشین. ما در زیر شش روش برای عیب یابی و رفع ارور 503 جمع آوری کردیم.
بریم که با این مراحل آشنا بشیم:
1. غیرفعال کردن موقتی پلاگینهای وردپرس
یکی از شایعترین دلایل خطای 503 در وردپرس، مشکلات سازگاری افزونه هاست. برای تعیین این که آیا کدوم یکی از این افزونه ها مقصر به وجود اومدن این خطا هستند باید همه اونها رو به طور موقتی غیر فعال کنین. پس در واقع اولین روش ما برای رفع خطای 503 غیرفعال کردن موقتی همه افزونه هاست! چطوری این کار رو انجام بدیم؟! بریم که ببینیم:
از اونجایی که خطای وردپرس مانع از دسترسی شما به پنل ادمین میشه، پس باید از یه کلاینت FTP استفاده کنین که ما به شما FileZilla رو پیشنهاد میکنیم.
پس از آماده شدن سرویس گیرنده FTP، از طریق اون به سایت خودتون متصل بشین و به پوشه “WordPress Root” برین. البته اگه نمیتونین فایلی با این اسم پیدا کنین، یادتون باشه که معمولاً بهش public-html, html, public, www یا نام سایت خودتون هم میگن!!
سپس اون پوشه رو باز کنین و به دایرکتوری “wp-content” برین. در داخل اون یه فایلی به اسم “Plugins” قرار داره که شامل زیر شاخههای جداگونه برای هر کدوم از افزونه های نصب شده روی سایت شماست (چه فعال و چه غیرفعال)!
کاری که الان باید انجام بدین اینه که روی پوشه “Plugins” کلیک راست کنین و اسم اون رو تغییر بدین.
حالا دیگه وردپرس نمیتونه افزونه های شما رو تشخیص بده پس در حقیقت افزونه ها به طور خودکار غیرفعال شدن! حالا باید تلاش کنین تا به داشبورد وردپرس دسترسی پیدا کنین. اگه دیدین با این کار باعث رفع خطای 503 شدین، میتونین نتیجه بگیرین که یکی از افرونه های شما مقصر اصلی برای این اتفاقه! پس باید اون رو پیدا کنین.
به دایرکتوری “wp-content” برگردین و پوشه “Plugins” رو به اسم اصلی خودش تغییر نام بدین. حالا باید یکی افزونه ها رو غیر فعال کنین و ببینین که سر کدوم یکی از اونها باز خطا اتفاق میفته.
برای این کار کافیه دایرکتوری “wp-content/plugins” رو باز کنین. در داخل اون برای هر پلاگینی یه فولدر وجود داره:
- کار خودتون رو با اولین فولدر شروع کنین و اون رو تغییر نام بدین.
- وبسایت رو باز کنین و ببنین که آیا خطا از بین رفته یا نه!
- اگه خطا از بین نرفته به مرحله قبل برگردین و نام فولدر رو به اسم اصلیش تغییر بدین.
- تا زمانی که افزونه مقصر رو پیا نکردین به همین کار ادامه بدین.
اگه افزونه های شما زیاد باشه ممکنه این کار یه مدت زمان زیادی طول بکشه اما خب اصلاً نمیشه از این کار چشم پوشی کرد چون چیز مهمیه. وقتی هم که افزونه مقصر رو پیدا کردین میتونین اون رو حذف یا جایگزین کنین.
2. غیرفعال کردن تم وردپرس
دومین راه حل برای رفع ارور Service Unavailable ، غیرفعال کردن تم وردپرس است. پس یعنی تم شما هم میتونه باعث و بانی یه ارور 503 بشه!
متاسفانه این روند به سادگی روند قبلی نیست و اگه پوشه تم رو تغییر نام بدین، وردپرس به تم پیش فرض خودش برنمیگرده و شما با یه خطایی مثل “The theme directory , theme name doesn’t exist” روبرو میشین.
پس با این تفاسیر لازمه که از طریق “phpMyAdmin” وارد پایگاه داده وردپرس بشین. روی گزینه “wp_options” کلیک کنین و سپس گزینه “Search” رو انتخاب کنین. سپس تو این بخش دنبال “option_name” بگردین.
زیر قسمت “option_value” اسم فعلی تم خودتون رو میبینین. اون رو به یکی از اسمهای پیش فرض مثل Twentynineteen تغییر بدین.
حالا یه بار دیگه وبسایت خودتون رو چک کنین و ببینین با این کار تونسین باعث رفع مشکل 503 بشین یا خیر! اگه خطا رفع شده بود یعنی تم شما مشکل داره و باید یه بار دیگه اون رو نصب کنین یا این که بیخیال اون بشین!
3. غیرفعال کردن موقت CDN
گاهی اوقات خطای 503 به دلیل وجود یه مشکل در سایت شما نیست، بلکه یه ایرادی تو شبکه تحویل محتوا CDN وجود داره و سریعترین راه برای رفع خطای 503 یی که به این دلیل اتفاق افتاده، غیرفعال کردن موقتی CDN است!
هر CDN باید دارای ویژگیهایی باشه که شما بتونین هر موقع که خواستین سرویسش رو متوقف کنین.
روندی که شما باید دنبال کنین، با توجه به نوع CDN که دارین متفاوته. البته Cloudflare هم میتونه باعث ایجاد خطای 503 بشه. اگه نمیتونین گزینه توقف رو پیدا کنین، بهتره پایگاه داده سرویس خودتون رو بررسی کنین چون اونجا یه سری دستورالعملهای دقیقی وجود داره.
البته اگه از CDN استفاده نمیکنین و یا توقف شبکه توزیع محتوا باعث رفع ارور 503 در سایت نشد، بهتره روش بعدی رو دنبال کنین تا جواب بگیرین!
4. محدود کردن API Heartbeat در وردپرس
Heartbeat یه API ساخته شده در وردپرس است که برای ذخیره خودکار محتوا، نشون دادن اعلانات مربوط به پلاگین، نشون دادن این که فرد دیگهای در حال استفاده از پستی که شما میخواین ازش استفاده کنین، هست یا نه و غیره به کار برده میشه.
درست مثل ضربان قلب، heartbeat هم در بک اند باید با یه فرکانس بالایی کار کنه تا یه موقع چیزی رو از دست نده. همونطور که میدونین این API منابع سرور رو مصرف میکنه و معمولاً این کار مشکلی به وجود نمیاره اما اگه سرور شما نتونه این بار رو تحمل کنه ممکنه منجر به ارور 503 بشه.
سریعترین راه برای این که متوجه بشین آیا این API باعث مشکلات شما شده یا نه، اینه که اون رو به صورت موقتی غیرفعال کنین و ببینین که آیا با این کار میتونین به رفع خطای 503 کمکی کنین یا خیر!
برای انجام این کار باید برین سراغ یه برنامه 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 اون رو روی کمترین حالت تنظیم کنین.
تغییرات رو در تنظیمات خودتون ذخیره کنین و به پرونده “Functions.php” برگردین. برای اعمال تغییرات فوق، باید رشته کد اضافه شده رو حذف کنین و سپس تغییرات رو در پرونده ذخیره کنین.
اگه مشکل از Heartbeat API باشه، دیگه باید تو این مرحله خطای 503 رفع بشه و اگه نشد یعنی باید برین سراغ روش بعدی!
5. افزایش منابع سرور
اگه با وجود همه تلاشهایی که کردین، باز هم ارور 503 باقی مونده، احتمالاً مشکل شما از کمبود منابع سروره. یعنی لازمه که برنامه میزبانی خودتون رو به روز کنین تا ببینین آیا این مسئله میتونه باعث رفع خطای 503 بشه یا خیر!
همچین چیزی مخصوصاً اگه از یه هاست ارزون قیمت استفاده میکنین میتونه باعث ارور 503 بشه، چون این جور هاست ها از منابع کم و مشترک استفاده میکنن!
با این حال ارتقای برنامه هاستینگ یه تصمیم بزرگه و حرکت عاقلانه اینه که اول با شرکت ارائه دهنده هاستینگ خودتون تماس بگیرین و خطای 503 رو گزاش بدین. سپس تیم پشتیبانی به شما کمک میکنه واگه لازم باشه هاستینگ رو ارتقا بدین بهتون میگه.
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 است و اون رو باز کنین.
به طور خلاصه لاگ شامل هر نوع خطایی که تو سایت شما اتفاق افتاده به ترتیب زمان است. پس بهتون نشون میده که کدوم پرونده باعث ایجاد خطا شد.
همچنین میتونین پروندههای گزارش رو در Appache و Nginx که معمولاً داخل آدرسهای زیر قرار دارن، بررسی کنین:
Appache: /var/log/apache2/error.log
Nginx:/var/log/nginx/error.log
اگه خطای 503 به دلیل خطای PHP نمایش داده میشه اصلاً نگران نباشین، گزارش خطای PHP رو فعال کنین و کد زیر رو به پرونده اضافه کنین:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);