เว็บพัง

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

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

นายปิ๊ก


ผู้ก่อตั้งเว็บไซต์ Themevilles.com เป็นอาจารย์สอน WordPress และ WooCommerce ในเว็บคอร์สออนไลน์ Skilllane และรับทำเว็บไซต์ ทำการตลาดออนไลน์ เช่น SEO, Facebook และ LINE

สอบถามผ่านทาง Line QR Code qr-code.png