วิธีแก้ Internal Server Error

Internal Server Error 500

WordPress Internal Server Error คืออะไร?

Internal Server Error (ISE) หรือข้อผิดพลาดเซิร์ฟเวอร์ภายใน เป็นหนึ่งในข้อผิดพลาดที่พบบ่อยและสร้างความหงุดหงิดให้กับผู้ใช้งาน WordPress โครตๆ

ข้อผิดพลาดนี้ไม่ได้ระบุสาเหตุที่ชัดเจนเหมือนข้อผิดพลาดอื่นๆ เช่น “ไม่พบหน้า” หรือ “ฐานข้อมูลเชื่อมต่อไม่ได้” แต่จะแสดงเพียงข้อความทั่วไปว่า “Internal Server Error” ซึ่งหมายความว่ามีบางอย่างผิดปกติเกิดขึ้นกับเซิร์ฟเวอร์ที่โฮสต์เว็บไซต์ WordPress ของคุณ..แล้วละ

สาเหตุหลักๆ ของ Internal Server Error มักเกี่ยวข้องกับ:

  • ไฟล์ .htaccess เสียหาย: ไฟล์นี้ทำหน้าที่กำหนดค่าการทำงานของเซิร์ฟเวอร์ และเป็นสาเหตุที่พบบ่อยที่สุดของ ISE
  • หน่วยความจำ PHP ไม่เพียงพอ: WordPress และปลั๊กอิน/ธีมบางตัวอาจต้องการหน่วยความจำ (RAM) มากกว่าที่เซิร์ฟเวอร์จัดสรรให้
  • ปลั๊กอินหรือธีมที่ขัดแย้งกัน: อันนี้เจอบ่อยสุด ปลั๊กอินหรือธีมบางตัวอาจไม่เข้ากัน หรือมีโค้ดที่ผิดพลาด ทำให้เกิดข้อผิดพลาด ถ้าใครลง plugin ไว้เยอะๆ นี่เซ็งเป็ดเลย 55 ต้องไล่เช็คที่ละ plugin
  • ไฟล์ WordPress หลักเสียหาย: ไฟล์หลักของ WordPress บางไฟล์อาจเสียหายจากการอัปโหลดไม่สมบูรณ์ หรือปัญหาอื่นๆ
  • สิทธิ์ของไฟล์ (File Permissions) ไม่ถูกต้อง: สิทธิ์ในการเข้าถึงและแก้ไขไฟล์บนเซิร์ฟเวอร์ไม่ถูกต้อง อาจทำให้เซิร์ฟเวอร์ไม่สามารถทำงานได้ตามปกติ

วิธีแก้ไข Internal Server Error ใน WordPress

การแก้ไข Internal Server Error ต้องอาศัยการลองผิดลองถูกบ้าง เนื่องจากสาเหตุไม่เฉพาะเจาะจง แต่สามารถทำตามขั้นตอนเหล่านี้ได้:

1. ตรวจสอบไฟล์ .htaccess

นี่คือจุดเริ่มต้นที่ดีที่สุดครับ:

  • เชื่อมต่อเว็บไซต์ด้วย FTP หรือ File Manager: ใช้โปรแกรม FTP Client (เช่น FileZilla) หรือ File Manager ใน cPanel/DirectAdmin เพื่อเข้าถึงไฟล์บนโฮสติ้ง
  • ค้นหาไฟล์ .htaccess: ไฟล์นี้จะอยู่ในไดเรกทอรีหลักของ WordPress (มักจะเป็น public_html หรือ www)
  • เปลี่ยนชื่อไฟล์ .htaccess เดิม: เปลี่ยนชื่อไฟล์ .htaccess เป็นอย่างอื่น เช่น .htaccess_old การทำเช่นนี้จะทำให้ WordPress ไม่สามารถใช้ไฟล์ .htaccess เดิมได้
  • ทดสอบเว็บไซต์: ลองเข้าเว็บไซต์ของอีกครั้ง หากเว็บไซต์กลับมาใช้งานได้ปกติ แสดงว่าไฟล์ .htaccess เดิมเสียหาย
  • สร้างไฟล์ .htaccess ใหม่: เข้าสู่ระบบ WordPress Dashboard ไปที่ การตั้งค่า (Settings) > ลิงก์ถาวร (Permalinks) โดยไม่ต้องเปลี่ยนแปลงอะไร ให้คลิกที่ปุ่ม บันทึกการเปลี่ยนแปลง (Save Changes) นี่จะสร้างไฟล์ .htaccess ใหม่ขึ้นมาโดยอัตโนมัติ

2. เพิ่มหน่วยความจำ PHP (PHP Memory Limit)

หากวิธีแรกไม่ได้ผล ลองเพิ่มหน่วยความจำ PHP:

  • ค้นหาไฟล์ wp-config.php: ไฟล์นี้อยู่ในไดเรกทอรีหลักของ WordPress เช่นเดียวกับไฟล์ .htaccess
  • แก้ไขไฟล์ wp-config.php: เปิดไฟล์ wp-config.php ด้วย Text Editor และเพิ่มบรรทัดโค้ดนี้ก่อนบรรทัด /* That's all, stop editing! Happy blogging. */ หรือบรรทัดสุดท้ายของการตั้งค่าอื่นๆ:
    define('WP_MEMORY_LIMIT', '256M');
    สามารถลองค่าอื่นได้ เช่น 128M หรือ 512M หาก 256M ยังไม่เพียงพอ
  • บันทึกและทดสอบ: บันทึกไฟล์และลองเข้าเว็บไซต์อีกครั้ง

3. ปิดการใช้งานปลั๊กอินทั้งหมด (ตรงนี้พบบ่อยที่สุด)

ปลั๊กอินที่เข้ากันไม่ได้หรือไม่สมบูรณ์มักเป็นสาเหตุของ ISE:

  • ผ่าน FTP/File Manager: ไปที่ไดเรกทอรี wp-content/plugins
  • เปลี่ยนชื่อโฟลเดอร์ plugins: เปลี่ยนชื่อโฟลเดอร์ plugins เป็นอย่างอื่น เช่น plugins_old การทำเช่นนี้จะปิดการใช้งานปลั๊กอินทั้งหมด
  • ทดสอบเว็บไซต์: หากเว็บไซต์กลับมาใช้งานได้ปกติ แสดงว่ามีปลั๊กอินตัวใดตัวหนึ่งเป็นต้นเหตุ
  • ค้นหาปลั๊กอินที่เป็นปัญหา: เปลี่ยนชื่อโฟลเดอร์ plugins_old กลับเป็น plugins จากนั้นเข้าไปในโฟลเดอร์ plugins และเปลี่ยนชื่อโฟลเดอร์ของปลั๊กอินทีละตัว (เช่น เปลี่ยนชื่อ plugin_name เป็น plugin_name_old) พร้อมกับทดสอบเว็บไซต์ไปเรื่อยๆ จนกว่าจะพบปลั๊กอินที่ทำให้เกิดปัญหา เมื่อเจอแล้วให้ลบปลั๊กอินนั้นทิ้ง หรือหาปลั๊กอินอื่นมาทดแทน

4. สลับไปใช้ธีมเริ่มต้นของ WordPress

คล้ายกับการปิดปลั๊กอิน ธีมบางตัวอาจทำให้เกิดปัญหา:

  • ผ่าน FTP/File Manager: ไปที่ไดเรกทอรี wp-content/themes
  • เปลี่ยนชื่อโฟลเดอร์ธีมที่ใช้งานอยู่: เปลี่ยนชื่อโฟลเดอร์ของธีมที่กำลังใช้งานอยู่ (ยกเว้นธีมเริ่มต้นของ WordPress เช่น twentytwentyfour หรือ twentytwentythree) การทำเช่นนี้จะบังคับให้ WordPress สลับไปใช้ธีมเริ่มต้น
  • ทดสอบเว็บไซต์: หากเว็บไซต์กลับมาใช้งานได้ปกติ แสดงว่าธีมที่เคยใช้เป็นปัญหา อาจต้องอัปเดตธีม หรือเลือกใช้ธีมอื่น

5. ตรวจสอบเวอร์ชัน PHP

บางครั้ง WordPress หรือปลั๊กอิน/ธีมที่ใช้ อาจไม่รองรับเวอร์ชัน PHP ที่รันอยู่บนเซิร์ฟเวอร์:

  • ติดต่อผู้ให้บริการโฮสติ้ง: สอบถามผู้ให้บริการโฮสติ้งว่า เว็บไซต์รันบน PHP เวอร์ชันไหน และสามารถเปลี่ยนเวอร์ชัน PHP ได้มั๊ย
  • อัปเดต PHP: หากเวอร์ชัน PHP เก่าเกินไป (ต่ำกว่า 7.4) การอัปเดตเป็นเวอร์ชันที่ใหม่กว่าและเสถียรขึ้น อาจช่วยแก้ปัญหานี้ได้

6. อัปโหลดไฟล์ WordPress Core ใหม่

หากไฟล์ WordPress หลักบางส่วนเสียหาย การอัปโหลดไฟล์ใหม่จะช่วยได้:

  • ดาวน์โหลด WordPress เวอร์ชันล่าสุด: ไปที่ th.wordpress.org และดาวน์โหลด WordPress เวอร์ชันล่าสุด
  • แตกไฟล์: แตกไฟล์ .zip ที่ดาวน์โหลดมา
  • เชื่อมต่อด้วย FTP/File Manager: อัปโหลดโฟลเดอร์ wp-admin และ wp-includes ไปยังไดเรกทอรีหลักของ WordPress
  • ยืนยันการเขียนทับ: โปรแกรม FTP จะถามว่าต้องการเขียนทับไฟล์ที่มีอยู่หรือไม่ ให้เลือก “Yes” หรือ “Overwrite”
    • ข้อควรระวัง: ไม่ควรอัปโหลดโฟลเดอร์ wp-content เพราะจะไปเขียนทับปลั๊กอิน ธีม และรูปภาพที่เคยอัปไปแล้ว

7. ตรวจสอบสิทธิ์ของไฟล์ (File Permissions)

สิทธิ์ของไฟล์ที่ไม่ถูกต้องอาจทำให้เซิร์ฟเวอร์ไม่สามารถเข้าถึงไฟล์บางไฟล์ได้:

  • ไดเรกทอรี: ควรกำหนดเป็น 755
  • ไฟล์: ควรกำหนดเป็น 644
  • แก้ไขผ่าน FTP Client: ในโปรแกรม FTP Client สามารถคลิกขวาที่ไฟล์หรือโฟลเดอร์ แล้วเลือก “File permissions” หรือ “Change permissions” เพื่อกำหนดค่าได้
    • ข้อควรระวัง: หากไม่แน่ใจหรือไม่เคยทำมาก่อน ควรปรึกษาผู้ให้บริการโฮสติ้งก่อนดำเนินการขั้นตอนนี้

8. ติดต่อผู้ให้บริการโฮสติ้ง

หากลองทุกวิธีข้างต้นแล้วยังไม่ได้ผล Internal Server Error อาจเกิดจากปัญหาที่ฝั่งเซิร์ฟเวอร์เอง:

  • ให้ข้อมูลที่ละเอียด: อธิบายขั้นตอนที่ได้ลองทำไปแล้ว และบอกว่าเมื่อไหร่ที่ปัญหาเกิดขึ้น
  • ตรวจสอบบันทึกข้อผิดพลาด (Error Logs): ผู้ให้บริการโฮสติ้งสามารถเข้าถึง Error Logs ของเซิร์ฟเวอร์ ซึ่งจะบอกรายละเอียดของข้อผิดพลาดที่เกิดขึ้นได้

หวังว่าจะช่วยแก้ไขปัญหา Internal Server Error บน WordPress ได้นะครับ! อาจจะต้องใช้ความอดทนเล็กน้อย..แทบกระอักเลือดในบางเคส 55 แต่ถ้าค่อยๆ ทำตามขั้นตอนไปเรื่อยๆ ก็น่าจะทำให้เว็บไซต์ที่เอ๋ออยู่ กลับมาใช้งานได้อีกครั้ง