اگر برای مدت طولانی با وردپرس کار کرده باشین، احتمالا خطای 500 Internal server error رو دیدین. این یک مشکل رایجه و دلایل زیادی براش وجود داره.
اگر ما روی وبسایتهای Live کار میکنیم، باید هر چه زودتر این خطا رو برطرف کنیم. در این مقاله چند راهحل برای این مشکل رو باهم مرور میکنیم.
پشتیبانگیری از وردپرس
اول از همه، لطفا با استفاده از این پلاگین ، یک نسخه پشتیبان از وبسایت وردپرستون بگیرین. این احتمال وجود داره که نتونین با استفاده از این پلاگین، وارد داشبورد بشین و به دنبال اون نتونین نسخه پشتیبان رو تهیه کنین.
در این صورت باید تمام فایلهای وردپرستون رو روی هارددیسک کپی کنین و دیتابیس رو با استفاده از phpMyAdmin کپی کنین.
htaccess خراب شده
دلیل خطای Internal Server Error میتونه فایل htaccess خراب باشه. میتونین این مورد رو با تغییر اسم فایل htaccess به چیز دیگهای، مثلا htacces_backup بررسی کنین. این فایل در مسیر اصلی نصب وردپرس شما قرار داره. اگر این تغییر اسم باعث ایجاد یک فایل htaccess خراب بشه، شما باید به Settings -> Permalinks برین و روی Save changes کلیک کنین.
با انجام این کار، شمایک فایل htaccess جدید، که احتمالا درسته، خواهید داشت.
خطای محدودیت حافظه PHP (PHP Memory Limit Error)
یک مشکل دیگر، میتونه حافظه خیلی کم در تنظیمات PHP باشه. معمولا این مشکل باعث ایجاد خطا هنگام آپلود فایل یا هنگام ورود به داشبورد وردپرس میشه.
برای رفع خطای محدودیت حافظه PHP ، سعی کنین فایل php.ini یا user.ini رو (با توجه به هاستتون) با این محتوا ایجاد کنین:
1 |
memory_limit = 128M |
حالا این فایل رو در مسیر اصلی وردپرستون کپی کنین.
برخی از هاستها اجازه تغییر محدودیت حافظه به این روش رو نمیدن. بنابراین باید فایل wp-config.php واقع در مسیر اصلی وردپرس رو ویرایش کنین. این کد رو:
1 |
define('WP_MEMORY_LIMIT', '64M'); |
درست بعد از اولین علامت <?php اضافه کنین.
اگر مشکل برطرف شد باید نگاهی به پلاگینها یا فانکشن پوستههاتون بندازین. اینها میتونن محدودیت حافظه PHP رو overload کنن. ما پیشنهاد میکنیم با شرکت ارائه دهنده هاستتون تماس بگیرین. اونها باید نگاهی به logها بندازن و مشکل حافظه رو تشخیص بدن.
مشکل یا تضاد در پلاگین/پوسته
همچنین این احتمال وجود داره که در پوسته/پلاگین باگ وجود داشته باشه، همچنین ممکنه با برخی از پلاگینهای موجود نصب و فعال شده، تضاد وجود داشته باشه.
برای این که بفهمیم کدوم پلاگین مشکل ایجاد میکنه، فقط باید تمام پلاگینهای داشبورد رو غیرفعال کنین. به Plugins برین، همه پلاگینها رو انتخاب کنین، گزینه Deactive رو انتخاب کنین و روی Apply کلیک کنین.
اگر به داشبورد دسترسی ندارین، میتونین با استفاده از FTP هم پلاگینها رو غیرفعال کنین. به مسیر wp-content برین و اسم dir plugins رو به plugins_off تغییر بدین.
اگر غیرفعال کردن تمام پلاگینها مشکل رو حل کرد، باید همه پلاگینها رو دوباره یکی یکی فعال کنین تا زمانی که دوباره خطای Internal Server Error رو دریافت کنین.
اگر همه پلاگینها رو با استفاده از روش FTP غیرفعال کردین، لطفا مسیر پلاگین plugins_off بعدی رو ایجاد کنین. سپس پوشههای حاوی پلاگین رو از plugins_off به مسیر پلاگینها منتقل کنین. مثلا، اگر پلاگین My Plugin رو دارین، پوشه wp-content/plugins_off/my-plugin رو به wp-content/plugins منتقل کنین.
دیباگ کردن وبسایت وردپرس
همچنین میتونین نصب وردپرستون رو دیباگ کنین. برای انجام این کار، لطفا فایل wp-config.php که در مسیر اصلی وردپرستون قرار داره رو ویرایش کنین. این کد رو تغییر بدین:
1 |
define('WP_DEBUG', false); |
به
1 |
define('WP_DEBUG', true); |
اگر میخواین خطاها رو در فایل wp-content/debug.log ثبت کنین، این کد رو اضافه کنین:
1 |
define('WP_DEBUG_LOG', true); |
بررسی مجوزهای وردپرس
شما میتونین همچنین مجوزهای فایلها و پوشهها در نصب وردپرستون رو بررسی کنین. فایلها باید مجوزهای 644 و پوشهها 755 رو داشته باشن. هر تنظیمات دیگری غیر از این میتونه باعث ایجاد مشکل بشه، به خصوص ایجاد خطای Internal Server Error.
آپلود فایلهای هستهای وردپرس
اگر هیچ کدوم از روشهای بالا کار نکرد، میتونین فایلهای اصلی وردپرس رو دوباره آپلود کنین. وردپرس رو دوباره دانلود کنین و مسیرهای wp-admin و wp-includes رو دوباره از فایل زیپ دانلود شده به مسیر نصب وردپرستون کپی کنین. فقط این فایلها رو روی سرورتون override کنین. این کار دادههای شما، مثل پستها و صفحات رو override نمیکنه.
جمعبندی:
همونطور که دیدین، این مشکل میتونه دلایل زیادی داشته باشه و حل کردنش کار راحتی نیست. یادتون باشه قبل از هر تلاشی برای تعمیر وبسایتتون، یک نسخه پشتیبان ازش بگیرین.
لطفا قبل از تماس با هاستتون برای بررسی خطای server error وبسایتتون، روشهای بالا رو امتحان کنین:)