เนื้อหาต่อไปนี้เป็นแนวทางสำหรับอัพเกรด opencart เวอร์ชั่น 2.2.0 ซึ่งเป็นเวอร์ชั่นเริ่มต้นในบทความเกี่ยวกับ
opencart ของเรา มาเป็นเวอร์ชั่นปัจจุบัน ณ วันที่เขียนบทความนี้เป็น 2.3.0.2
ก่อนอื่นให้เราทำการแบ็คอัพข้อมูลในฐานข้อมูลก่อน โดยสามารถเข้าไปจัดการผ่าน phpmyadmin หรือ
สามารถใช้ส่วนจัดการของ opencart ได้ดังนี้
ให้ไปในส่วนของ admin ไปที่เมนู ระบบ > เครื่องมือ > แบ็คอัพ และ การกู้คืน
จากนั้นเลือกตารางข้อมูลที่ต้องการแบ็คอัพ แล้วกดปุ่ม ส่งออก ดังรูป
เราก็จะได้ไฟล์แบ็คอัพในส่วนของข้อมูลในรูปแบบ sql ไฟล์
ต่อไปให้เราดาวน์โหลดไฟล์ทั้งหมดลงมาแบ็คอัพไว้ก่อน ตัวอย่างโฟลดอร์ไฟล์ข้อมูล ที่เราดาวน์โหลดลงมา
แบ็คอัพไว้ แสดงดังรูป
จำไว้เสมอว่าการอัพเกรดเวอร์ชั่นของ opencart นั้น ไฟล์เดิมที่เป็นไฟล์หลักของ opencart จะต้องไม่ถูกแก้ไข ดัดแปลง
ไปจากเดิม ไม่เช่นนั้นอาจจะเกิดข้อผิดพลาด หลังจากทำการอัพเกรดขึ้นได้
หลังจากเราแบ็คอัพข้อมูลในฐานข้อมูลและไฟล์โฟลเดอร์ต่างๆ เรียบร้อยแล้ว ให้เราไปทำการดาวน์โหลดเวอร์ชั่นใหม่
ของ opencart จากลิงค์ต่อไปนี้
เวอร์่นล่าสุดจะอยู่ด้านบน ในที่นี่เราดาวน์โหลดเวอร์ชั่น 2.3.0.2
พอดาวน์โหลดเสร็จแล้วเราจะได้ไฟล์ zip ให้ทำการแตกไฟล์ โดยไฟล์ที่เราจะอัพโหลดขึ้น server เพื่ออัพเกรดเวอร์ชั่น
จะอยู่ในโฟลเดอร์ upload ดังรูป
วิธีการอัพเกรดนั่นสามารถทำได้ง่าย คือทำการอัพโหลดไฟล์และโฟลเดอร์ในโฟลเดอร์ upload ตามรูปด้านบน
ขึ้นไปทับไฟล์เก่าบน server
แต่ยกเว้นไฟล์ config-dist.php
และไฟล์ config-dist.php ในโฟลเดอร์ admin
ให้เราทำการลบทั้งสองไฟล์นี้ออกก่อน
ต่อไปก็อัพโหลดไฟล์ทั้งหมดที่เหลือไปทับได้เลย จะได้โครงสร้างไฟล์และโฟลเดอร์คร่าวๆ ดังรูป
สังเกตว่าจะมีโฟลเดอร์ install เพิ่มเข้า ต่อไปจะเป็นขั้นตอนของการอัพเกรด ให้เราเข้าไปทำการอัพเกรดผ่าน
url สมมติชื่อเว็บ example.com ก็ให้เข้าไปที่ www.example.com/install
ก็จะขึ้นหน้าอัพเกรดขึ้นมาในลักษณะดังนี้
ให้กดปุ่ม continue เพื่อทำการอัพเกรด
ในตัวอย่างเป็นการทดสอบที่เครื่อง localhost ปรากฏว่าขึ้น error ดังรูป
เพราะว่ามีการทำงานของคำสั่งเกิน 30 วินาทีซึ่งถูกกำหนดค่าไว้ใน php.ini ให้เราแก้ไขค่าเป็นค่าที่มากกว่านี้ก่อน
แล้วค่อยมีทำการอัพเกรดใหม่ (ถ้าเจอปัญหาในลักษณะนี้บน server ก็ให้แก้ไขในลักษณะเดียวกัน)
ในที่นี้เราแก้ไขไฟล์ php.ini กำหนดเปลี่ยนจาก 30 เป็น 120 วินาทีหรือประมาณ 2 นาที ดังรูป แล้ว รีสตาร์ด
server service ใหม่อีกครั้ง กรณีที่ใช้เป็น server จำลองบน localhost ดังรูป
เสร็จแล้วกลับไปทำการอัพเกรดยังหน้าเดิมใหม่อีกครั้ง
รอสักครู่จนกระบวนการอัพเกรดสำเร็จเรียบร้อย จะได้เป็น
กดปุ่ม continue เพื่อเสร็จสิ้นการอัพเกรด
หากหลังจากเสร็จสิ้นการอัพเกรดแล้วขึ้น error ในลักษณะคล้ายดังรูปต่อไป
ทั้งนี้เป็นเพราะ bug เราสามารถแก้ไขโดยทำตามตัวอย่างตามลิ้งค์นี้
ซึ่งเขาแนะนำวิธีแก้ปัญหามาให้ใน 2 แบบ รายละเอียดของปัญหาอ่านได้ที่ลิ้งค์ด้านบน
วิธีแก้ที่ 1 ลบโฟลเดอร์ตามรายชื่อด้านล่าง (ถ้าไม่แน่ใจ อาจเปลี่ยนชื่อโดยกำหนด _ไว้ด้านหน้าก็ได้)
วิธีแก้ไขตามวิธีที่ 1 นี้จะเป็นการละทิ้งหรือไม่สนใจความสามารถที่จะยังคงให้ใช้ร่วมกับเวอร์ชั่น
2.2.x
catalog/model/total catalog/model/payment catalog/controller/payment catalog/model/shipping catalog/controller/module admin/controller/total admin/controller/payment admin/controller/shipping admin/controller/module
วิธีแก้ที่ 2 ให้ยังคงรองรับให้สามารถที่จะยังคงให้ใช้ร่วมกับเวอร์ชั่น 2.2.x ได้ โดยให้ทำการ
แก้ไขไฟล์
catalog > controller > event > compatibility.php
ค้นหาโค้ด
'model/' . $route. '.php'
แล้วเปลี่ยนใหม่ โดยแทนที่เป็น
'model/' . ((strpos($route,'get') !== false) ? dirname($route) : $route) . '.php'
ในที่นี้เราจะใช้วิธีที่สอง ทำการแก้ไข แล้วบันทึก จากนั้นทดสอบเข้าหน้าร้านค้าของเราดู
ควรกด ctrl+F5 เพื่อให้ทำการโหลด css หรือ js ไฟล์ไหม่ ป้องกันการ cache
หากไม่เกิดข้อผิดพลาดใดๆ หน้าร้านของเราก็จะแสดงปกติ
อย่าลืมลบโฟลเดอร์ install ออกหลังจากอัพเกรดแล้ว
การจัดการในส่วนของ admin หลังจากอัพเกรดเป็นเวอร์ชั่น 2.3.0.2
ให้เราทำการล็อกอินเข้าในส่วนของ admin
เราจะพบว่าหน้า Dashboard ยังไม่มีการแสดงข้อมูลใดๆ รวมทั้งมีบางเมนูที่ขาดหายไป
ดังรูปด้านล่าง
วิธีแก้ไขให้เราเข้าไปที่เมนู
System > Users > User Groups
เข้าไปแก้ไขในส่วนของ administrator จะพบหน้าเพจดังรูป
ให้กดเลือก "เลือกทั้งหมด" ทั้งในส่วนของ
การอนุญาตเข้าถึง และ การอนุญาตแก้ไข
จากนั้นกดบันทึก
เสร็จแล้วกด ctrl+F5 สองครั่งเพื่อรีเฟรสหรืออัพเดท css และ js ไฟล์ ป้องกันการแสดงข้อมูล cache
จากนั้นกลับไปหน้า dashboard ตอนนี้ข้อมูลหน้า dashboard แสดงข้อมูลแล้วรวมทั้งเมนูด้านซ้ายที่หายไป
ในตอนแรกก็กลับมาแล้วตามรูปด้านล่าง
เท่านี้การอัพเกรด opencart จากเวอร์ชั่น 2.2.0 ไปเวอร์ชั่น 2.3.0.2 ก็สำเร็จไปส่วนหนึ่งแล้ว
สิ่งที่เปลี่ยนไปที่เห็นได้ชัดก็คือ ส่วนของ Extensions ที่มีการนำมารวมกันเป็นหมวดหมู่ ลองเปรียบเทียบ
ส่วนของ Extensions ของเวอร์ชั่น 2.2.0 กับ 2.3.0.2
opencart เวอร์ชั่น 2.2.0
opencart เวอร์ชั่น 2.3.0.2
หลังจากอัพเกรด เราจะเห็นว่าชุดภาษาไทยยังแสดงไม่สมบูรณ์สำหรับ opencart 2.3.0.2
ดังในตัวอย่างหน้า admin เมนูฝั่งซ้ายยังเป็นภาษาอังกฤษ ในขณะที่ส่วนของเนื้อหาในฝั่งขวา
เป็นภาษาไทยแล้ว ส่วนนี้ เราจะมาแนะนำวิธีแก้ไขในบทความหน้า