خطای ۵۰۰ (Internal Server Error) در وردپرس: چگونه آن را رفع کنیم؟

شاید برای شما هم پیش آمده باشد: در حال کار بر روی وبسایت وردپرسی خود هستید، یک صفحه را رفرش میکنید و ناگهان با «صفحه سفید مرگ» یا پیام ترسناک «خطای ۵۰۰ سرور داخلی» (500 Internal Server Error) مواجه میشوید. این یکی از ناامیدکنندهترین خطاها در وردپرس است، زیرا به شما نمیگوید چه چیزی اشتباه است.
به عنوان فردی که سالهاست به عنوان کارشناس وردپرس فعالیت میکنم ، میتوانم بگویم که این خطا، اگرچه رایج است، اما تقریباً همیشه قابل حل است. خطای ۵۰۰ اساساً فریاد سرور شماست که میگوید: «یک مشکلی پیش آمده، اما نمیتوانم دقیقاً بگویم چه مشکلی!»
در این مقاله، قصد ندارم شما را با اصطلاحات فنی پیچیده بترسانم. در عوض، میخواهم یک چکلیست عیبیابی گام به گام و عملی را که خودم در طول سالها تجربه به دست آوردهام، با شما به اشتراک بگذارم تا بتوانید با آرامش این مشکل را شناسایی و برطرف کنید.
خطای ۵۰۰ سرور داخلی دقیقاً چیست؟
قبل از اینکه به سراغ راهحلها برویم، مهم است که بفهمیم این خطا از کجا میآید. برخلاف خطاهای دیگر که ممکن است خود وردپرس ایجاد کند، خطای ۵۰۰ یک کد وضعیت HTTP عمومی است.
به گفته شبکه توسعهدهندگان موزیلا (MDN)، این کد پاسخ به این معناست که «سرور با وضعیت غیرمنتظرهای مواجه شده که مانع از تکمیل درخواست آن شده است.»
در دنیای وردپرس، این «وضعیت غیرمنتظره» معمولاً به یکی از این چند مورد برمیگردد:
- تداخل در افزونهها (Plugins)
- مشکلات در قالب (Theme)
- یک فایل
.htaccessخراب - تمام شدن حافظه PHP سرور شما
وظیفه ما این است که مانند یک کارآگاه، این مظنونان را یک به یک بررسی کنیم.
مهمترین قدم: قبل از هر کاری پشتیبانگیری کنید!
من همیشه به دانشجویانم میگویم: همیشه اول پشتیبان بگیرید.
قبل از اینکه حتی یک فایل را جابجا کنید یا کدی را تغییر دهید، لطفاً از وبسایت خود یک نسخه پشتیبان کامل (فایلها و پایگاه داده) تهیه کنید. اگر به پیشخوان وردپرس دسترسی ندارید، باید این کار را از طریق کنترل پنل هاست خود (مانند cPanel یا DirectAdmin) یا با استفاده از FTP انجام دهید. این کار به شما اطمینان خاطر میدهد که اگر اوضاع بدتر شد، میتوانید به نقطه امن قبلی بازگردید.
مراحل گام به گام عیبیابی و رفع خطای ۵۰۰
ما از محتملترین و سادهترین راهحل شروع میکنیم و به سمت موارد پیچیدهتر حرکت میکنیم.
۱. فعال کردن حالت دیباگ (Debug) وردپرس
اولین کاری که یک متخصص انجام میدهد، تبدیل خطای ۵۰۰ عمومی به یک پیام خطای خاص است. وردپرس ابزاری برای این کار به نام «حالت دیباگ» دارد.
- با استفاده از FTP یا «File Manager» در هاست خود، به ریشه (root) سایت وردپرسی خود بروید.
- فایل
wp-config.phpرا پیدا کنید و آن را برای ویرایش باز کنید. - به دنبال خطی بگردید که میگوید:
/* That's all, stop editing! Happy publishing. */ - درست قبل از این خط، کدهای زیر را اضافه کنید:
// Enable WP_DEBUG mode define( 'WP_DEBUG', true ); // Enable Debug logging to the /wp-content/debug.log file define( 'WP_DEBUG_LOG', true ); // Disable display of errors and warnings on the site define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );
این کد چه کاری انجام میدهد؟ به جای نمایش خطاها به بازدیدکنندگان (که WP_DEBUG_DISPLAY’, false جلوی آن را میگیرد)، تمام جزئیات خطا را در فایلی به نام debug.log در پوشه wp-content شما ذخیره میکند.
حالا سایت خود را دوباره بارگذاری کنید. سپس به پوشه wp-content بروید و فایل debug.log را باز کنید. به احتمال زیاد، آخرین خطوط این فایل دقیقاً به شما میگوید که کدام افزونه یا فایل قالب باعث خطا شده است.
۲. بررسی تداخل افزونهها (شایعترین علت)
اگر حالت دیباگ مستقیماً به یک افزونه اشاره کرد، کار ساده است. اما اگر نه، شایعترین علت خطای ۵۰۰، تداخل افزونههاست.
- از طریق FTP یا File Manager به پوشه wp-content بروید.
- پوشهای به نام plugins را پیدا کنید.
- نام آن را به چیزی مانند plugins_old تغییر دهید.
این کار به طور همزمان تمام افزونههای شما را غیرفعال میکند.
حالا به سایت خود برگردید و صفحه را رفرش کنید. آیا خطای ۵۰۰ برطرف شد؟
- بله، برطرف شد: عالی است! مشکل از یکی از افزونهها بوده. حالا نام پوشه plugins_old را به plugins برگردانید. سپس وارد پیشخوان وردپرس خود شوید (که اکنون باید کار کند) و به بخش «افزونهها» بروید. افزونهها را یکی یکی فعال کنید و بعد از فعالسازی هرکدام، سایت را چک کنید. هرکدام را که فعال کردید و سایت دوباره خراب شد، همان افزونه مجرم است. آن را حذف کنید یا با یک جایگزین عوض کنید.
- نه، برطرف نشد: مشکل از افزونهها نبوده است. نام پوشه را به plugins برگردانید و به مرحله بعد بروید.
۳. بررسی تداخل قالب (Theme)
مظنون بعدی، قالب فعال شماست. این فرآیند شبیه به افزونههاست.
- دوباره به پوشه wp-content بروید و پوشه themes را باز کنید.
- پوشه قالب فعال فعلی خود را پیدا کنید (مثلاً my-theme).
- نام آن را به my-theme_old تغییر دهید.
اگر یکی از قالبهای پیشفرض وردپرس (مانند twentytwentyfour) را نصب دارید، وردپرس به طور خودکار به آن برمیگردد. اگر ندارید، لطفاً قبل از این مرحله، یک قالب پیشفرض را از طریق FTP در پوشه themes آپلود کنید.
سایت را رفرش کنید. اگر خطای ۵۰۰ رفع شد، مشکل از کدهای قالب شما بوده است.
۴. بازسازی فایل .htaccess
فایل .htaccess یک فایل پیکربندی قدرتمند سرور است که وردپرس از آن برای مدیریت پیوندهای یکتا استفاده میکند. گاهی اوقات این فایل خراب میشود.
- در پوشه ریشه (root) وردپرس خود (جایی که wp-config.php قرار دارد)، فایل .htaccess را پیدا کنید. (توجه: این فایل ممکن است مخفی باشد).
- نام آن را به .htaccess_old تغییر دهید.
- سایت خود را رفرش کنید.
اگر سایت بالا آمد، یعنی مشکل از این فایل بوده است. برای ساخت یک فایل .htaccess جدید و سالم:
- به پیشخوان وردپرس خود بروید.
- به بخش تنظیمات > پیوندهای یکتا (Settings > Permalinks) بروید.
- هیچ تغییری ندهید! فقط روی دکمه «ذخیره تغییرات» (Save Changes) کلیک کنید.
وردپرس به طور خودکار یک فایل .htaccess جدید برای شما ایجاد خواهد کرد.
۵. افزایش محدودیت حافظه PHP
گاهی اوقات سرور شما منابع کافی (به خصوص حافظه یا RAM) برای اجرای یک اسکریپت سنگین (مانند یک افزونه بزرگ) ندارد و با خطای ۵۰۰ مواجه میشود.
میتوانید سعی کنید حافظه اختصاص داده شده به وردپرس را افزایش دهید.
- دوباره فایل wp-config.php را باز کنید.
- این خط کد را (ترجیحاً نزدیک کدهای دیباگ که قبلاً اضافه کردید) اضافه کنید:
// Increase PHP Memory Limit define( 'WP_MEMORY_LIMIT', '256M' );
۶. تماس با پشتیبانی هاستینگ
اگر تمام مراحل بالا را طی کردید و هنوز با خطای ۵۰۰ مواجه هستید، وقت آن است که از متخصصان کمک بگیرید.
با شرکت هاستینگ خود تماس بگیرید و به آنها بگویید: «من با خطای ۵۰۰ مواجه هستم و قبلاً تداخل افزونهها، قالب، فایل .htaccess و افزایش حافظه PHP را بررسی کردهام. لطفاً لاگهای خطای سرور (Server Error Logs) را برای من بررسی کنید.»
ارائه این اطلاعات به آنها نشان میدهد که شما مراحل اولیه را طی کردهاید و به آنها کمک میکند سریعتر مشکل اصلی را که ممکن است در سطح سرور باشد، پیدا کنند.
نتیجه گیری
خطای ۵۰۰ وردپرس بدون شک ترسناک است، اما به ندرت غیرقابل حل است. کلید حل این مشکل، حفظ آرامش و داشتن یک رویکرد mettodical و گام به گام است.
تقریباً در ۹۹ درصد موارد، این خطا ناشی از یک تداخل ساده در افزونه یا یک فایل .htaccess خراب است. با دنبال کردن این راهنما، شما ابزارهای لازم برای عیبیابی مانند یک حرفهای را در اختیار دارید.
سوالات متداول
آیا خطای ۵۰۰ به سئوی (SEO) سایت من آسیب میزند؟
اگر خطا به سرعت (در عرض چند ساعت) رفع شود، معمولاً تأثیر ماندگاری ندارد. اما اگر سایت شما برای روزها با خطای ۵۰۰ مواجه باشد، رباتهای گوگل نمیتوانند آن را بخزند (crawl کنند) و این میتواند منجر به کاهش رتبه شما شود.
آیا ممکن است مشکل از خودِ هاستینگ باشد؟
بله. اگرچه کمتر رایج است، اما مشکلات سختافزاری سرور، پیکربندی نادرست سرور (مانند Apache یا NGINX) یا محدودیتهای شدید منابع که توسط هاستینگ اعمال میشود، همگی میتوانند باعث خطای ۵۰۰ شوند. اینجاست که مرحله ۶ (تماس با پشتیبانی) اهمیت پیدا میکند.
من حالت دیباگ را فعال کردم اما هیچ فایل debug.log ایجاد نشد. علت چیست؟
این ممکن است به دلیل مجوزهای (permissions) پوشه wp-content شما باشد که اجازه نوشتن فایل را نمیدهد. همچنین، اگر خطای ۵۰۰ قبل از بارگذاری کامل وردپرس (مثلاً در سطح پیکربندی سرور یا .htaccess) رخ دهد، ممکن است حالت دیباگ وردپرس اصلاً اجرا نشود.




