وب ریزان
رفع خطاهای وردپرس

رفع خطای ۵۰۰ وردپرس؛ عیب‌یابی مرحله‌به‌مرحله

مسیر تشخیص پاسخ ۵۰۰ از مشاهده درخواست تا بررسی گزارش وب‌سرور و PHP، با شاخه‌های مستقل تنظیمات، بازنویسی، FastCGI و مصرف منابع.

تیم وب ریزان۲۵ دقیقه مطالعه
رفع خطای ۵۰۰ وردپرس؛ عیب‌یابی مرحله‌به‌مرحله

در یک نگاه

  • کد ۵۰۰ را از متن صفحه و خطای درخواست جانبی جدا کنید.
  • گزارش دسترسی و خطا باید به همان درخواست متصل شوند.
  • شاخه Apache، nginx و PHP نیازمند شواهد متفاوت است.
  • رفع ظاهری صفحه بدون آزمون قابلیت حساس، پذیرش کامل نیست.

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

راه‌حل سریع و ایمن

  1. در ابزار شبکه مرورگر، درخواست ناموفق را انتخاب کنید و نشانی، روش درخواست، کد واقعی پاسخ، زمان همراه منطقه زمانی و شناسه درخواست موجود را ثبت کنید. ظاهر صفحه برای اثبات کد ۵۰۰ کافی نیست.
  2. دامنه خرابی را با یک فایل ثابت موجود، صفحه اصلی و همان مسیر مشکل‌دار مقایسه کنید. درخواست‌های ثبت سفارش یا پرداخت را صرفاً برای تولید خطا تکرار نکنید؛ ممکن است عملیات قبلی ثبت شده باشد.
  3. آخرین تغییر فایل، افزونه، نسخه PHP یا تنظیم سرور را یادداشت کنید و پیش از هر تغییر، نسخه قابل بازگشت همان بخش را بردارید. برای تغییر مؤثر بر داده، پشتیبان و محیط آزمایشی لازم است.
  4. گزارش دسترسی و خطای همان دامنه را در یک بازه کوتاه کنار گزارش PHP قرار دهید. از ارائه‌دهنده میزبانی بخواهید ساعت و لایه پاسخ‌دهنده را تأیید کند؛ نبود خطا در یک فایل گزارش دلیل نبود خطا نیست.
  5. اگر گزارش خطای کشنده PHP نشان می‌دهد، شاخه برنامه را دنبال کنید. اگر Apache از دستور نامعتبر یا بازنویسی داخلی خبر می‌دهد، تنظیم مرتبط را بررسی کنید. در nginx، فایل htaccess را به عنوان تنظیم مؤثر ویرایش نکنید.
  6. فقط یک تغییر محدود و مستند انجام دهید و همان درخواست را دوباره بسنجید. خاموش کردن عمومی ابزار امنیتی، تغییر همگانی مجوزها یا افزایش کور منابع، علت را روشن نمی‌کند.
  7. پس از اصلاح، وضعیت پاسخ، محتوای واقعی، مسیر ورود و قابلیت حساس سایت را در جلسه مهمان بررسی کنید. خطای ذخیره‌شده در کش و خطای تازه در گزارش را جدا کنترل کنید و در صورت شکست، همان تغییر را برگردانید.
خطای داخلی وردپرس؛ پاسخ سرور، تفکیک لایه خطا، تأیید پاسخ سالم
نمودار آموزشی اختصاصی وب‌ریزان؛ تصویر خطای واقعی مشتری نیست. مراحل عیب‌یابی در متن توضیح داده شده‌اند.

خطای ۵۰۰ چه چیزی را ثابت می‌کند

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

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

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

پرونده درخواست را پیش از هر تغییر بسازید

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

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

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

دسترسی و پشتیبان متناسب با دامنه مداخله

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

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

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

درخت تصمیم برای یافتن لایه خراب

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

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

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

کد واقعی را با بدنه پاسخ اشتباه نگیرید

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

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

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

گزارش دسترسی و خطا را به هم وصل کنید

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

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

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

شاخه Apache؛ دستور نامعتبر در تنظیم محلی

اگر حادثه بلافاصله پس از ویرایش htaccess رخ داده، نسخه قبل و بعد را مقایسه کنید. دستور تایپی، گزینه خارج از زمینه مجاز یا دستور ماژولی که بارگذاری نشده می‌تواند مهم باشد. راهنمای رسمی htaccess در Apache توضیح می‌دهد که مجاز بودن دستورها به تنظیمات سرور وابسته است. کپی‌کردن یک بلوک از سایتی دیگر تضمین نمی‌کند همان دستور در حساب شما مجاز باشد.

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

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

بازنویسی داخلی را از پیوند خراب جدا کنید

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

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

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

شاخه nginx؛ تنظیم مؤثر را پیدا کنید

در nginx فایل htaccess خوانده نمی‌شود. اگر این وب‌سرور مستقیماً دامنه را پردازش می‌کند، تنظیم مسیرها در ساختار پیکربندی خودش قرار دارد. راهنمای رسمی آغاز کار nginx ساختار تنظیم و بررسی آن پیش از بارگذاری مجدد را توضیح می‌دهد. مسئول سامانه باید فایل مؤثر همان میزبان را پیدا کند؛ ویرایش یک فایل نمونه که در پیکربندی وارد نشده، هیچ نتیجه تشخیصی ندارد.

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

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

FastCGI و بدنه خطایی که منشأ را پنهان می‌کند

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

از مسئول سامانه بخواهید وضعیت دریافت‌شده از پردازش بالادستی و وضعیت تحویلی به کاربر را مقایسه کند، اگر این اطلاعات در قالب گزارش ثبت می‌شود. اگر وضعیت‌ها فرق دارند، تنظیم صفحه خطا یا واسط را بررسی کنید. اگر هر دو ۵۰۰ هستند و PHP خطای کشنده متناظر دارد، شاخه برنامه روشن‌تر می‌شود. تغییر ظاهر صفحه خطا در هیچ کدام از این حالت‌ها علت توقف را برطرف نمی‌کند.

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

شاخه PHP؛ خطای کشنده را از اخطار جدا کنید

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

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

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

منابع پردازش؛ سقف واقعی یا مصرف غیرعادی

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

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

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

مالکیت فایل و استقرار ناقص را مستند بررسی کنید

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

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

اگر فایل غیرمنتظره یا تغییر ناشناخته دیدید، پرونده امنیتی را جدا باز کنید. اگر نشانه نفوذ تأیید شد، پاکسازی سایت هک‌شده و بستن راه نفوذ باید جدا از رفع خطای ۵۰۰ انجام شود. صرف رفع پاسخ ۵۰۰ کافی نیست تا علت تغییر نامعلوم نادیده گرفته شود. زمان تغییر فایل، صاحب دسترسی و بسته مرجع را ثبت کنید و از پاک‌سازی گسترده پیش از حفظ شاهد پرهیز کنید. بحث فنی درباره میزبانی در اینجا به تنظیم حساب و پردازش مربوط است؛ برای اصلاح کد باید مسئول برنامه نیز در پرونده حضور داشته باشد.

کش، واسط و تفاوت نتیجه مدیر و مهمان

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

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

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

مطالعه فرضی اول؛ دستور تازه در Apache

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

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

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

مطالعه فرضی دوم؛ ۵۰۰ فقط هنگام ساخت گزارش فروش

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

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

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

موبایل و فروشگاه؛ خطای پاسخ پس از ثبت عملیات

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

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

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

اثر پاسخ سرور بر خزش و نشانی مرجع

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

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

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

آزمون پذیرش و برنامه برگشت مرحله‌ای

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

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

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

تحویل دقیق به مسئول میزبانی و توسعه‌دهنده

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

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

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

پیشگیری با تنظیمات نسخه‌دار و پایش معنادار

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

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

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

ادامه خواندن

راهنمای طراحی سایت

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

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

پاسخ‌های کوتاه به پرسش‌هایی که معمولاً قبل از شروع پروژه مطرح می‌شود.

عدد ۵۰۰ علت خرابی را مشخص می‌کند؟

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

برای شروع چه اطلاعاتی ثبت کنم؟

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

آیا حذف htaccess همیشه خطای ۵۰۰ را رفع می‌کند؟

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

آیا nginx فایل htaccess را می‌خواند؟

خیر، nginx تنظیمات خودش را دارد. اگر nginx مستقیماً درخواست را پردازش می‌کند، مسئول سامانه باید تنظیم مؤثر مسیر و پردازش را بررسی کند؛ معماری ترکیبی نیز باید جدا شناسایی شود.

آیا افزایش حافظه راه‌حل مناسبی است؟

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

چرا مدیر و مهمان نتیجه متفاوت می‌بینند؟

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

اگر پس از سفارش پاسخ ۵۰۰ دیدم چه کنم؟

پرداخت یا ارسال سفارش را بدون بررسی تکرار نکنید. ممکن است ثبت داده انجام شده و ساخت پاسخ یا ارسال اعلان شکست خورده باشد؛ وضعیت سفارش و تراکنش باید از مسیر معتبر بررسی شود.

چه چیزی را به پشتیبانی میزبانی بدهم؟

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

نویسنده

تیم تخصصی وب ریزان

طراحی سایت، سئو و سیستم‌سازی فروش برای کسب‌وکارهای در حال رشد — با تمرکز روی نتیجه قابل اندازه‌گیری، نه فقط ظاهر.

می‌خواهید همین مسیر را برای کسب‌وکارتان اجرا کنید؟

مشاوره اولیه رایگان — طراحی سایت، سئو یا سیستم‌سازی فروش را شفاف می‌چینیم.