9 ปัญหาเว็บพังของ WordPress และวิธีการแก้ไข

สวัสดีครับ สำหรับบทความในวันนี้เราจะมาพูดถึงวิธีการแก้ปัญหาเว็บพังซึ่งเป็นปัญหาที่มักจะเกิดทั่วไปของระบบเว็บ WordPress ในการแสดงข้อผิดพลาด ซึ่งผู้ใช้งานทั่วไปมักจะเจอปัญหากัน ยกตัวอย่างเช่น หน้าเว็บของเราเป็นสีขาว หน้าเว็บมีการแจ้งข้อผิดพลาด Internal Server Error ปํญหา Error Establishing Database Connection และปัญหาอื่นๆ ทำให้เว็บไซต์ของเรามีสภาพไม่สมบูรณ์ เรามาดูรายละเอียดกันเลยครับ

หน้าจอขาว (The White Screen of Death)

หลายๆ ท่านในที่นี้คงเคยมีประสบการณ์กับหน้าจอเว็บไซต์ของเราเป็นหน้าจอขาว (The White Screen of Death: WSOD) โดยไม่มีการแจ้งเตือนข้อความใดๆ ทำให้เราไม่ทราบว่าจะต้องทำการแก้ไขจุดใด อย่างไร วิธีการแก้ไขปัญหานั้นเราจะต้องทำการลดเหตุข้อสงสัยให้เหลือน้อยที่สุดเพื่อที่จะทำการแก้ไขได้ถูกต้อง เหตุที่อาจจะเกิดและเราลดได้นั้นได้แก่ การทดสอบปิด-ปลั๊กอินอันเนื่องจากปลั๊กอินขัดแย้งกัน (Compatibility issues) และการเปลี่ยนธีมเวิร์ดเพรสเพื่อทำการทดสอบครับ

การทดสอบปิด-เปิดปลั๊กอิน

ในบางครั้ง เราทำการติดตั้งหรืออัพเดทปลั๊กอิน อาจจะมีโค้ดบางอย่างภายในปลั๊กอินนั้นได้ถูกเขียนมาไม่เหมาะสมกับเว็บไซต์ของเรา ทำให้หน้าเว็บของเราเป็นสีขาวได้ วิธีการคือ เราจะต้องทำการปิดและเปิดปลั๊กอินทีละตัวให้เหลือเฉพาะปลั๊กอินที่จำเป็นจริงๆ เพื่อทำการทดสอบ หากปลั๊กอินตัวไหนที่ปิดแล้ว ปรากฏว่า เว็บไซต์ของเราสามารถทำงานได้เป็ฯปกติ แสดงว่าปลั๊กอินนั้นเป็นปลั๊กอินที่เป็นปัญหา เราสามารถแก้ไขได้ด้วยการหาปลั๊กอินทดแทน

ในกรณีที่เราไม่สามารถเข้าหลังบ้านผ่าน wp-admin ได้ ให้เราใช้วิธีการผ่าน FTP เพื่อเข้าดำเนินการตรวจสอบ ให้เรา FTP เข้าไปที่โฟลเดอร์ wp-content/plugins แล้วไล่ดูปลั๊กอินที่ใช้งาน ทำการเปลี่ยนชื่อโฟลเดอร์ปลั๊กอินทีละตัวเพื่อทำการทดสอบครับ

เปลี่ยนธีมเพื่อทำการทดสอบ

อีกกรณีหนึ่งที่มักจะมีปัญหาหน้าเว็บขาวมักจะเกิดขึ้นหลังจากเราได้ทำการเปลี่ยนหรืออัพเดทธีมทำให้เว็บไซต์ไม่สามารถเข้าได้ครับ ให้เราทำการเปลี่ยนธีมไปเป็นธีมพื้นฐานของเวิร์ดเพรส ได้แก่ ธีมที่อยู่ในกลุ่ม Twenty ต่างๆ เช่น Twenty Twenty เป็นต้น หากทำการเปลี่ยนธีมแล้ว ปัญหาหน้าเว็บขาวหายไปแสดงว่าธีมก่อนทำการเปลี่ยนนั้นเป็นปัญหาครับ

ฃหากเราไม่สามารถสู่ระบบหลังบ้านผ่าน wp-admin ได้ ให้เราทำการเข้าผ่าน FTP ไปยังโฟลเดอร์ wp-content/themes แล้วลองเปลี่ยนชื่อธีมแล้วทำการเปิดใช้งานธีมที่ถูกเปลี่ยนแทน

ทำการเปิด Debug เพื่อทำการตรวจสอบ

นอกจากสองวิธีการข้างต้นแล้วเราสามารถทำการตรวจสอบผ่านการเปิด Debug เพื่อให้แสดงปัญหาว่าเกิดจากเหตุใด โดยวิธีการจะต้องเข้าไปแก้โค้ดในส่วนของไฟล์ wp-config.php ในส่วนของ define(‘wp-debug’, false); ให้เปลี่ยนจาก false เป็น true ทั้งนี้การตรวจสอบด้วยวิธีการนี้จะต้องมีความชำนาญในการแก้ไขโค้ดด้วย ถึงจะสามารถแก้ไขปัญหาได้ครับ

ปัญหา Internal Server Error

ปัญหาการเกิด Internal Server Error สามารถเกิดได้จากหลายสาเหตุ วิธีการแก้ไขให้เราดำเนินการดังต่อไปนี้

  • เกิดจากไฟล์ .htaccess วิธีการแก้ไขคือให้เราทำการเข้าสู่ระบบไฟล์ด้วย FTP แล้วให้เราทำการเปลี่ยนชื่อไฟล์ .htaccess ไปเป็น .htaccess_old แล้วทดสอบทำการโหลดเว็บไซต์ของเราอีกครั้ง หากปัญหา Internal Server Error หายไป ให้เราเข้าไปที่หลังบ้านที่เมนู Settings > Permalinks แล้วทำการเลือกและบันทึกค่าลิงก์ของเราใหม่ ระบบจะทำการสร้างไฟล์ .htaccess ใหม่ให้กับเรา
  • เกิดจากปลั๊กอิน ให้เราทำการปลดปลั๊กอินแล้วทำการทดสอบทีละตัว หากพบว่าปลั๊กอินตัวใดเป็นปัญหาให้ทำการเปลี่ยนปลั๊กอิน
  • เกิดจากธีม ให้ทำการเปลี่ยนธีมเป็นธีมพื้นฐาน แล้วทำการโหลดเว็บอีกครั้ง ถ้าหายแสดงว่าเป็นที่ธีมของเรา ให้ทำการอัพเดทธีมหรือแก้ไขโค้ดที่เป็นปัญหา หรือหากไม่สามารถแก้ไขได้ให้ทำการเปลี่ยนธีมใช้งาน
  • เกิดจาก PHP Memory Limit ให้ทำการเพิ่มค่าที่ถูกจำกัดไว้
  • ไฟล์ในโฟลเดอร์ wp-admin และ wp-includes อาจจะพัง ให้ทำการอัปโหลดไฟล์ที่ดาวน์โหลดจากเว็บ WordPress.org ใหม่อีกครั้งทั้งสองโฟลเดอร์

ปัญหา Error Establishing Database Connection

ปัญหาเว็บไซต์ที่เกิดจา Error Establish Connection มักจะเกิดจากการเชื่อมต่อระหว่างไฟล์และฐานข้อมูลไม่ถูกต้อง ให้เราทำการตรวจสอบดังต่อไปนี้

  • ไฟล์ wp-config.php มีข้อผิดพลาด ให้เราทำการตรวจสอบไฟล์ wp-config.php โดยให้ดูในส่วนของ Database name, Database username, Database password และ Database host ว่าตรงกันกับฐานข้อมูลใน phpMyAdmin หรือไม่ หากไม่ตรงกันให้ทำการแก้ไขให้ตรงกัน
  • ในกรณีที่ทำการแก้ไขแล้วไม่สำเร็จ ให้เราทำการติดต่อบริษัทโฮสติ้งที่เราฝากเว็บไซต์ไว้ครับ เนื่องจากปัญหาอาจจะเกิดจากฐานข้อมูลของเราเกินโควต้าที่ทางบริษัทโฮสติ้งกำหนดไว้ หรือ อีกกรณีคือเซิฟเวอร์ของโฮสติ้งล่มครับ
  • ในกรณีสุดท้ายหากยังไม่สามารถแก้ไขได้ เว็บไซต์ของเราอาจจะเกิดปัญหาจากการแฮ็คของแฮ็คเกอร์ก็เป็นไปได้ ให้เราทำการสแกนด้วยปลั๊กอิน Sucuri SiteCheck เพื่อทำการตรวจสอบ
สอน WordPress หรือ WooCommerce
สอน WordPress หรือ WooCommerce

การอัพเกรดอัตโนมัติล้มเหลว (Failed Auto-Upgrade)

สำหรับในกรณีการอัพเกรด WordPress ล้มเหลว อาจจะมีการเกิดขึ้นได้ใน 3 กรณี ได้แก่

  • หน้าจอขาวและไม่มีข้อมูลแจ้งว่าอัพเกรดไม่ได้เพราะเหตุใด
  • มีการแจ้งเตือนว่าอัพเดทล้มเหลว
  • มีข้อความแสดงข้อผิดพลาด PHP

ปัญหาในลักษณะนี้มักจะเกิดจากปัญหาสัญญาณการเชื่อมต่ออินเตอร์เน็ท (Internet connection problem) ระหว่างการอัพเกรด หรือ การกำหนดสิทธิ (File Permissions) ไม่ถูกต้อง เราสามารถแก้ไขได้โดยทำการอัพเดท WordPress ด้วยตัวเราเองครับ

ปัญหา Connection Timed Out

ข้อผิดพลาดจาก Connection Timed Out จะปรากฏขึ้นเมื่อเว็บไซต์ของเรามีการใช้งานเกินขอบเขตที่ทางเซิฟเวอร์กำหนดไว้ เช่น การใช้งานเมมโมรี่เกินขอบเขตที่กำหนด วิธีการแก้ไขให้ทำดังนี้

  • ทำการปลดปลั๊กอินทั้งหมด เพื่อทำการตรวจสอบว่าปัญหาเกิดจากปลั๊กอินหรือไม่
  • ทำการเปลี่ยนธีมเป็นธีมพื้นฐาน เพื่อทำการตรวจสอบว่าปัญหาเกิดจากธีมหรือไม่
  • เพิ่มขอบเขตจำกัดของเมมโมรี่ใน wp-config.php หรือให้ทางบริษัทโฮสติ้งทำการเพิ่มให้หากเว็บไซต์ของเราใช้โฮสติ้งในลักษณะ Shared hosting
  • เพิ่ม Maximum execution time ในไฟล์ php.ini หากไม่สามารถทำได้ให้ติดต่อบริษัทโฮสติ้งเช่นเดียวกัน

โหมดซ่อมแซมขณะทำการอัพเกรด (Maintenance Mode Following Upgrade)

ขณะที่ WordPress ทำการอัพเดท ระบบจะทำการติดตั้งไฟล์ .maintenance ซึ่งจะทำให้ได้ผู้ใช้งานเมื่อเปิดเว็บไซต์จะได้รับข้อความ “Briefly unavailable for scheduled maintenance. Please check back in a minute.” เราสามารถท่จะบบข้อความนี้ได้ โดยการเข้าไปที่ไฟล์ของเว็บไซต์ผ่านโปรแกรม FTP แล้วทำการลบไฟล์ .maintenance ที่อยู่ในโฟลเดอร์หลักของเว็บไซต์

ทำการแก้ไขเว็บไซต์แล้วสิ่งที่แก้ไขไม่เปลี่ยนหรือยังคงเดิม

ถ้าเราทำการเปลี่ยนแปลงเว็บไซต์แล้วแต่ปรากฏว่าหน้าเว็บไซต์ของเราไม่เปลี่ยนแปลงไปเหมือนกับสิ่งที่เราได้ทำการแก้ไข ให้เราทำการเคลียร์ค่า Browser Cache ซึ่งค่าที่เก็บไว้นี้มีไว้เพื่อทำให้เว็บไซต์ของเราแสดงผลเร็วขึ้น เพราะเป็นการจดจำข้อมูลเว็บเก่าไว้ในเบราเซอร์และจะดึงมาใช้งาน หากเคลียร์ค่านี้แล้วเว็บไซต์ก็จะแสดงข้อมูลล่าสุดที่ได้ทำการปรับแก้ครับ

ลิงก์แสดงข้อผิดพลาด 404 และรูปไม่ทำงาน

สำหรับปญหาที่เกิดจากลิงก์ที่เราใช้งานแสดงข้อความผิดพลาด 40 และหน้าจอขาวเมื่อทำงานอัพโหลดรูปภาพนั้น โดยส่วนใหญ่เกิดจากปัญหา mod_rewrite ที่ถูกปิดใน Apache web server ซึ่งจะทำให้ไม่ลิงก์ (Pretty permalinks) ไม่ทำงาน ให้ทำการเปิดใช้งาน mod_rewrite และทำการรีเซ็ทค่าลิงก์ (Permalink) ที่เมนู Settings > Permalinks ใหม่ หากทำการรีเซ็ทแล้วไม่ได้ผล ให้ทำการแก้ไขไฟล์ .htaccess ด้วยตนเอง ตามด้านล่าง

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

ข้อความแสดงข้อผิดพลาดของ PHP ที่มักเจอบ่อย

Cannot Modify Header Information – Headers Already Sent

ถ้าเราได้การแจ้งเตือนจาก WordPress เกี่ยวกับข้อความตามหัวข้อด้านบน แสดงว่าในโค้ดของเรามีการเว้นบรรทัดหรือมีตัวอักษรอยู่ก่อนเปิดหรือปิดแท็ก php วิธีแก้ไขให้ทำการลบออกไม่ให้มีการเว้นบรรทัดก่อนเปิดและปิดแท็กครับ

Call to undefined function

ในกรณีที่เกิดการแสดงข้อผิดพลาดแบบ Call to undefined function นั้น สาเหตุจะมาจากการที่ปลั๊กอินของ WordPress พยายามหาไฟล์หรือข้อมูลที่ไม่มีในโค้ดซึ่งจะทำให้เกิดข้อผิดพลาดนี้ ดังนั้นให้ทำการตรวจสอบปลั๊กอิน ธีมและเวอร์ชั่นของ WordPress โดยให้ทำการติดตั้งใหม่หรือทำการอัพเกรดและทำการตรวจสอบไฟล์ functions.php ว่าถูกต้องหรือไม่

Allowed memory size exhausted

ปัญหาที่เกิดจากข้อความแสดงข้อผิดพลาด Allowed memory size exhausted นั้นเกิดจากเมมโมรี่ที่เก็บเว็บไซต์ของเรามีไม่เพียงพอต่อการใช้งาน วิธีการแก้ไขทำได้โดยการเพิ่ม memory limit ในไฟล์ wp-config.php หรือในไฟล์ php.ini (หากต้องการแก้ไขไฟล์นี้ให้ทำการติดต่อบริษัทโฮสติ้งเพื่อทำการแก้ไข)

Maximum execution time exceed

ปัญหาที่เกิดจากข้อความแสดงข้อผิดพลาด Maximum execution time of 30 seconds exceed หรือ Maximum execution time of 60 seconds exceed มีความหมายว่า เว็บไซต์มีการใช้เวลานานเกินกว่าเวลาที่กำหนดในการแสดงผล ทำให้เกิดการแสดงข้อความดังกล่าวขึ้น วิธีการแก้ไข ให้ทำแบ็คอัพไฟล์ .htaccess แล้วทำการเปลี่ยนค่า max_excution_time หรืออีกกรณีให้ทำการเปลี่ยนค่าที่ไฟล์ php.ini ครับ ตามด้านล่าง

Syntax error

ปัญหา Syntax error เกิดจากมีการเขียนโค้ดผิดพลาดในไฟล์ php ยกตัวอย่างเช่น ลืม semi colon ( ; ) ในท้ายบรรทัดของโค้ด ลืมวงเล็บปีกกา เป็นต้น ให้ทำการตรวจสอบบรรทัดที่ระบุแล้วทำการแก้ไขให้ถูกต้อง

Unexpected

ปัญหาข้อความแสดงข้อผิดพลาดที่มีคำว่า Unexpected โดยส่วนใหญ่เกิดจากการไม่ได้ใส่ตัวอักษรบางอย่าง เช่น Unexpected ‘)’ คือ โค้ดไม่ได้ใส่เครื่องหมายวงเล็บปิด Unexpected T_STRING คือ โค้ดไม่ได้ใส่เครื่องหมายคำพูด (Quotation mark) หรือเครื่องหมายปิดแบบ semi-colon เป็นต้น

นอกจากปัญหาข้างต้นแล้ว ยังมีการแสดงข้อผิดพลาดในลักษณะอื่นอีกทั้งในส่วนของโค้ดและฐานข้อมูล ผู้พัฒนาเว็บไซต์จำเป็นที่จะต้องศึกษาเพิ่มเติมถึงวิธีการแก้ไข ในกรณีที่ท่านไม่สามารถทำการแก้ไขได้สามารถติดต่อขอใช้บริการในการแก้ไขปัญหากับเราได้ผ่านทางหน้าติดต่อเราหรือทางเฟสบุ๊คหรือไลน์ได้ครับ

สำหรับบทความฉบับนี้ก็ขอจบไว้เพียงเท่านี้ ขอบคุณครับ..

อ้างอิงเอกสาร Common WordPress Errors

ปรึกษาด้านเว็บไซต์
ปรึกษาด้านเว็บไซต์