9 ปัญหาเว็บพังของ WordPress และวิธีการแก้ไข
9 | | | WooCommerce, การแก้ไขปัญหา, ความรู้
สวัสดีครับ สำหรับบทความในวันนี้เราจะมาพูดถึงวิธีการแก้ปัญหาเว็บพังซึ่งเป็นปัญหาที่มักจะเกิดทั่วไปของระบบเว็บ 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 เพื่อทำการตรวจสอบ
การอัพเกรดอัตโนมัติล้มเหลว (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