حل مشکل ۵۰۰ Internal Server Error و صفحه سفید در وردپرس – راهنمای جامع
مشکل 500 Internal Server Error یکی از مشکلاتی است که اغلب کاربران وردپرس دائماً با آن دست به گریبان هستند. این یک خطای کلی است که معنی آن این است که چیزی در جایی با خطایی مواجه شده است. نکته بدتر این است که سایت وردپرس شما ممکن است حتی هیچ خطایی نیز نمایش ندهد و صرفاً یک صفحه سفید را ببینید.
در این نوشته به روش دقیق حل این مشکلات میپردازیم. ابتدا باید بگوییم که جای نگرانی نیست، زیرا اصلاح سریعی برای این مشکل وجود دارد. در ادامه از یک فرایند دیباگ استفاده میکنیم و خطای داخلی وردپرس را به سرعت اصلاح میکنیم.
آیا افزونههای وردپرس موجب خطای 500 شدهاند؟
اگر اخیراً یک افزونه جدید وردپرس را نصب کردهاید و یا پس از ارتقای وردپرس، خطای 500 را میبینید، این احتمال وجود دارد که یک افزونه ناسازگار وجود دارد.
دلایل زیادی وجود دارند که یک افزونه موجب بروز خطا شود:
- وردپرس ممکن است برخی تابعهای اصلی خود را که افزونه مورد استفاده قرار میدهد حذف کرده باشد.
- ممکن است افزونهای در یک نسخه قدیمی از PHP نوشته شده باشد و در طی سالها بهروزرسانی نشده باشد.
- ممکن است افزونه به درستی کدنویسی نشده باشد، مثلاً به جای پیشوندهای سفارشی به نامهای پیشفرض پایگاه داده ارجاع دهد. ما در برخی موارد از کدنویسی کُند رنج میبریم.
شناسایی افزونه خراب در مواردی که یک افزونه را به تازگی نصب کردهاید و خطا بعد از آن ظاهر شده است، کار آسانی خواهد بود. اما چگونه میتوانیم افزونهای را در صورتی که ناحیه ادمین غیر قابل دسترس باشد، غیر فعال کنیم؟ و اگر ندانیم کدام افزونه موجب خطا شده است، چگونه میتوانیم مشکل را رفع کنیم؟ شما باید یا از طریق FTP به وبسایت دسترسی داشته باشید و یا از ابزار مدیریت فایل مبتنی بر وب در CPanel یا Plesk استفاده کنید.
راهحل
اگر میدانید که کدام افزونه خراب شده است، میتوانید آن را در پوشه wp-content/plugins/ یافته و حذف کنید. در این حالت شما میتوانید مجدداً وارد وبسایت شوید و جایگزینی برای هر کارکردی که میخواهید داشته باشید بیابید.
اگر مطمئن نیستید که کدام افزونه موجب خطا شده است، باید کل پوشه wp-content/plugins/ را تغییر نام دهید. بدین منظور یک کاراکتر زیرخط (_) در ابتدای آن قرار دهید تا به صورت _plugins درآید:
با تغییر دادن نام پوشه میتوانید کل افزونهها را به یکباره و سریع غیر فعال کنید. شما اینک باید بتوانید مجدداً وارد وبسایت شوید؛ اما احتمالاً با پیامهای خطای زیادی از سوی وردپرس مواجه میشوید که به صورت زیر اعلام میکنند برخی افزونهها غیر فعال شدهاند و وجود ندارند:
The plugin something.php has been deactivated due to an error: Plugin file does not exist.
نگران نباشید، هیچ کدام از تنظیمات از دست نرفتهاند. تنظیمات افزونه در پایگاه داده ذخیره میشود و اغلب افزونهها آنها را پس از فعالسازی مجدد پیدا خواهند کرد.
سپس با حذف کاراکتر زیرخط، پوشه افزونهها را به حالت اولیهاش بازگردانید. بدین ترتیب همه افزونهها در صفحه Plugins فهرستبندی میشوند؛ اما در حالت غیر فعال هستند. اینک میتوانید آنها را یک به یک مجدداً فعال کنید تا این که متوجه شوید کدام افزونه موجب خرابی شده است.
زمانی که سایت مجدداً از کار بیفتد، میتوانید این فرایند را تکرار کنید؛ اما این بار افزونه خراب را مجدداً فعال نکنید.
خطای 500 Internal Server در مورد قالب ناسازگار
اگر غیر فعالسازی افزونهها به حل مشکل کمکی نکرد، احتمالاً مشکلی در قالبهای شما وجود دارد. همانند روشی که در مورد افزونهها دیدیم، میتوانید قالب فعال را از طریق تغییر دادن نام پوشهاش که در دایرکتوری wp-content/themes/ خواهید یافت، به اجبار غیر فعال کنید.
اگر پس از تغییر دادن نام پوشه افزونهها و قالب فعال، همچنان نمیتوانید به ناحیه مدیریتی دسترسی داشته باشید، در این صورت باید مراحل بیشتری را طی کنید. اگر میتوانید وارد وبسایت خود شوید، وردپرس به شما اطلاع خواهد داد که از قالب پیشفرض استفاده میکند. در این مرحله، میتوانید یا یک قالب جدید بیابید و یا با توسعهدهنده قالب تماس بگیرید و از وی برای حل مشکل خود کمک بگیرید.
برای این که مشکل قالب را خودتان حل کنید، باید توضیح بیشتری به توسعهدهنده ارائه کنید. به این منظور باید حالت دیباگ وردپرس را فعال کنید.
خطای 500 Internal Server در مواردی که فایل htaccess. خراب شده است
اگر غیر فعالسازی افزونهها و قالب هیچ توفیقی نداشته باشد، این امکان وجود دارد که فایل htaccess. به ترتیبی دچار مشکل شده باشد. این وضعیت به طور معمول زمانی رخ میدهد که شما همچنان به ناحیه مدیریتی سایت دسترسی داشته باشید؛ اما فرانتاند به درستی کار نکند.
فایل htaccess. به مدیریت permalink-ها یا همان URL-های وبسایت میپردازد. وردپرس به طور داخلی از طرحبندی URL زشتی به صورت p=12345?/ بهره میگیرد و فایل htaccess. به اصلاح این وضعیت کمک میکند. این فایل بخشی ضروری از وردپرس است؛ اما افزونهها در برخی موارد موجب از کار افتادن آن میشوند.
راهحل
در این مورد نیز باید از یک کلاینت FTP یا ابزار مدیریت فایل استفاده کنید. فایل htaccess. در ریشه محل نصب وردپرس را به چیزی مانند htaccess_old. تغییر نام دهید. اگر نمیتوانید فایل را ببینید باید گزینه viewing of hidden files را فعال کنید. روش دقیق انجام این کار بر اساس کلاینت FTP شما متفاوت خواهد بود.
آن نقطه در ابتدای فایل نام به معنی مخفی بودن این فایل در سیستم عامل لینوکس و دیگر سیستمهای شبه یونیکس است.
زمانی که نام htaccess. کنونی را تغییر دادید، مجدداً به ناحیه مدیریتی وردپرس بازگردید و به بخش Settings > Permalinks بروید و بدون ایجاد هیچ گونه تغییری دکمه save را بزنید. بدین ترتیب به صورت خودکار یک نسخه جدید از فایل مذکور ایجاد میشود.
اگر هر گونه تغییراتی در فایل به صورت دستی ایجاد کردهاید، این تغییرات از دست خواهند رفت؛ اما شما نمیتوانید فایل را به صورت دستی ویرایش کنید.
فعالسازی حالت دیباگ وردپرس برای ردیابی خطاها
امکان فعالسازی گزارش دیباگ از درون پیکربندی وردپرس وجود دارد. بدین ترتیب سرنخی از مشکل اصلی ایجاد میشود؛ اما در این مرحله ما به آن بخش دسترسی نداریم. ما باید چگونگی رفع خطا را بیابیم که نیازمند مهارتهای کدنویسی است.
برای فعالسازی گزارش دیباگ باید فایل wp-config.php را باز کنید که در دایرکتوری ریشه محل نصب وردپرس قرار دارد. در مورد ویرایش این فایل کاملاً هوشیار باشید، بهتر است ابتدا یک کپی از آن ایجاد کنید تا در صورت بروز هر گونه مشکل و یا هر نوع تغییر ناخواسته، نسخه پشتیبان را بازگردانی کنید.
خطی که کد زیر در آن قرار دارد را بیابید:
define('WP_DEBUG'، false);
اگر سایت شما به طور مکرر بازدید نمیشود و یا برایتان مهم نیست که پیامهای خطا برای همه بازدیدکنندگان نمایش یابند، کافی است مقدار false را به true تغییر دهید. در این مرحله، پیامهای خطا در زمان بارگذاری وبسایت نمایش مییابند.
اگر میخواهید پیامهای خطا به صورت خصوصی صرفاً برای شما نمایش یابند، آن خط را با وارد کردن عبارت // در ابتدای خط کامنت کنید و سپس کد زیر را زیر آن وارد کنید:
define('WP_DEBUG'، true); define('WP_DEBUG_LOG'، true); define('WP_DEBUG_DISPLAY'، false); @ini_set('display_errors'،0);
بدین ترتیب خطاها در یک فایل به نام error.log در پوشه wp-content نوشته میشوند. اگر کلاینت FTP خود را رفرش کردید و پس از یک دقیقه چیزی ندیدید، این امکان هست که وردپرس اجازه نوشتن فایل را نداشته است. بدین ترتیب باید یک فایل error.log را به صورت دستی ایجاد کرده و به آن مجوز 666 بدهید.
غیر فعالسازی
هوشیار باشید که این فایل به مرور بزرگ و بزرگتر میشود؛ مگر این که خطوط اضافه شده فوق را از فایل پیکربندی وردپرس حذف کنید. در این حالت فراموش نکنید که خط اصلی را از حالت کامنت خارج کنید. این فایل را در یک ویرایشگر متنی باز کنید و بررسی کنید که کدام خطای ضروری PHP رخ داده است:
در مثال فوق ما هشدارهای PHP در مورد کد منسوخ شده میبینیم؛ اما این خطاها موجب از کار افتادن وبسایت نشدهاند.
خطای 500 Internal Server در موارد پیکربندی نادرست سرور
اجرا کردن سرور شخصی مجازی (VPS) کار آسانی نیست. برای مثال ممکن است زمانی برسد که متوجه شوید نیمی از صفحههایی که بارگذاری میشوند، دارای خطای 500 هستند، اما هیچ الگوی قابل تمیزی در این خصوص وجود ندارد و هیچ سرنخی از گزارش خطای سرور به دست نمیآید. فعالسازی گزارشهای دیباگ وردپرس نیز در این حالت هیچ چیز روشنی نمایش نمیدهد و کلی هشدارهای PHP و کدهای منسوخ وجود دارند؛ اما هیچ خطای ضروری (Crucial Error) مشاهده نمیشود.
این وضعیت برای نمونه در مواردی پیش میآید که از کش APC استفاده کنید تا از آن به کمک W3 Total Cache برای افزایش سرعت سایت بهره بگیرید. بدین ترتیب لغو نصب آن موجب بروز خطای 500 میشود.
در واقع در این حالت دلیل اصلی مشکل خطای 500 ترکیبی از پیکربندیهای سرور بوده است که ناسازگار بودهاند. این حالت در مواردی که از سرویسهای مدیریت شده استفاده کنید کمتر رخ میدهند؛ اما وقتی از VPS استفاده میکنید، مسئولیت اطمینان یافتن از کارکرد صحیح همه چیز تنها بر عهده شماست و این کار دشوارتر از آن چیزی است که به نظر میرسد.
آیا حافظه وبسایت کم است؟
روی برخی میزبانهای اشتراکی ممکن است متوجه شوید که با PHP memory limit مواجه میشوید، برای نمونه افزونههای ووکامرس، فورومها، یا پستهای مرتبط به دلیل پیچیدگیشان میتوانند چنین وضعیتی را موجب شوند. اگر خوششانس باشید پیام خطایی به صورت زیر مشاهده میکنید:
Fatal Error: Allowed memory size of xxx bytes exhausted
اما همواره نیز این قدر خوششانس نیستیم. با افزودن خط زیر به فایل wp-config.php میتوانید این مشکل را رفع کنید:
define('WP_MEMORY_LIMIT'، '64M');
اغلب میزبانهای اشتراکی در عمل امکان افزایش محدودیت حافظه را به شما نمیدهند و شما تنها چیزی را که در اختیار شما قرار داده شده، دریافت خواهید کرد.
اقدام به پشتیبانگیری روزانه پس از اصلاح خطای 500
بهترین دفاع در برابر هر نوع خطای ضروری وردپرس این است که به صورت روزانه اقدام به پشتیبانگیری از وبسایت خود بکنید و پیش از هر عمل مهمی (مانند بهروزرسانی وردپرس) نیز پشتیبانی تهیه کنید. ضمناً افزونهها و قالبها را همواره بهروز حفظ کنید، چون نسخههای جدید وردپرس در اغلب موارد با کدهای قدیمی ناسازگار هستند.
از کار افتادن وبسایت به خصوص در مواردی که وبسایتتان یک منبع درآمد برای شما باشد، بسیار ترسناک به نظر میرسد. با پیروی از نکاتی که در این مطلب ارائه شدهاند، میتوانید وبسایت خود را مجدداً به سرعت راهاندازی کنید.
اگر این نوشته برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای راهاندازی و مدیریت سایت با وردپرس
- گنجینه آموزش های وردپرس (WordPress)
- مجموعه آموزشهای ویژه علاقهمندان به کامپیوتر
- یادگیری وردپرس را از کجا شروع کنیم؟
- آموزش وردپرس (WordPress) – مقدماتی
- جوملا یا وردپرس، کدام بهتر است؟ — مقایسه جامع
==