PHP แต่ละเวอร์ชันมี support 4 ปี แบ่งเป็น active support กับ security fixes

PHP ออกเวอร์ชันใหม่ปีละครั้ง แต่ละเวอร์ชันแก้บั๊กให้ 2 ปี แก้เฉพาะช่องโหว่อีก 2 ปี แล้วจึงหมดอายุ โพสต์นี้อธิบายแต่ละช่วง เวอร์ชันที่ยังมี support ตอนนี้ และ PHP จาก Ubuntu กับ Laravel ที่นับอายุต่างออกไป

เผยแพร่
เวลาอ่าน
6 นาที
แท็ก
#PHP#Security
ในโพสต์นี้ 7 หัวข้อ
  1. PHP ออกเวอร์ชันใหม่ปีละครั้ง
  2. แต่ละเวอร์ชันได้ support 4 ปี
  3. ตอนนี้มีแค่ 8.4 กับ 8.5 ที่ยังแก้บั๊กให้
  4. นโยบายนี้เพิ่งขยายเป็น 4 ปีเมื่อปี 2567
  5. PHP ที่มากับ Ubuntu นับอายุตามรอบของ Ubuntu
  6. Laravel ก็มีรอบ support ของตัวเอง
  7. กรณีที่อาจเจอตอนวางแผนอัปเกรด

PHP ออกเวอร์ชันใหม่ปีละครั้ง

เลขเวอร์ชันของ PHP มีสามส่วน อย่าง 8.4.27 เลข 8.4 คือ branch หรือ minor version ที่ออกปีละครั้งช่วงปลายเดือนพฤศจิกายน มาพร้อมฟีเจอร์ใหม่ และอาจมีของที่ประกาศเลิกใช้ ส่วนเลขท้าย .27 คือ patch release ที่ออกตามมาเรื่อย ๆ ใน branch นั้น แก้บั๊กกับช่องโหว่โดยไม่เพิ่มฟีเจอร์

ช่วงหลัง 8.3 ออกวันที่ 23 พ.ย. 2566, 8.4 ออก 21 พ.ย. 2567 และ 8.5 ออก 20 พ.ย. 2568 ส่วน 8.6 มีกำหนดออก 19 พ.ย. 2569 อีกไม่ถึงเดือน

RFC เรื่องขั้นตอน release ที่ PHP ใช้มาตั้งแต่ปี 2553 วางกติกาไว้ว่า patch ใน branch เดียวกันต้องไม่ทำให้โค้ดเดิมพัง อัปเดตจาก 8.4.26 เป็น 8.4.27 จึงทำได้เลย ส่วนขึ้นจาก 8.3 ไป 8.4 ควรอ่าน migration guide ของเวอร์ชันนั้นก่อน อย่างของ 8.4

แต่ละเวอร์ชันได้ support 4 ปี

หน้า Supported Versions ของ php.net แบ่งอายุของแต่ละ branch เป็นสามช่วง

  • Active support สองปีแรก นับจากวันออก แก้ทั้งบั๊กทั่วไปและช่องโหว่ที่มีคนรายงาน มี patch ออกเป็นรอบปกติ
  • Security fixes อีกสองปี แก้เฉพาะช่องโหว่ร้ายแรง ออก release เมื่อมีเรื่องต้องแก้ บางช่วงอาจออกหลายตัว บางช่วงอาจไม่ออกเลย
  • End of life (EOL) หลังครบสี่ปีก็ไม่มีใครแก้อะไรให้แล้ว php.net ย้ายเวอร์ชันนั้นไปไว้ในตาราง EOL และบอกให้อัปเกรดโดยเร็ว เพราะช่องโหว่ที่เจอหลังจากนี้จะไม่มีแพตช์

ทุกช่วงจบวันที่ 31 ธ.ค. ของปี ทั้งที่เวอร์ชันออกปลายเดือนพฤศจิกายน active support จริงจึงยาวกว่าสองปีอยู่เดือนกว่า ๆ อย่าง 8.4 ที่ออก 21 พ.ย. 2567 ได้ active support ถึง 31 ธ.ค. 2569 และได้แพตช์ความปลอดภัยต่อถึง 31 ธ.ค. 2571

อายุ support ของ PHP 8.1 ถึง 8.6

เส้นประคือวันนี้ (ต.ค. 2569) ช่วงสีเขียวคือ active support ช่วงสีเหลืองคือ security fixes ส่วน 8.6 ยังไม่ออก จึงวาดตามกติกาเดียวกัน

ตอนนี้มีแค่ 8.4 กับ 8.5 ที่ยังแก้บั๊กให้

สถานะ ณ วันที่ 26 ต.ค. 2569 จากหน้า Supported Versions และตาราง EOL

เวอร์ชัน ออกเมื่อ active support ถึง security fixes ถึง ตอนนี้อยู่ช่วงไหน
8.1 25 พ.ย. 2564 25 พ.ย. 2566 31 ธ.ค. 2568 หมดอายุแล้ว ตัวสุดท้ายคือ 8.1.34
8.2 8 ธ.ค. 2565 31 ธ.ค. 2567 31 ธ.ค. 2569 security fixes เหลืออีกราวสองเดือน
8.3 23 พ.ย. 2566 31 ธ.ค. 2568 31 ธ.ค. 2570 security fixes
8.4 21 พ.ย. 2567 31 ธ.ค. 2569 31 ธ.ค. 2571 active support ปีสุดท้าย
8.5 20 พ.ย. 2568 31 ธ.ค. 2570 31 ธ.ค. 2572 active support

php.net ยังไม่ใส่ 8.6 ในตาราง ถ้าออกตามกำหนด กติกาเดียวกันจะให้ active support ถึง 31 ธ.ค. 2571 และ security fixes ถึง 31 ธ.ค. 2573

ช่วง security fixes มีผลกับเรามากกว่าที่คิด ถ้าเว็บเราอยู่บน 8.3 แล้วเจอบั๊กใน function ของ PHP ที่ไม่ใช่ช่องโหว่ ทีม PHP จะแก้ให้ใน 8.4 กับ 8.5 เท่านั้น 8.3 จะไม่ได้แพตช์นั้น ข้อยกเว้นเดียวคือบั๊กที่เกิดจากแพตช์ที่ใส่เข้าไปในช่วง 12 เดือนล่าสุด ส่วนช่องโหว่ร้ายแรง ทุกเวอร์ชันที่ยังมี support ได้แพตช์พร้อมกัน อย่างช่วง PHP2Shell ที่ 8.2 ถึง 8.5 ได้ release ใหม่ครบทั้งสี่ตัว ขณะที่ 8.1 ลงไปได้แค่ source backport ไว้ให้คนที่ build PHP เอง

นโยบายนี้เพิ่งขยายเป็น 4 ปีเมื่อปี 2567

ถ้าเคยอ่านว่า PHP แต่ละเวอร์ชันมี support 3 ปี ก็ไม่ผิด ตาม RFC ปี 2553 ตัวเดิม แต่ละเวอร์ชันได้แก้บั๊ก 2 ปี และแก้ช่องโหว่อีกแค่ 1 ปี วันหมดอายุนับจากวันออกจริง จึงขยับไปทุกปี อย่าง 7.4 หมดวันที่ 28 พ.ย. 2565 และ 8.0 หมดวันที่ 26 พ.ย. 2566

เดือนเมษายน 2567 RFC Release Cycle Update ของ Jakub Zelenka กับ Derick Rethans ผ่านโหวต 31 ต่อ 0 ให้ขยายช่วง security fixes เป็น 2 ปี และให้ทุกช่วงจบวันที่ 31 ธ.ค. ใช้กับ 8.2 ขึ้นไปทันที และให้ 8.1 ได้แพตช์ความปลอดภัยเพิ่มอีกปีด้วย 8.1 ที่เดิมจะหมดปลายปี 2567 จึงอยู่ได้ถึง 31 ธ.ค. 2568

บทความหรือคู่มือที่เขียนก่อนปี 2567 จึงอาจยังบอกว่า 3 ปี และวันหมดอายุในนั้นก็อาจเร็วกว่าของจริง ดูจากหน้า Supported Versions ของ php.net จะตรงที่สุด

PHP ที่มากับ Ubuntu นับอายุตามรอบของ Ubuntu

Ubuntu แต่ละรุ่นมาพร้อม PHP เวอร์ชันเดียว Ubuntu 22.04 มากับ 8.1 และ 24.04 มากับ 8.3 Canonical ดูแล package ใน repository main ด้วยแพตช์ความปลอดภัยตลอด standard support 5 ปีของรุ่น ซึ่ง PHP ก็อยู่ใน main

php.net หยุดดูแล 8.1 ไปตั้งแต่ 31 ธ.ค. 2568 แต่ php8.1 บน Ubuntu 22.04 ยังได้แพตช์ PHP2Shell เป็น 8.1.2-1ubuntu2.28 เมื่อ 21 ต.ค. 2569 และจะได้แพตช์ความปลอดภัยต่อไปจนจบ standard support ของ 22.04 ในเดือนพฤษภาคม 2570 ส่วน 24.04 อยู่ถึงพฤษภาคม 2572

ต่างกันอยู่สองเรื่อง

  • เลขเวอร์ชันไม่ขยับ Ubuntu backport แพตช์ลงเวอร์ชันเดิม php -v บน 22.04 จึงยังขึ้น 8.1.2 แม้จะแพตช์ล่าสุดแล้ว ต้องดูจากเลข package แทน
  • ได้เฉพาะแพตช์ความปลอดภัยที่ Canonical เลือกแก้ บั๊กทั่วไปที่ทีม PHP แก้ใน 8.1.x ช่วงหลังไม่ได้ตามมาด้วย

ส่วน PHP ที่ลงจาก PPA ของ Ondřej Surý ใช้เลขเวอร์ชันตาม php.net จึงนับอายุตามตารางของ php.net ถ้าองค์กรยังต้องรันเวอร์ชันที่หมดอายุแล้ว ทางที่มีคือซื้อบริการ LTS อย่าง Freexian ที่เล่าไว้ในโพสต์นั้น

Laravel ก็มีรอบ support ของตัวเอง

นโยบายของ Laravel แก้บั๊กให้แต่ละเวอร์ชัน 18 เดือน และแก้ช่องโหว่ 2 ปี แต่ละเวอร์ชันรองรับ PHP เป็นช่วง (รายละเอียดอยู่ในโพสต์นโยบาย support ของ Laravel)

Laravel PHP ที่รองรับ security fixes ถึง
11 8.2 ถึง 8.4 12 มี.ค. 2569 (หมดแล้ว)
12 8.2 ถึง 8.5 24 ก.พ. 2570
13 8.3 ถึง 8.5 17 มี.ค. 2571

เวลาวางแผนอัปเกรด เราจึงต้องดูทั้งสองตารางไปพร้อมกัน อย่างเว็บที่เป็น Laravel 12 บน PHP 8.2 ตัว PHP จะหมดอายุก่อน Laravel ราวสองเดือน ขยับ PHP ขึ้นเป็น 8.4 หรือ 8.5 ก่อนได้เลย เพราะ Laravel 12 รองรับอยู่แล้ว และพอจะขึ้น Laravel 13 ก็ไม่ต้องย้าย PHP อีกรอบ

กรณีที่อาจเจอตอนวางแผนอัปเกรด

  • เซิร์ฟเวอร์ยังเป็น 8.2 สิ้นปีนี้จะหมดอายุ ถ้า package ที่ใช้รองรับแล้ว ขึ้นไป 8.5 จะได้อยู่ใน active support ยาวที่สุดในบรรดาเวอร์ชันที่ออกแล้ว ส่วน 8.4 จะหมด active support สิ้นปีนี้ แต่ยังได้แพตช์ความปลอดภัยถึงปี 2571
  • Shared hosting ที่ยังให้เลือก 7.4 หรือ 8.0 ตัวเลือกใน cPanel หรือ DirectAdmin ยังอยู่ ไม่ได้แปลว่าเวอร์ชันนั้นยังมีคนแพตช์ให้ ถามผู้ให้บริการก่อนว่าได้แพตช์จากไหน หรือย้ายไปเวอร์ชันที่ยังมี support
  • Ubuntu 22.04 ที่ใช้ PHP 8.1 ของ Ubuntu ยังได้แพตช์ความปลอดภัยถึงพฤษภาคม 2570 แต่ Laravel 12 ขึ้นไปต้องใช้ 8.2 ถ้าจะใช้ Laravel เวอร์ชันที่ยังมี support ก็ต้องลง PHP ใหม่จาก PPA หรืออัปเกรด Ubuntu
  • php -v บอกแค่ PHP CLI เว็บจริงรันผ่าน PHP-FPM ซึ่งอาจเป็นคนละเวอร์ชัน วิธีเช็คตัวที่ nginx ส่ง request ไปหาอยู่ในโพสต์ PHP2Shell
  • โค้ดเก่าที่ต้องปรับตามเวอร์ชันใหม่ Rector ช่วยเขียนโค้ดใหม่ตามเวอร์ชัน PHP และ Laravel ที่จะขึ้นไปให้ได้ ส่วนเรื่องที่ Rector ไม่รู้ ดูได้จาก migration guide ของแต่ละเวอร์ชันบน php.net

อ่านต่อ

ถูกอ้างถึงใน

ล่าสุด

ดูทั้งหมด →