رفتن به محتوای اصلی
موتور وردپرس WPMotor.ir
عیب یابی

آموزش رفع خطای بحرانی در وردپرس؛ وقتی سایت بالا نمی‌آید چه کنیم؟

11 دقیقه مطالعه آخرین به‌روزرسانی:

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

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

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

خطای بحرانی وردپرس چیست؟

وردپرس برای اجرای سایت از زبان PHP استفاده می‌کند. افزونه‌ها و پوسته‌ها نیز می‌توانند کدهای PHP اجرا کنند و قابلیت‌های مختلفی به سایت اضافه کنند.

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

چند مورد از دلایل رایج این مشکل عبارت‌اند از:

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

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

۱. قبل از هر کاری، تغییرات اخیر را بررسی کنید

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

آیا افزونه جدیدی نصب کرده‌اید؟ نسخه یکی از افزونه‌ها را به‌روزرسانی کرده‌اید؟ پوسته را تغییر داده‌اید یا کدی را در یکی از فایل‌های سایت قرار داده‌اید؟

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

برای مثال، اگر بعد از نصب یک افزونه جدید سایت از کار افتاده است، بهتر است ابتدا همان افزونه را بررسی کنید؛ نه اینکه تمام افزونه‌ها را غیرفعال کنید یا وردپرس را دوباره نصب کنید.

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

۲. ایمیل بازیابی وردپرس را بررسی کنید

در نسخه‌های جدید وردپرس، هنگام بروز برخی خطاهای بحرانی، سیستم می‌تواند یک ایمیل اطلاع‌رسانی برای مدیر سایت ارسال کند. این ایمیل معمولاً اطلاعاتی درباره مشکل و گاهی پیوند ورود به حالت بازیابی (Recovery Mode) در اختیار شما قرار می‌دهد.

ابتدا صندوق ورودی ایمیلی را که برای مدیریت سایت استفاده می‌کنید بررسی کنید. پوشه هرزنامه را هم فراموش نکنید.

اگر ایمیل بازیابی را دریافت کرده‌اید، مراحل زیر را دنبال کنید:

۱. پیوند ورود به حالت بازیابی را باز کنید.

۲. با حساب کاربری مدیر سایت وارد شوید.

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

۴. اگر مؤلفه مشکل‌ساز مشخص شده است، آن را به‌روزرسانی کنید، تنظیماتش را اصلاح کنید یا موقتاً غیرفعال کنید.

۵. پس از رفع مشکل، از حالت بازیابی خارج شوید و سایت را در وضعیت عادی بررسی کنید.

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

اگر ایمیل بازیابی دریافت نکرده‌اید، نگران نباشید. همچنان می‌توانید از روش‌های بعدی استفاده کنید.

۳. اگر به پیشخوان دسترسی دارید، افزونه مشکل‌ساز را پیدا کنید

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

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

اگر مشکل برطرف شد، احتمال دارد آن افزونه در بروز خطا نقش داشته باشد. البته برای اطمینان بیشتر، باید علت دقیق را بررسی کنید؛ زیرا ممکن است مشکل از تداخل چند افزونه یا ناسازگاری نسخه‌های آن‌ها باشد.

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

این روش زمان‌بر است، اما در بسیاری از موارد به شناسایی افزونه مشکل‌ساز کمک می‌کند.

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

۴. اگر پیشخوان باز نمی‌شود، افزونه‌ها را از طریق فایل منیجر غیرفعال کنید

گاهی خطای بحرانی به‌اندازه‌ای جدی است که حتی صفحه ورود به پیشخوان وردپرس هم باز نمی‌شود. در این وضعیت، می‌توانید از فایل منیجر هاست یا اتصال SFTP استفاده کنید.

ابتدا وارد فایل‌های سایت شوید و پوشه زیر را پیدا کنید:

wp-content/plugins

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

برای مثال، اگر نام پوشه افزونه example-plugin باشد، می‌توانید آن را به example-plugin-disabled تغییر دهید. وردپرس دیگر نمی‌تواند افزونه را از مسیر قبلی بارگذاری کند و معمولاً آن را غیرفعال‌شده در نظر می‌گیرد.

حالا سایت را دوباره بررسی کنید. اگر خطا برطرف شد، افزونه موردنظر را بیشتر بررسی کنید و در صورت نیاز از نسخه سازگار آن استفاده کنید.

اگر نمی‌دانید کدام افزونه مشکل‌ساز است: می‌توانید نام پوشه plugins را موقتاً به plugins-disabled تغییر دهید. این کار معمولاً باعث می‌شود افزونه‌های موجود در آن پوشه بارگذاری نشوند.

پس از آزمایش، نام پوشه را به plugins برگردانید. اگر وردپرس همه افزونه‌ها را غیرفعال‌شده نشان داد، آن‌ها را به‌تدریج و یکی‌یکی فعال کنید تا عامل مشکل مشخص شود.

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

۵. اگر مشکل از پوسته باشد، آن را بررسی کنید

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

یکی از فایل‌هایی که در این زمینه باید بررسی شود، functions.php است. یک اشتباه نحوی یا فراخوانی نادرست تابع در این فایل می‌تواند باعث بروز خطای PHP شود.

اگر به‌تازگی کدی به این فایل اضافه کرده‌اید، ابتدا همان تغییر را بررسی کنید. بهتر است به‌جای حذف بخش‌های نامرتبط، تغییر اخیر را به‌صورت دقیق برگردانید.

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

اگر پیشخوان در دسترس نیست، از طریق فایل منیجر یا SFTP به مسیر زیر بروید:

wp-content/themes

پوشه پوسته فعال را پیدا کنید و نام آن را موقتاً تغییر دهید. در صورت وجود یک پوسته پیش‌فرض معتبر، وردپرس ممکن است بتواند از آن استفاده کند.

پیش از انجام این کار، توجه کنید که تغییر پوسته می‌تواند ظاهر سایت و بعضی از قابلیت‌های آن را تغییر دهد. همچنین اگر پوسته دیگری برای جایگزینی وجود نداشته باشد، این روش لزوماً مشکل را برطرف نمی‌کند.

اگر سایت دوباره بالا آمد، پوسته قبلی را از نظر کدنویسی، سازگاری و تغییرات اخیر بررسی کنید.

۶. با فعال‌کردن گزارش خطا، علت دقیق را پیدا کنید

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

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

برای فعال‌کردن ثبت خطاها، فایل wp-config.php را در مسیر اصلی نصب وردپرس باز کنید.

اگر تنظیمات مربوط به WP_DEBUG را از قبل دارید، همان‌ها را بررسی کنید و تعریف‌های تکراری ایجاد نکنید. در غیر این صورت، تنظیمات زیر را پیش از خطی که معمولاً با عبارت That's all, stop editing! مشخص شده است، قرار دهید:

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

با این تنظیمات، وردپرس خطاها را ثبت می‌کند، اما قرار نیست آن‌ها را مستقیماً به بازدیدکنندگان نمایش دهد.

پس از بازتولید خطا، در مسیر زیر به دنبال فایل گزارش بگردید:

wp-content/debug.log

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

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

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

بعد از پایان عیب‌یابی، تنظیمات موقت را به حالت مناسب محیط تولید برگردانید و مطمئن شوید فایل گزارش از طریق وب در دسترس عموم نیست. اگر برای ثبت خطا به فایل گزارش نیاز ندارید، آن را پس از بررسی و با رعایت نیازهای نگهداری لاگ حذف کنید.

۷. اگر خطا همچنان ادامه دارد، چه چیزهایی را بررسی کنیم؟

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

چند مورد دیگر که ارزش بررسی دارند:

نسخه PHP: بررسی کنید نسخه PHP سرور با نسخه وردپرس، پوسته و افزونه‌های نصب‌شده سازگار باشد. تغییر نسخه PHP بدون بررسی سازگاری ممکن است مشکل را برطرف نکند و حتی خطاهای تازه‌ای ایجاد کند.

محدودیت حافظه: بعضی خطاها ممکن است به کمبود حافظه در دسترس PHP مربوط باشند. در این حالت باید گزارش خطا و تنظیمات محیط اجرا را بررسی کنید؛ افزایش حافظه بدون شناخت علت، همیشه راه‌حل مناسبی نیست.

گزارش خطای سرور: اگر گزارش وردپرس اطلاعات کافی ندارد، گزارش‌های PHP-FPM یا وب‌سرور، بسته به زیرساخت سایت، ممکن است سرنخ‌های بیشتری ارائه کنند. برای دسترسی به این گزارش‌ها می‌توانید از مستندات هاست یا پشتیبانی سرویس خود کمک بگیرید.

وضعیت پایگاه داده: اگر پیام خطا به اتصال پایگاه داده اشاره می‌کند، باید آن را جداگانه بررسی کنید. خطای اتصال به پایگاه داده با خطای بحرانی ناشی از یک افزونه یکسان نیست و روش عیب‌یابی متفاوتی دارد.

تغییرات اخیر سرور: اگر خطا پس از تغییر تنظیمات هاست، ارتقای PHP یا انتقال سایت ظاهر شده است، همان تغییرات را نیز در بررسی خود در نظر بگیرید.

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

۸. چطور از تکرار خطای بحرانی جلوگیری کنیم؟

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

  • قبل از به‌روزرسانی‌های مهم نسخه پشتیبان تهیه کنید. از فایل‌های سایت و پایگاه داده نسخه پشتیبان داشته باشید و در صورت امکان، بازیابی آن را نیز آزمایش کنید.
  • افزونه‌ها و پوسته‌های غیرضروری را حذف کنید. هر مؤلفه اضافی می‌تواند نیازهای نگهداری و احتمال تداخل را افزایش دهد.
  • سازگاری نسخه‌ها را بررسی کنید. پیش از نصب یا به‌روزرسانی افزونه، شرایط سازگاری آن با وردپرس و PHP را بررسی کنید.
  • تغییرات کد را ابتدا در محیط آزمایشی انجام دهید. این کار به شما اجازه می‌دهد خطاهای احتمالی را پیش از انتشار تغییرات در سایت اصلی شناسایی کنید.
  • گزارش خطاها را به شکل امن نگهداری کنید. هنگام بروز مشکل، اطلاعات کافی برای عیب‌یابی داشته باشید؛ اما اجازه ندهید گزارش‌ها یا جزئیات داخلی سایت در دسترس عموم قرار بگیرند.
  • برای سایت‌های مهم، برنامه بازیابی داشته باشید. بدانید نسخه‌های پشتیبان کجا ذخیره شده‌اند و در صورت از کار افتادن سایت، چطور می‌توانید آن را بازیابی کنید.

جمع‌بندی

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

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

برای اطلاعات بیشتر، مستندات رسمی وردپرس درباره حالت بازیابی (Recovery Mode)، عیب‌یابی وردپرس و خطاهای رایج وردپرس منابع مفیدی هستند.

گفت‌وگو را شروع کنید

دیدگاه یا پرسش خود را درباره این مطلب با ما در میان بگذارید.