500 Internal Server Error คืออะไร?
Internal Server Error คือปัญหาที่เกิดขึ้นจากฝั่งแอปพลิเคชันบนเว็บเซิร์ฟเวอร์ของคุณ เมื่อคุณพิมพ์ URL หรือคลิกลิงก์เพื่อเรียกดูหน้าเว็บ เซิร์ฟเวอร์จะได้รับคำขอ แต่หากมีบางอย่างผิดปกติจนไม่สามารถแสดงผลหน้านั้นได้ คุณจะพบกับข้อความแจ้งเตือนความผิดพลาดนี้
การสร้างข้อมูลสำรอง (Backup)
บ่อยครั้งที่ข้อผิดพลาดบนเซิร์ฟเวอร์ไม่ได้เกิดจากตัวคุณโดยตรง แต่เนื่องจากเซิร์ฟเวอร์ถูกจัดการโดยมนุษย์ ความผิดพลาดจึงเกิดขึ้นได้เสมอ และบางครั้งอาจร้ายแรงจนทำให้เว็บไซต์พังทั้งหมด ดังนั้นการสำรองข้อมูลจึงเป็นสิ่งที่ "ต้องทำ" เป็นประจำ
หากโฮสติ้งไม่มีระบบสำรองข้อมูลที่ดี คุณสามารถเลือกใช้ ปลั๊กอินสำรองข้อมูล WordPress (Backup Plugins) แทนได้
วิธีแก้ไข 500 Internal Server Error บน WordPress
มีหลายสาเหตุที่ทำให้เกิดปัญหานี้ เพื่อที่จะแก้ไขได้ตรงจุด เราต้องระบุสาเหตุให้พบก่อน ซึ่งสาเหตุที่พบบ่อยที่สุดคือ ไฟล์ .htaccess เสียหาย และ ขีดจำกัดหน่วยความจำ PHP (PHP Memory Limit)
1. การแก้ไขไฟล์ .htaccess
หากไฟล์ .htaccess เสียหาย จะส่งผลให้เกิด Error 500 ทันที โดยมักเกิดจากปลั๊กอินหรือการติดตั้งธีมที่ไม่สมบูรณ์
ขั้นตอน: ล็อกอินเข้า FTP ของคุณ ไปที่ Root Directory (โฟลเดอร์หลัก) คุณจะเห็นไฟล์ชื่อ .htaccess อยู่ใกล้ๆ กับโฟลเดอร์ wp-content
ให้ดาวน์โหลดไฟล์มาเก็บไว้ในเครื่อง จากนั้นลองเปลี่ยนโค้ดในไฟล์ให้เป็นค่ามาตรฐานตาม WordPress Codex ตัวอย่างเช่น หากคุณใช้ WordPress Multisite เวอร์ชัน 3.5 ขึ้นไป ให้ใช้โค้ดดังนี้:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
2. การเพิ่ม PHP Memory Limit
หากหน่วยความจำ PHP ต่ำเกินไป เซิร์ฟเวอร์จะตัดการทำงานและแสดง Error 500 คุณสามารถเพิ่มขีดจำกัดนี้ได้โดยแก้ไขโค้ดในไฟล์ต่อไปนี้ตัวใดตัวหนึ่ง:
ไฟล์ wp-config.php (แนะนำ)
define('WP_MEMORY_LIMIT', '1024M');
ini_set('post_max_size', '1024M');
ini_set('upload_max_filesize', '1024M');
ไฟล์ .htaccess
php_value upload_max_filesize 1024M php_value post_max_size 1024M
ไฟล์ PHP.ini
memory_limit = 1024M upload_max_filesize = 1024M post_max_size = 1024M file_uploads = On
วิธีแก้ไขเพิ่มเติม
ปิดการใช้งานปลั๊กอินทั้งหมด
หากยังเข้าหน้าเว็บไม่ได้ ให้ลองปิดปลั๊กอินทีละตัว โดยเข้าหน้าแอดมิน (ถ้าเข้าได้) แล้วกด Deactivate ปลั๊กอิน แล้วรีเฟรชหน้าเว็บดูว่าหายหรือไม่
อัปโหลดโฟลเดอร์ wp-admin และ wp-includes ใหม่
หากทำทุกทางแล้วไม่หาย ให้ดาวน์โหลดไฟล์ติดตั้ง WordPress ใหม่ แล้วอัปโหลดเฉพาะโฟลเดอร์ wp-admin และ wp-includes ขึ้นไปทับของเดิม (อย่าลืมสำรองข้อมูลก่อนทำ!)