Joomla ขึ้น “Class Not Found” แก้อย่างไร? ตรวจส่วนเสริมและไฟล์ที่เกี่ยวข้อง

ข้อความ “Class Not Found” หมายถึง PHP หรือ Joomla หาไฟล์คลาสที่จำเป็นไม่พบ มักเกิดหลังติดตั้งหรืออัปเดตส่วนเสริม ย้ายไฟล์ไม่ครบ หรือใช้ส่วนเสริมที่ไม่เข้ากับเวอร์ชัน Joomla ที่ติดตั้ง

ให้จดชื่อคลาสและไฟล์ที่แสดงในข้อผิดพลาดก่อน แล้วตรวจส่วนเสริมหรือการเปลี่ยนแปลงล่าสุดตามขั้นตอนนี้

❶ จดรายละเอียดจากข้อความผิดพลาด

เปิด Error Log ของโฮสติ้ง หรือดูรายละเอียดบนหน้าข้อผิดพลาดหากมีข้อมูลแสดงอยู่ จากนั้นจดข้อมูลต่อไปนี้:

  • ชื่อคลาสที่ระบบหาไม่พบ
  • ชื่อไฟล์และบรรทัดที่เกิดข้อผิดพลาด
  • URL ที่พบปัญหา
  • วันและเวลาที่เริ่มเกิดอาการ
  • การติดตั้งหรืออัปเดตที่ทำก่อนเกิดปัญหา

หากชื่อไฟล์อยู่ภายในโฟลเดอร์ของส่วนเสริมใด ให้เริ่มตรวจส่วนเสริมนั้นก่อน หากปรากฏเฉพาะบางหน้า อาจเป็นส่วนเสริมที่ทำงานเฉพาะหน้านั้น

❷ ตรวจส่วนเสริมที่เพิ่งติดตั้งหรืออัปเดต

หาก “Class Not Found” เริ่มหลังติดตั้งหรืออัปเดตส่วนเสริม ให้ตรวจว่าแพ็กเกจนั้นรองรับเวอร์ชัน Joomla และ PHP ที่เว็บไซต์ใช้อยู่หรือไม่

① หากยังเข้าแอดมินได้ ให้ปิดส่วนเสริมที่เพิ่งเปลี่ยนทีละรายการ แล้วทดสอบหน้าเว็บหลังปิดแต่ละครั้ง

② หากปิดส่วนเสริมแล้วอาการหาย ให้ตรวจหน้าข้อมูลของส่วนเสริมว่ามีเวอร์ชันแก้ไขหรือคำแนะนำสำหรับ Joomla รุ่นที่ใช้อยู่หรือไม่

③ หากติดตั้งไฟล์ไม่ครบ ให้สำรองเว็บไซต์ก่อน แล้วติดตั้งแพ็กเกจที่ถูกต้องใหม่ตามคู่มือของผู้พัฒนา

อย่าลบโฟลเดอร์ส่วนเสริมหรือไฟล์ระบบด้วยมือโดยไม่รู้ความเชื่อมโยง เพราะส่วนเสริมอาจต้องใช้ไฟล์เหล่านั้นในหน้าอื่นด้วย

❸ ตรวจไฟล์และตัวพิมพ์เล็กใหญ่

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

บนเซิร์ฟเวอร์ Linux ชื่อไฟล์ที่ใช้ตัวพิมพ์ใหญ่และตัวพิมพ์เล็กต่างกันอาจถือเป็นคนละชื่อ เช่น Example.php กับ example.php หากระบบอ้างชื่อไฟล์ไม่ตรงกับไฟล์จริง PHP อาจหา Class ไม่พบ

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

❹ ตรวจความเข้ากันได้ของส่วนเสริมกับ Joomla

ใน Joomla รุ่นใหม่ ส่วนเสริมใช้โครงสร้าง Namespace และระบบโหลดคลาสอัตโนมัติ หากส่วนเสริมระบุ Namespace ในไฟล์ Manifest ไม่ตรงกับโครงสร้างไฟล์ หรือชื่อคลาสและชื่อไฟล์ไม่ตรงกัน ระบบอาจโหลดคลาสไม่สำเร็จ

ผู้ดูแลทั่วไปควรตรวจเวอร์ชันส่วนเสริมและไฟล์ Manifest จากแพ็กเกจอย่างระมัดระวัง ส่วนการแก้ Namespace หรือโค้ด PHP ควรให้ผู้พัฒนาส่วนเสริมดำเนินการ เพราะการแก้ผิดอาจทำให้เว็บไซต์แสดงข้อผิดพลาดเพิ่ม

หากเป็นส่วนเสริมที่พัฒนาขึ้นเอง ให้ผู้พัฒนาตรวจความสอดคล้องระหว่าง Namespace, ชื่อคลาส, ชื่อไฟล์ และตำแหน่งไฟล์ตามโครงสร้างของส่วนเสริมนั้น ทีมดูแลเว็บไซต์ เช่น ComSiam สามารถใช้ชื่อคลาสและไฟล์จาก Error Log เพื่อระบุจุดที่ต้องตรวจได้

❺ ล้างแคชหลังแก้ส่วนเสริมหรือไฟล์

หลังติดตั้งส่วนเสริมใหม่หรือแก้ไฟล์ที่เกี่ยวข้อง ให้ล้างแคช Joomla จากแอดมินหากยังเข้าได้ แล้วทดสอบหน้าเดิมอีกครั้ง

หากเว็บไซต์ยังแสดงข้อผิดพลาด ให้ตรวจ Error Log ใหม่ว่าชื่อคลาสหรือไฟล์ที่มีปัญหาเปลี่ยนไปหรือไม่ การล้างแคชช่วยให้ระบบอ่านข้อมูลใหม่ แต่ไม่สามารถสร้างไฟล์คลาสที่หายไปหรือแก้ Namespace ที่ผิดได้

❻ เมื่อยังแก้ไม่ได้

ส่งข้อมูลต่อไปนี้ให้ผู้พัฒนาหรือโฮสติ้งช่วยตรวจ:

  • ข้อความผิดพลาดฉบับเต็ม
  • ชื่อคลาสและพาธไฟล์
  • เวอร์ชัน Joomla และ PHP
  • ชื่อและเวอร์ชันส่วนเสริมที่เกี่ยวข้อง
  • รายการเปลี่ยนแปลงก่อนเริ่มเกิดปัญหา

ปิดบังข้อมูลลับใน Log ก่อนส่ง และสำรองไฟล์กับฐานข้อมูลก่อนให้ผู้ดูแลแก้ไข

สรุป

Joomla ขึ้น “Class Not Found” เมื่อระบบหาไฟล์คลาสที่ต้องใช้ไม่พบ ให้เริ่มจากจดชื่อคลาสและพาธจาก Error Log แล้วตรวจส่วนเสริมที่เพิ่งเปลี่ยน ไฟล์ที่อัปโหลดไม่ครบ ชื่อไฟล์ที่ตัวพิมพ์ไม่ตรง และความเข้ากันได้ของ Namespace หากต้องแก้โค้ด ให้ผู้พัฒนาตรวจตามเวอร์ชัน Joomla ที่ใช้อยู่