[อัพเดทปี 2024] ในบทความนี้จะเป็นวิธีการแก้ไขปัญหา 500 Internal Server Error ที่ทำให้ WordPress พังนะครับ บางท่านอาจขึ้นเป็น “500 Internal Server Error” แบบนี้เลย หรือขึ้นว่า “เกิดข้อผิดพลาดร้ายแรงบนเว็บไซต์นี้ โปรดตรวจสอบคำแนะนำในกล่องข้อความในอีเมลผู้ควบคุมเว็บ” หรือ “There has been a critical error on this website. Please check your site admin email inbox for instructions” หรือถ้าเว็บไซต์สร้างด้วย Framework อื่นๆก็สามารถปรับใช้ได้ครับ

500 Internal Server Error คืออะไร

500 Internal Server Error คือรหัส http ที่ใช้บอกว่าเว็บนี้มีปัญหา หรือมักเรียกว่า “เว็บล่ม” เกิดได้จากหลากหลายสาเหตุครับ เรียงลำดับตามที่เกิดขึ้นบ่อย เช่น

500 Internal Server Error สาเหตุเกิดจากอะไร

  • ไฟล์โค้ดมีการเขียนโค้ดที่มี error ไม่สมบูรณ์ หรือ code มีบัค
  • High CPU 100% ซีพียูทำงานหนัก หรือเรียกว่า เซิร์ฟเวอร์โหลดหนักเกินไป
  • ไฟล์โค๊ดปลั๊กอินหรือธีมไม่สมบูรณ์หรือติดบั๊ก
  • ไฟล์ .htaccess มีปัญหา
  • โดน hack แก้ไขไฟล์
  • PHP Memory Limit ไม่เพียงพอ

500 Internal Server Error วิธีแก้ไขเบื้องต้น

ในบทความนี้ ขอแชร์ http error 500 แก้ยังไง และแนะนำวิธีหาสาเหตุและแก้ไข Status Code 500

  • เปิดโหมด Debug ของ wordpress

    เพื่อหาสาเหตุข้อความแจ้ง error ก่อนครับ โดยแก้ไขไฟล์ wp-config.php เพิ่ม/แก้ไข 2 ตัวแปรดังนี้ ดังรูป และอัพขึ้นแก้ไข

    define(‘WP_DEBUG’, true);
    define(‘WP_DEBUG_LOG’, true);

    หลังจากนั้นทุกครั้งที่เกิด error ระบบจะเก็บสาเหตุความผิดพลาดไว้ในไฟล์ debug.log ไฟล์จะอยู่ที่ path /wp-content ดังรูป

    ตัวอย่าง error ที่อยู่ในไฟล์ debug.log

    หมายเหตุ: หากแก้โค้ด ‘WP_DEBUG_DISPLAY’ เป็น true ตัว error log จะแสดงในหน้าเว็บเลย ตัวอย่าง

  • High CPU 100% ซีพียูทำงานหนัก หรือเรียกว่า เซิร์ฟเวอร์โหลดหนักเกินไป

    เกิดบ่อยครั้งจากจำนวนผู้ใช้เว็บที่มาก หรือหน้าเว็บใช้ Plugin ที่หนักจนเกินไป ซึ่งเราสามารถเข้าดู CPU Peek โดยการ ssh เข้าเครื่องเซิฟเวอร์ใช้คำสั่ง top command อาจแก้ด้วยการหา Plugin ทำ Caching มาช่วยลดโหลด หรือเพิ่มสเป็คของเซิฟเวอร์ครับ

  • ไฟล์โค๊ดปลั๊กอินหรือธีมไม่สมบูรณ์หรือติดบั๊ก

    ส่วนใหญ่จะมากับ theme ฟรี หรือ Plugin ฟรีบางตัวครับ ต้องลองถอดติดตั้งดูทีละตัวครับ

  • ไฟล์ .htaccess มีปัญหา

    อาจเกิดจากการแก้ไขเอง หรือโดนแฮก ให้ลองเช็คข้อมูลในไฟล์ดูครับ ตัวอย่าง .htaccess ถูกแฮกจากพวกจะทำหน้าเว็บใส่ html backlink

  • โดน hack แก้ไขไฟล์ html

    ในบางครั้ง ถ้าเราใช้ theme ฟรี หรือ ปลั๊กอิน ฟรี อาจแถมฝังสคิปของ hacker ไว้รอเวลาที่จะมาแก้ไขไฟล์แฮกเว็บไซต์เรา โดยส่วนมากจะทำเว็บพัง เว็บล่ม ทำเพื่อสร้าง Backlink ออกไปยังเว็บอื่นครับ ตัวอย่างไฟล์ html ที่โดนแก้แทรก ahref ทำ backlink ออกไปยังเว็บอื่นครับ ให้เราลองหาไฟล์ที่มีขนาดไฟล์ใหญ่ผิดปกติดูครับ ส่วนมากจะเป็นไฟล์ index.php , wp-setting.php

  • PHP Memory Limit ไม่เพียงพอ

    เราสามารถตรวจสอบค่า PHP Config ได้จากเมนู Tools > Site Health > Info

    แก้ไฟล์ php.ini ค้นหา php_memory_limit แก้ไขแล้ว restart php กับ apache ครับ

สรุป
บทความนี้หวังว่าจะทำให้ผู้อ่านเข้าใจถึง 500 Internal Server Error และวิธีแก้ไขเบื้องต้น เหมาะกับผู้ดูแลเว็บไซต์หรือโปรแกรมเมอร์ครับ คนธรรมดาอาจจะยังไม่สามารถแก้เองได้ครับ ดังนั้นควรหมั่น Backup server เพราะปัญหาสามารถเกิดขึ้นได้ตลอดเวลาครับ