دموی رایگان

آموزش گام‌به‌گام خطای ۵۰۰ وردپرس و رفع آن

دلوین خیری مقدم خواندن ~۹ دقیقه نگهداری، مهاجرت و خطاها
آموزش گام‌به‌گام خطای ۵۰۰ وردپرس و رفع آن
خطای ۵۰۰ وردپرس یا Internal Server Error یعنی سرور با مشکل روبه‌رو شده اما نمی‌داند دقیقاً چه بوده؛ پیامش عمومی است و مقصر مشخصی ندارد. در بیشتر پروژه‌هایی که به ما ارجاع می‌شود، ریشه یکی از این پنج مورد است: افزونه یا قالب خراب، سقف حافظهٔ PHP، فایل htaccess معیوب، محدودیت منابع هاست یا نسخهٔ PHP ناسازگار. در این راهنمای گام‌به‌گام، هفت قدم تشخیص، جدول علت‌ها و روتین پیشگیری را می‌بینید؛ کاری که با آرامش، معمولاً در یک نشست بسته می‌شود.

چند دقیقه پیش سایت بالا بود، الان صفحهٔ سفید یا پیام «Internal Server Error» روی مانیتور است و پنل مدیریت هم باز نمی‌شود. حس نخست، وسوسهٔ دست‌زدن به همه‌چیز است؛ حس درست، توقف و ترتیب است. خطای ۵۰۰ برخلاف خطای ۴۰۴ که یعنی «این صفحه نیست»، یعنی سرور در میانهٔ کار به بن‌بست خورده؛ پس راه‌حل، جست‌وجوی یک آدرس غلط نیست، رسیدگی منظم به پنج مظنون همیشگی است.

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

خطای ۵۰۰ وردپرس چیست و چه فرقی با بقیهٔ خطاها دارد؟

خطای ۵۰۰ در خانوادهٔ خطاهای سمت سرور است: مشکل نه در مرورگر کاربر است، نه در آدرسی که تایپ شده؛ در فرایندی است که باید صفحه را بسازد. تفاوتش با همسایه‌هایش مهم است: خطای ۴۰۴ یعنی منبع پیدا نشده و خطای ۵۰۲ یا ۵۰۴ معمولاً به ارتباط بین سرورهای واسط برمی‌گردد؛ اما ۵۰۰ یعنی خود برنامه — در اینجا وردپرس و افزونه‌هایش — در نقطه‌ای نامشخص زمین خورده. همین «نامشخص‌بودن» است که پیام را عمومی و کار را نیازمند تشخیص می‌کند.

دو شکل رایج را از هم تفکیک کنید: خطای روی کل سایت، که معمولاً ریشهٔ سراسری دارد — فایل پیکربندی، منابع هاست، به‌روزرسانی ناقص — و خطای فقط در پنل مدیریت یا فقط در صفحات خاص، که اغلب دنبالش یک افزونه یا قالب تازه می‌گردد. سابقهٔ همین چند دقیقهٔ قبل را همیشه در نظر بگیرید: چه چیزی نصب شد، به‌روز شد یا تغییر کرد؟ به تجربهٔ ما در بیشتر مواقع، جواب تشخیص در همان سؤال ساده پنهان است و هفت قدم بعدی، راه‌حل را تأیید می‌کند نه کشف.

قبل از هر کاری: بکاپ و وضعیت اضطراری

چهار خط قرمز حین رفع
خط قرمزها را به تیم هاست و دفترچهٔ تغییرات اطلاع دهید.

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

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

آموزش گام‌به‌گام تشخیص و رفع؛ هفت قدم

هفت قدم تشخیص و رفع
هر قدم یا مشکل را می‌بندد یا یک مظنون را تبرئه می‌کند.

قدم اول، لاگ خطاست: در هاست، فایل error_log و در وردپرس، ابزار سلامت سایت را ببینید؛ آخرین ردیف‌ها معمولاً نام فایل مقصر را همراه شمارهٔ خط می‌گویند. قدم دوم، فعال‌کردن دیباگ است: ثابت WP_DEBUG را در wp-config روشن کنید تا به‌جای صفحهٔ سفید، متن خطا نمایش داده شود؛ بعد از رفع، خاموشش کنید. قدم سوم، آزمایش افزونه‌هاست: پوشهٔ plugins را تغییر نام دهید تا همهٔ افزونه‌ها موقتاً خاموش شوند؛ اگر سایت بالا آمد، پوشه را برگردانید و افزونه‌ها را یکی‌یکی فعال کنید تا مقصر پیدا شود.

قدم چهارم، قالب است: موقتاً روی یکی از قالب‌های پیش‌فرض سوییچ کنید تا قالب فعلی تبرئه یا محکوم شود. قدم پنجم، سقف حافظه است: اگر خطا به کمبود حافظهٔ PHP اشاره دارد، مقدار WP_MEMORY_LIMIT را در محدوده‌ای که هاست شما تأیید می‌کند بالا ببرید. قدم ششم، htaccess است: فایل را تغییر نام دهید تا نسخهٔ پیش‌فرض ساخته شود و از تنظیمات پیوندهای یکتا یک‌بار ذخیرهٔ مجدد بزنید. قدم هفتم، نسخهٔ PHP است: نسخهٔ ناسازگار با نسخهٔ وردپرس شما، یکی از رایج‌ترین مظنون‌های خاموش است؛ تغییرش را با تیم هاست و در ساعتی آرام انجام دهید.

این هفت قدم به‌ترتیب اجرا می‌شود و هر قدم یا مشکل را می‌بندد یا یک مظنون را تبرئه می‌کند؛ به تجربهٔ ما در اغلب پروژه‌ها قدم دوم یا سوم جواب را می‌دهد.

جدول علت‌ها؛ نشانه و قدم رفع

جدول زیر، مظنون‌های اصلی و امضای هرکدام را خلاصه می‌کند؛ ستون «نشانه» را با آنچه در لاگ و رفتار سایت می‌بینید تطبیق دهید:

علتنشانهٔ رایجقدم رفع
افزونهٔ خراب یا ناسازگارخطا بعد از نصب/به‌روزرسانی تازه؛ گاهی فقط در پنلتغییر نام پوشهٔ plugins و فعال‌سازی تک‌به‌تک
قالب معیوبخطا بعد از تغییر قالب یا ویرایش فایل‌هاسوییچ موقت به قالب پیش‌فرض
سقف حافظهٔ PHPپیام memory exhausted در لاگافزایش WP_MEMORY_LIMIT در سقف مجاز هاست
htaccess معیوبخطای سراسری بعد از ویرایش تنظیمات سرورتغییر نام فایل و ذخیرهٔ مجدد پیوندهای یکتا
محدودیت منابع هاستخطا در ساعات پیک؛ برگشت پس از رفع موقتهماهنگی با هاست؛ ارتقای پلن در صورت تکرار
نسخهٔ PHP ناسازگارخطا پس از تغییر نسخه در پنل هاستبازگشت به نسخهٔ سازگار؛ سپس مهاجرت مرحله‌ای

ترتیب ردیف‌ها بر اساس فراوانی تجربی ما در پروژه‌های پشتیبانی است، نه یک آمار بازار.

یک مظنون ششمی هم هست که کمتر گفته می‌شود: به‌روزرسانی خودکار ناقصِ هستهٔ وردپرس که فایل‌ها را نیمه‌تمام گذاشته است؛ در این حالت بازآپلود نسخهٔ سالم هسته — بدون دست‌زدن به wp-content و wp-config — مسیر رفع است.

چرا خطا برگشت؟ چهار علت پنهان

خطا رفع شد و فردا برگشت؛ این سناریو هم قاعده دارد. علت اول، کشِ چندلایه است: کش افزونه، کش سرور و کش مرورگر هرکدام نسخهٔ قدیمی صفحهٔ خطا را نگه می‌دارند؛ همه را پاک کنید و سایت را در حالت ناشناس ببینید. علت دوم، همان افزونهٔ مقصری است که «فعال شد» اما ریشه‌اش پاک نشد — دادهٔ خراب یا تنظیماتش باقی است. علت سوم، منابع هاست است: در ساعات پیک، سقف منابع دوباره پر می‌شود و خطا به بازگشت می‌کند؛ رفتار زمانی خطاها را ثبت کنید، الگویش راهنمای مذاکره با هاست است.

علت چهارم، تسلسل به‌روزرسانی است: افزونه‌ای که با نسخهٔ تازهٔ PHP یا تازهٔ وردپرس ناسازگار شده، تا وقتی به‌روزرسانی نشود یا جایگزین نگردد، خطا را با هر چرخهٔ جدید تکرار می‌کند. به تجربهٔ ما برای این چهار علت، یک رویهٔ ساده کافی است: بعد از هر رفع، یک هفته پایش روزانه؛ اگر برگشت، از جدول علت‌ها شروع کنید — این‌بار با دادهٔ زمانی در دفترچه‌تان.

خطای ۵۰۰ و سئو؛ چه مدت اشکال ندارد؟

سؤال درستِ هر مدیر سایتی است: چند ساعت یا چند روز خطای ۵۰۰، آیندهٔ سئوی سایت را می‌سوزاند؟ پاسخ صادقانه دو بخشی است. بخش اول: خطای چندساعته معمولاً بعد از بازگشت سایت، اثر ماندگاری در نتایج نمی‌گذارد؛ موتورهای جستجو ناپایداری موقت را با حذف دائمی اشتباه نمی‌گیرند و ما در پروژه‌هایمان چنین اثری در داده‌ها ندیده‌ایم. بخش دوم: تداوم — چند روز و بیشتر — مسائل جدی‌تری می‌سازد؛ وقتی خزنده‌ها بارها با خطا روبه‌رو شوند، بازدید صفحات کم می‌شود و صفحه‌های پرتردد به‌تدریج جایگاه می‌بازند، چون برای کاربری که تلاش می‌کند وارد شود، تجربه‌ای جز شکست باقی نمی‌ماند.

پس قانون عملی این است: خطا را جدی بگیرید، نه به‌خاطر ترس از گوگل؛ به‌خاطر کاربرانِ در حال عبور. سنجش بعد از رفع هم ساده است: چهار سنجهٔ رسمی سرچ‌کنسول — نمایش، کلیک، نرخ کلیک و میانگین جایگاه — را قبل و بعد از دورهٔ خطا مقایسه کنید (تاریخ گردآوری: آبان ۱۴۰۵)؛ افت موقت طبیعی است و روند سه‌ماهه داور واقعی است.

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

پیشگیری؛ سه روال نگهداری

پیشگیری از خطای ۵۰۰ از سه روال می‌آید. اول، به‌روزرسانی مرحله‌ای: افزونه‌ها را نه همه هم‌زمان، بلکه با فاصله و با چک بعد از هر به‌روزرسانی بروز کنید و ترجیحاً اول در محیط تست؛ به‌روزرسانی زنجیره‌ای بدون آزمایش، رایج‌ترین راه ساخت بحران بعدی است. دوم، بکاپ خودکار روزانه با نگهداری چند نسخهٔ اخیر — روالی که در بکاپ وردپرس کامل بسته شده است. سوم، پایش دسترس‌پذیری: چه با سرویس پایش و چه با چک دستی صبحگاهی، دانستن زمان دقیق شروع خطا، تشخیص را نصف می‌کند.

اگر تیم نگهداری ندارید، همین سه روال را به نگهداری ماهانهٔ وردپرس اضافه کنید تا بخشی از یک چرخهٔ منظم باشد، نه کارهای فراموش‌شده؛ هزینهٔ قرارداد نگهداری در برابر یک روز فروشِ ازدست‌رفته، همیشه جمع‌بندی روشنی دارد. و اگر چرخه را برون‌سپاری می‌کنید، در قرارداد بپرسید به‌روزرسانی‌ها چطور تست می‌شوند؛ پاسخ مکتوبِ همین سؤال، کیفیت خدمات را بهتر از هر بروشوری نشان می‌دهد. به تجربهٔ ما سایت‌هایی که این چرخه را دارند، خطای ۵۰۰ را زودتر می‌بینند، سریع‌تر می‌بندند و به‌ندرت دوباره می‌بینند.

جمع‌بندی

خطای ۵۰۰ وردپرس ترسناک به نظر می‌رسد چون پیامش مبهم است؛ اما مسیر رفعش روشن است: بکاپ اول، لاگ و دیباگ بعد، و هفت قدم ترتیبی که هر قدم یا می‌بندد یا تبرئه می‌کند. جدول علت‌ها را کنار بگذارید، چهار علت برگشت خطا را بشناسید و پیشگیری را به سه روال نگهداری گره بزنید. اگر ترجیح می‌دهید این چرخه روی تیم ما باشد و انتشار و نگهداری خودکار انجام شود، جزئیات پلتفرم در معرفی کامل ویژن‌پرایم سوئیت آمده و روال‌های مرتبط در بکاپ منظم وردپرس و هاب نگهداری، مهاجرت و خطاها باز شده‌اند؛ برای شروع بدون هزینه، ممیزی رایگان دامنه وضعیت فعلی سایت را نشان می‌دهد.

دموی رایگان پلتفرم

پلن پیشرو — ۷٫۹ میلیون تومان/ماه (انتشار خودکار + اپراتور)

دموی رایگان پلتفرم

رصد ما، رشد شما.

سؤالات پرتکرار

خطای ۵۰۰ دقیقاً یعنی چه و از کجا می‌آید؟

یعنی سرور در فرایند ساخت صفحه به خطا خورده ولی علت را اعلام نمی‌کند؛ در تجربهٔ ما معمولاً از افزونه یا قالب خراب، سقف حافظهٔ PHP، htaccess معیوب، منابع هاست یا نسخهٔ PHP ناسازگار می‌آید.

اولین کار هنگام دیدن خطای ۵۰۰ چیست؟

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

چطور افزونهٔ مقصر را پیدا کنم؟

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

خطای ۵۰۰ برای سئوی سایت ضرر دارد؟

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

خطا رفع شد ولی فردا برگشت؛ چرا؟

معمولاً یکی از چهار علت: کش‌های چندلایه، ریشهٔ پاک‌نشدهٔ افزونهٔ مقصر، منابع هاست در ساعات پیک یا ناسازگاری تکرارشونده با نسخهٔ PHP/وردپرس؛ یک هفته پایش روزانه الگو را نشان می‌دهد.