อัปเกรด PHP เว็บไซต์แบรนด์เอง: ตรวจสอบความเข้ากันได้ ติดตั้งส่วนขยาย และเพิ่มประสิทธิภาพ
1. ทำไมเวอร์ชัน PHP ถึงส่งผลต่อประสิทธิภาพเว็บไซต์แบรนด์เอง
WordPress เขียนด้วย PHP ทุกคำขอหน้าเว็บต้องรันตัวแปล PHP ก่อน เพื่อแปลงโค้ดเป็นคำสั่งที่เครื่องเข้าใจ ยิ่งเวอร์ชัน PHP ใหม่ ยิ่งแปลเร็ว PHP 8.x ได้รับการปรับแต่งระดับล่างจำนวนมากเมื่อเทียบกับ 7.4 ทั้งการปรับปรุง OPcache การคอมไพล์ JIT และการจัดการหน่วยความจำ โค้ดเดิมบน 8.2 จึงทำงานเร็วกว่า 7.4 ราว 2 เท่า
ประสิทธิภาพที่เพิ่มขึ้นนี้รู้สึกได้ทันทีกับเว็บไซต์แบรนด์เอง เว็บที่มี LCP 3.5 วินาทีบน PHP 7.4 เมื่ออัปเกรดเป็น 8.2 และเปิด OPcache แล้ว LCP จะลดลงเหลือราว 2 วินาที Core Web Vitals เปลี่ยนจากแดงเป็นเขียวทันที ไม่ต้องแก้ธีม ไม่ต้องเปลี่ยนปลั๊กอิน ไม่ต้องเพิ่มแคช แค่เปลี่ยนเวอร์ชัน PHP ก็ได้ผลแบบนี้ นี่คือเหตุผลที่ทีมดูแลระบบแนะนำให้อัปเกรด PHP อย่างน้อยทุกสองปี
| เวอร์ชัน PHP | วันที่เปิดตัว | สิ้นสุดการสนับสนุนด้านความปลอดภัย | ประสิทธิภาพเทียบกับ 7.4 | คำแนะนำสำหรับเว็บไซต์แบรนด์เอง |
|---|---|---|---|---|
| PHP 5.6 และต่ำกว่า | ก่อนปี 2014 | หยุดไปนานแล้ว | ต่ำกว่าค่ามาตรฐาน | ห้ามใช้เด็ดขาด |
| PHP 7.0 ถึง 7.3 | 2015 ถึง 2018 | หยุดแล้ว | ราว 0.8 เท่า | อัปเกรดโดยเร็ว |
| PHP 7.4 | ปี 2019 | หยุดปี 2022 | มาตรฐาน 1.0 | เวอร์ชันเปลี่ยนผ่าน รีบอัปเกรด |
| PHP 8.0 | ปี 2020 | หยุดปี 2023 | ราว 1.5 เท่า | ใช้ได้แต่ไม่แนะนำให้ใช้ระยะยาว |
| PHP 8.1 | ปี 2021 | ปลายปี 2025 | ราว 1.8 เท่า | แนะนำ เสถียร |
| PHP 8.2 | ปี 2022 | ปลายปี 2026 | ราว 2.0 เท่า | แนะนำ เป็นเวอร์ชันเสถียรล่าสุด |
很多独立站还跑在PHP 7.4甚至7.3上,原因是”一直跑得好好的,不敢动”。但7.4从2022年11月起就没有安全补丁了,这意味着发现新漏洞也没人修。对出海站来说,跑在无安全更新的PHP版本上,被黑的风险随时间递增。网站被黑后的清理流程见 การจัดการหลังเว็บไซต์ถูกแฮ็ก ส่วนการเสริมความปลอดภัยและการสำรองข้อมูลดูที่การสำรองและกู้คืนเว็บไซต์。
สอง การตรวจสอบความเข้ากันได้: สามสิ่งที่ต้องทำก่อนอัปเกรด
ความเสี่ยงที่ใหญ่ที่สุดของการอัปเกรด PHP ไม่ใช่เรื่องประสิทธิภาพ แต่คือความเข้ากันได้ PHP 8.x มีการเปลี่ยนแปลงเชิงทำลายในไวยากรณ์ เช่น ยกเลิกฟังก์ชันเก่าบางตัว เปลี่ยนความเข้มงวดของชนิดข้อมูล และพฤติกรรมเดิมบางอย่างเปลี่ยนไป ถ้าธีมหรือปลั๊กอินของคุณใช้รูปแบบที่ถูกยกเลิกเหล่านี้ หลังอัปเกรดเว็บไซต์จะจอขาวทันที แม้แต่หลังบ้านก็เข้าไม่ได้
ก่อนอัปเกรดต้องทำสามอย่าง หนึ่ง อัปเดตปลั๊กอินและธีมทั้งหมดเป็นเวอร์ชันล่าสุด เพราะเวอร์ชันเก่ามักไม่เข้ากันกับ PHP ใหม่ ส่วนเวอร์ชันใหม่มักแก้ไขแล้ว สอง ใช้ปลั๊กอินอย่าง PHP Compatibility Checker สแกนโค้ดทั้งเว็บไซต์ ดูว่าไฟล์ไหนใช้รูปแบบที่ไม่เข้ากัน สาม สลับเวอร์ชัน PHP ในสภาพแวดล้อม staging แล้วทดสอบฟังก์ชันหลักทั้งหมด
| รายการตรวจสอบ | วิธีตรวจสอบ | เกณฑ์ผ่าน | ไม่ผ่านการจัดการ |
|---|---|---|---|
| ความเข้ากันได้ของปลั๊กอิน | สแกนด้วย PHP Compatibility Checker | ปลั๊กอินทั้งหมดไม่มีข้อผิดพลาดร้ายแรง | หาปลั๊กอินทดแทนหรือติดต่อผู้พัฒนา |
| ความเข้ากันได้ของธีม | เหมือนข้างต้น สแกนโฟลเดอร์ธีม | ธีมไม่มีการเรียกใช้ฟังก์ชันที่ถูกยกเลิก | เปลี่ยนธีมหรือรอผู้พัฒนาอัปเดต |
| เวอร์ชัน WordPress หลัก | ดูเวอร์ชัน WP ในหลังบ้าน | WP 6.0 ขึ้นไปเท่านั้นที่รองรับ PHP 8.2 | อัปเกรด WP หลักก่อน |
| ส่วนขยายฐานข้อมูล | ดูใน phpinfo ว่า mysqli มีอยู่หรือไม่ | mysqli เปิดใช้งานแล้ว | ติดตั้งส่วนขยาย mysqli |
| โค้ดที่เขียนเอง | สแกนธีมลูกและปลั๊กอินที่เขียนเอง | ไม่มีฟังก์ชันที่ถูกยกเลิก | แก้โค้ดด้วยตนเอง |
场景示例:一个B2B站用了一个2019年的老表单插件,这个插件在PHP 8.1上会报错。升级前用Compatibility Checker一扫描,发现这个插件用了mysql_*系列函数(PHP 7.0就废弃了)。这时候不要硬升PHP版本,先找一个替代表单插件(如WPForms或Fluent Forms),把表单迁移过去,再升PHP。环形山在出海站上对插件兼容性的处理见 环形山技术栈与四个自研插件。
ข้อสังเกตที่ขัดกับสัญชาตญาณ: คำเตือนความเข้ากันได้ของ PHP ที่แสดงใน “สุขภาพไซต์” ของหลังบ้าน WordPress มักไม่แม่นยำ เพราะมันตรวจสอบเฉพาะเวอร์ชันปลั๊กอินที่ติดตั้งอยู่ในปัจจุบัน ถ้าปลั๊กอินตัวไหนคุณติดตั้งเวอร์ชันล่าสุดแต่ผู้พัฒนาไม่ได้อัปเดตการทดสอบความเข้ากันได้ หลังบ้านก็ยังแจ้งว่าเข้ากันได้ วิธีที่ถูกต้องคือใช้เครื่องมือสแกนรันเอง แล้วทดสอบจริงในสภาพแวดล้อม staging อีกครั้ง อย่าเชื่อคำเตือนในหลังบ้านเพียงอย่างเดียว
สาม การเลือกเวอร์ชัน PHP: 8.1 หรือ 8.2
จะอัปเกรดเป็นเวอร์ชันไหน ต้องดูสองปัจจัย คือ การสนับสนุนด้านความปลอดภัยเหลืออีกนานแค่ไหน และความเข้ากันได้ของระบบนิเวศปลั๊กอินของคุณ PHP 8.1 ได้รับการสนับสนุนด้านความปลอดภัยถึงสิ้นปี 2025 ส่วน PHP 8.2 ถึงสิ้นปี 2026 สำหรับเว็บไซต์อิสระส่วนใหญ่ 8.2 เป็นตัวเลือกที่มั่นคงกว่า เพราะประสิทธิภาพดีที่สุดและได้รับการสนับสนุนด้านความปลอดภัยนานที่สุด แต่ถ้าปลั๊กอินสำคัญตัวใดตัวหนึ่งของคุณระบุชัดว่ารองรับถึงแค่ 8.1 ก็ให้อัปเกรดเป็น 8.1 ก่อน รอปลั๊กอินอัปเดตแล้วค่อยอัปเกรดเป็น 8.2
อย่าข้ามเวอร์ชันอัปเกรด จาก 7.4 กระโดดไป 8.2 เลยข้ามไปสองเวอร์ชันใหญ่ ฟังก์ชันที่เลิกใช้และการเปลี่ยนแปลงไวยากรณ์สะสมกัน โอกาสเกิดปัญหาสูงกว่าการอัปทีละเวอร์ชันมาก เส้นทางที่ถูกต้องคือ 7.4→8.0→8.1→8.2 อัปทีละเวอร์ชันแล้วทดสอบบน staging ให้แน่ใจว่าไม่มีปัญหาก่อนอัปเวอร์ชันถัดไป
| สถานการณ์ | เวอร์ชันที่แนะนำ | เหตุผล | ข้อควรระวัง |
|---|---|---|---|
| เว็บใหม่เพิ่งสร้าง | PHP 8.2 | เวอร์ชันเสถียรล่าสุด ประสิทธิภาพดีที่สุด | ตรวจสอบว่าปลั๊กอินทั้งหมดรองรับ 8.2 |
| เว็บเก่ารันบน 7.4 | อัป 8.1 ก่อน แล้วค่อย 8.2 | อัปทีละเวอร์ชัน ลดความเสี่ยง | ทดสอบบน staging ทุกเวอร์ชัน |
| ระบบนิเวศปลั๊กอินเก่า | PHP 8.0 หรือ 8.1 | เข้ากันได้ดีกว่า | รอปลั๊กอินอัปเดตก่อนแล้วค่อยอัป |
| เว็บอีคอมเมิร์ซ | PHP 8.1 | ระบบนิเวศสมบูรณ์ที่สุด | 8.2 ปลั๊กอินรับชำระเงินบางตัวยังไม่รองรับ |
| เว็บบล็อกล้วน | PHP 8.2 | ปลั๊กอินน้อย เข้ากันได้ดี | อัปเป็น 8.2 ได้เลย |
ตัวอย่างสถานการณ์: เว็บคอนเทนต์ที่มีปลั๊กอินแค่ 5 ตัว (Yoast, WP Rocket, WPForms, UpdraftPlus, Wordfence) ปลั๊กอินหลักเหล่านี้รองรับ PHP 8.2 ทั้งหมด กรณีนี้ให้อัปเป็น 8.2 บน staging แล้วทดสอบ ถ้าไม่มีปัญหาก็ขึ้นโปรดักชันได้เลย แต่ถ้าเป็นเว็บที่ใช้ WooCommerce บวกปลั๊กอินอีคอมเมิร์ซอีกสิบกว่าตัว แนะนำให้หยุดที่ 8.1 ก่อน เพราะตอน 8.2 ออกใหม่ๆ ปลั๊กอินรับชำระเงินและขนส่งหลายตัวยังไม่รองรับ
สี่、การติดตั้งส่วนขยาย: OPcache และส่วนขยายที่จำเป็น
อัปเวอร์ชัน PHP แล้วแต่ไม่ได้ติดตั้ง OPcache จะได้ประโยชน์ด้านประสิทธิภาพแค่ครึ่งเดียว OPcache เก็บ bytecode ที่ PHP คอมไพล์แล้วไว้ในหน่วยความจำ ครั้งต่อไปที่เรียกโค้ดเดิมก็อ่านจากหน่วยความจำได้เลย ไม่ต้องคอมไพล์ใหม่ หลังเปิด OPcache เวลาทำงานของ PHP ลดลงได้มากกว่า 50% ซึ่งมากกว่าการอัปจาก 7.4 เป็น 8.0 เสียอีก
นอกจาก OPcache แล้ว เว็บอิสระยังต้องมีส่วนขยายพื้นฐานอีกหลายตัว: mysqli (เชื่อมต่อฐานข้อมูล WordPress จำเป็นต้องใช้), gd หรือ imagick (ประมวลผลรูปภาพ คลังสื่อต้องใช้), intl (หลายภาษาและการแปลเป็นท้องถิ่น), mbstring (จัดการสตริงหลายไบต์ เว็บภาษาจีนต้องใช้) ส่วนขยายเหล่านี้โฮสต์ส่วนใหญ่ติดตั้งมาให้แล้ว แต่บนโฮสต์แบบแชร์อาจต้องเปิดเอง
| ส่วนขยาย | หน้าที่ | จำเป็นหรือไม่ | คำแนะนำการตั้งค่า |
|---|---|---|---|
| OPcache | แคช bytecode ของ PHP | จำเป็น ประสิทธิภาพเพิ่มเป็นสองเท่า | memory=256MB, revalidate_freq=60 |
| mysqli | เชื่อมต่อฐานข้อมูล MySQL | จำเป็น WP core ต้องใช้ | ค่าเริ่มต้นได้เลย |
| gd/imagick | ประมวลผลรูปภาพ | คลังสื่อจำเป็นต้องใช้ | imagick เร็วกว่า gd |
| intl | การแปลเป็นท้องถิ่นและหลายภาษา | เว็บหลายภาษาจำเป็น | ค่าเริ่มต้นได้เลย |
| mbstring | สตริงหลายไบต์ | เว็บภาษาจีนจำเป็นต้องใช้ | ค่าเริ่มต้นได้เลย |
| curl | คำขอ HTTP ภายนอก | จำเป็น REST API ต้องใช้ | ค่าเริ่มต้นได้เลย |
| xml | การแยกวิเคราะห์ XML | จำเป็น RSS และ sitemap | ค่าเริ่มต้นได้เลย |
จุดสำคัญในการตั้งค่า OPcache: ตั้ง opcache.memory_consumption เป็น 256 (MB) ตั้ง opcache.revalidate_freq เป็น 60 (วินาที) หมายความว่าหลังโค้ดเปลี่ยน 60 วินาทีจะตรวจสอบใหม่หนึ่งครั้ง ถ้าเป็นสภาพแวดล้อมสำหรับพัฒนา ตั้ง revalidate_freq เป็น 0 คอมไพล์ใหม่ทุกคำขอ ส่วนโปรดักชันตั้ง 60 วินาที เพื่อสมดุลระหว่างประสิทธิภาพและความทันสมัยของการอัปเดต ส่วน memory_limit ของ PHP แนะนำตั้งไว้ที่ 256M ขึ้นไป เว็บที่ติดตั้งปลั๊กอินเยอะตั้ง 512M
OPcache กับ page cache เป็นคนละชั้น อย่าเอามาปนกัน page cache เซฟ HTML เป็นไฟล์ ส่วน OPcache เก็บ PHP bytecode ไว้ในหน่วยความจำ ต้องใช้ทั้งสองชั้นร่วมกันถึงจะกด LCP ให้ต่ำสุดได้ ดูการตั้งค่าแยกชั้นแคชได้ที่กลยุทธ์แคช 3 ชั้นสำหรับเว็บไซต์แบรนด์ ส่วนเกณฑ์วัดประสิทธิภาพที่ต้องผ่านดูได้ที่การปรับแต่ง Core Web Vitals。
ห้า ขั้นตอนอัปเกรดและแผนย้อนกลับ
การอัปเกรด PHP บนเซิร์ฟเวอร์จริงต้องเลือกช่วงคนเข้าน้อย (ตี 2 ถึงตี 4 ตามเวลาไทย) และเตรียมแผนย้อนกลับไว้ล่วงหน้า ถ้าระหว่างอัปเกรดมีปัญหา ต้องสลับกลับเวอร์ชันเดิมได้ภายใน 5 นาที ห้ามอัปเกรดตอนกลางวัน เพราะถ้าพลาดจะกระทบคนเข้าเว็บและออร์เดอร์ที่เข้ามา
| ขั้นตอน | การดำเนินการ | เวลา | วิธีย้อนกลับ |
|---|---|---|---|
| 1. สำรองข้อมูลทั้งเว็บ | สำรองไฟล์และฐานข้อมูลแบบเต็ม | 10 ถึง 30 นาที | เก็บไฟล์สำรองไว้อย่างน้อย 7 วัน |
| 2. เลือกช่วงคนเข้าน้อย | ตี 2 ถึงตี 4 ตามเวลาไทย | —— | ดูจาก access log เพื่อยืนยัน |
| 3. สลับเวอร์ชัน PHP | สลับผ่านแผงควบคุมโฮสต์หรือ SSH | 1 ถึง 5 นาที | สลับกลับเวอร์ชันเดิมได้ในคลิกเดียว |
| 4. ทดสอบเส้นทางหลัก | หน้าแรก หน้าสินค้า การส่งฟอร์ม | 10 นาที | ถ้าจอขาวให้สลับกลับเวอร์ชันเดิมทันที |
| 5. เฝ้าดู 30 นาที | ดู error log และปริมาณคนเข้า | 30 นาที | เจอ error ให้ย้อนกลับทันที |
| 6. ล้าง OPcache | รีสตาร์ท PHP-FPM หรือเว็บเซิร์ฟเวอร์ | 1 นาที | —— |
ตัวอย่างสถานการณ์จริง: คุณสลับ PHP จาก 7.4 เป็น 8.1 ในแผงควบคุมอย่าง BaoTa หรือ cPanel แล้วรีเฟรชหน้าแรกเจอจอขาว อย่าตกใจ สิ่งแรกที่ต้องทำคือสลับกลับไป 7.4 แผงควบคุมโฮสต์ส่วนใหญ่สลับเวอร์ชัน PHP แค่คลิกเดียว 10 วินาทีก็กลับแล้ว จากนั้นดู error log ว่า plugin ตัวไหนแจ้ง error แก้ให้เรียบร้อยแล้วค่อยลองใหม่ อย่าลองซ้ำๆ ตอนจอขาว เพราะคนเข้าเว็บจะเจอหน้า error ค้างอยู่
หลังอัปเกรดต้องเฝ้าดูหนึ่งสัปดาห์ ดูสองตัวชี้วัด: ใน error log มี PHP Fatal Error โผล่มาไหม และคะแนน Lighthouse ดีขึ้นไหม ถ้า error log สะอาด และ LCP ลดจาก 3.5 วินาทีเหลือไม่เกิน 2 วินาที แปลว่าอัปเกรดสำเร็จ ถ้ามี PHP warning ใหม่โผล่มา ให้ดูก่อนว่าเป็น deprecated จาก plugin ตัวไหน พวกนี้ไม่กระทบการทำงานแต่ต้องจดไว้ แล้วจัดการตอนอัปเดต plugin ครั้งถัดไป ในการดูแลประจำวัน การเช็กเวอร์ชัน PHP เป็นรายการที่ต้องทำทุกครั้ง ดูได้ที่งาน 6 อย่างที่ต้องทำทุกเดือนในช่วงดูแลเว็บไซต์ ส่วนการมอนิเตอร์และแจ้งเตือนดูได้ที่การมอนิเตอร์และแจ้งเตือนเว็บไซต์。
FAQ คำถามที่พบบ่อย
เว็บไซต์แบรนด์บน WordPress ควรใช้ PHP เวอร์ชันไหน?
อัปเกรด PHP แล้วเว็บจอขาว ทำยังไงดี?
OPcache คืออะไร จำเป็นต้องเปิดไหม
อัปเกรด PHP ข้ามเวอร์ชันได้ไหม
ก่อนอัปเกรด PHP ต้องสำรองข้อมูลไหม
หลังอัปเกรด PHP แล้ว LCP ไม่เปลี่ยน ถือว่าปกติไหม
ทิ้งท้าย
เรื่องการอัปเกรดเวอร์ชัน PHP อุปสรรคที่ใหญ่ที่สุดไม่ใช่เทคนิค แต่เป็นความกลัวที่จะ “ไม่กล้าแตะ” ในใจ หลายทีมรันเว็บบน 7.4 มาแล้วสามปี “ก็รันดีมาตลอด” จนกระทั่งมีครั้งหนึ่งที่อัปเดตปลั๊กอินแล้วหน้าจอขาว หรือถูกแฮกถึงนึกได้ว่าต้องอัปเกรด PHP จริง ๆ แล้วการอัปเกรด PHP เป็นการปรับประสิทธิภาพที่ลงทุนน้อยที่สุดและได้ผลตอบแทนมากที่สุดในบรรดาทั้งหมด ไม่ต้องแก้โค้ดธุรกิจ แค่คลิกสลับเวอร์ชันในแผงควบคุมโฮสติ้ง แล้วใช้เวลาอีกหนึ่งชั่วโมงทดสอบฟังก์ชันหลักหนึ่งรอบ
อัปเกรด PHP แบบ 3 สเต็ป: สเต็ปแรก สำรองข้อมูลทั้งเว็บและฐานข้อมูล แล้วใช้ Compatibility Checker สแกนหาความเข้ากันได้ของปลั๊กอินและธีม; สเต็ปที่สอง อัปเกรดทีละเวอร์ชันใน staging (7.4 → 8.0 → 8.1 → 8.2) ทดสอบเส้นทางหลักของเว็บทุกครั้งหลังอัปเกรด; สเต็ปที่สาม ดีพลอยขึ้นโปรดักชันช่วงคนเข้าน้อย เฝ้าดู 30 นาที ถ้ามีปัญหาให้ย้อนกลับทันที ทำครบสามสเต็ปนี้ เว็บของคุณจะเร็วขึ้นเท่าตัว และยังได้แพตช์ความปลอดภัยครบด้วย
จำง่ายๆ ประโยคเดียว: การอัปเกรด PHP คือการลงทุนด้านประสิทธิภาพที่คุ้มที่สุดสำหรับเว็บไซต์ของตัวเอง — จาก 7.4 ขึ้นเป็น 8.2 เร็วขึ้น 2 เท่า แต่มีข้อแม้ว่าต้องทดสอบความเข้ากันได้ให้ครบก่อน ปลั๊กอินเก่าตัวเดียวก็ทำให้จอขาวได้
