วิธีอัปเดต PHP ทุกแพลตฟอร์ม
แนวทางป้องกันสำหรับ Windows Server, Linux, Docker, Kubernetes, Apache, Nginx, XAMPP และ Laragon
PHP2Shell คืออะไร?
PHP2Shell เป็นชื่อเรียกช่องโหว่ด้านความปลอดภัยระดับวิกฤต ใน PHP Runtime ซึ่งเปิดเผยเมื่อวันที่ 21 ตุลาคม 2569 และเกี่ยวข้องกับช่องโหว่ 2 รายการ ได้แก่ CVE-2026-109618 และ CVE-2026-109619
ช่องโหว่ดังกล่าวอาจเปิดโอกาสให้ผู้โจมตีจากระยะไกล สามารถสั่งรันโค้ดบนเครื่องแม่ข่ายได้โดยไม่ต้องยืนยันตัวตน (Unauthenticated Remote Code Execution: RCE) รวมถึงอาจส่งผลต่อความลับและความถูกต้องของข้อมูล
เวอร์ชัน PHP ที่แก้ไขช่องโหว่แล้ว
| PHP Version | เวอร์ชันที่แก้ไขแล้ว | คำแนะนำ |
|---|---|---|
| PHP 8.5 | 8.5.12+ | ใช้สำหรับระบบที่รองรับ |
| PHP 8.4 | 8.4.27+ | แนะนำสำหรับ Production |
| PHP 8.3 | 8.3.36+ | อัปเดตทันที |
| PHP 8.2 | 8.2.35+ | อัปเดตและวางแผนย้ายรุ่น |
| PHP 8.1 หรือต่ำกว่า | ไม่มีแพตช์ปัจจุบันจาก Upstream | ย้ายไปยังรุ่นที่ยังสนับสนุน |
แนวทางอัปเดต PHP ตามสภาพแวดล้อม
1. Windows Server / IIS
สำหรับเครื่องแม่ข่าย Windows Server ที่ใช้งาน IIS และ PHP ผ่าน FastCGI
- ตรวจสอบ PHP Version และ IIS Handler Mapping
- สำรอง php.ini และ Configuration เดิม
- ดาวน์โหลด PHP Windows รุ่นที่แก้ไขแล้ว
- ติดตั้ง PHP ใน Directory ใหม่
- ปรับ FastCGI และ Handler Mapping ไปยัง PHP ใหม่
- Recycle Application Pool และทดสอบเว็บไซต์
where.exe php
php -v
Import-Module WebAdministration
Get-WebHandler | Where-Object {
$_.scriptProcessor -match "php"
}
แนะนำ PHP แบบ Non Thread Safe (NTS) สำหรับ IIS FastCGI และตรวจสอบเวอร์ชันที่เว็บไซต์ ใช้งานจริง เนื่องจากอาจแตกต่างจาก PHP CLI
2. Linux Server (Ubuntu / Debian / RHEL)
ตรวจสอบ PHP และ PHP-FPM ที่ติดตั้ง
php -v
which php
systemctl list-units --all 'php*-fpm.service'
Ubuntu / Debian ตัวอย่าง PHP 8.4
sudo apt update
apt-cache policy php8.4-fpm
sudo apt install --only-upgrade \
php8.4-cli php8.4-common php8.4-fpm
sudo systemctl restart php8.4-fpm
RHEL / Rocky Linux / AlmaLinux
sudo dnf check-update 'php*'
sudo dnf update 'php*'
sudo systemctl restart php-fpm
ควรตรวจสอบ Repository ให้มี Security Patch ที่เกี่ยวข้องก่อนดำเนินการ
3. Docker
อัปเดต PHP Base Image และ Build Container ใหม่ ไม่ควรแก้ PHP ภายใน Container ที่กำลังทำงานโดยตรง
ตัวอย่าง Dockerfile
FROM php:8.4.27-fpm
WORKDIR /var/www/html
COPY . /var/www/html
ตัวอย่างคำสั่ง
docker compose build --pull
docker compose up -d --force-recreate
docker compose ps
ตรวจสอบว่า Image Tag มีอยู่จริงและมีแพตช์แล้ว สำหรับ Production ควรใช้ Image Digest ที่ผ่านการทดสอบ
4. Kubernetes (K8s)
สำหรับ Kubernetes ต้องอัปเดต Container Image ที่ Deployment ใช้งาน และทำ Rolling Update
kubectl get deployments -A
kubectl -n production set image \
deployment/php-app \
php=registry.example.org/php-app:patched
kubectl -n production rollout status \
deployment/php-app
Image ในตัวอย่างต้องเปลี่ยนเป็น Image ที่ Build และ Push ไปยัง Registry แล้ว หากใช้งาน Helm หรือ GitOps ควรปรับไฟล์ Configuration ต้นทางให้ตรงกัน
5. Apache HTTP Server
ตรวจสอบว่า Apache ใช้งาน PHP แบบ mod_php หรือ PHP-FPM
apachectl -M | grep -Ei 'php|proxy_fcgi'
อัปเดต PHP Module หรือ PHP-FPM ตามรูปแบบที่ใช้งาน จากนั้นตรวจสอบและ Restart Service
sudo apachectl configtest
sudo systemctl restart apache2
การอัปเดต Apache เพียงอย่างเดียว ไม่สามารถทดแทนการอัปเดต PHP Runtime ได้
6. Nginx + PHP-FPM
Nginx ไม่ได้ประมวลผล PHP โดยตรง แต่ส่งคำขอไปยัง PHP-FPM จึงจำเป็นต้องอัปเดต PHP-FPM
sudo nginx -T 2>&1 | grep fastcgi_pass
sudo systemctl restart php8.4-fpm
sudo nginx -t
sudo systemctl reload nginx
ตรวจสอบ FastCGI Socket หรือ Port ให้ชี้ไปยัง PHP-FPM เวอร์ชันใหม่อย่างถูกต้อง
7. XAMPP
XAMPP เป็นชุดโปรแกรมที่รวม Apache, PHP และฐานข้อมูล ไว้ด้วยกัน การอัปเดตจึงต้องตรวจสอบความเข้ากันได้
- สำรองเว็บไซต์ ฐานข้อมูล และ Configuration
- ตรวจสอบ PHP Version ใน XAMPP
- ตรวจสอบชุด XAMPP หรือ PHP ที่มีแพตช์แล้ว
- ทดสอบการทำงานกับ Apache Modules
- ทดสอบเว็บไซต์ในสภาพแวดล้อมแยกก่อนใช้งานจริง
ไม่ควรคัดลอกเฉพาะ php.exe ไปทับเวอร์ชันเดิม โดยไม่ตรวจสอบ DLL และ PHP Extensions
8. Laragon
Laragon รองรับการเพิ่ม PHP หลายเวอร์ชัน และสามารถสลับเวอร์ชันได้จากเมนูจัดการ
- ดาวน์โหลด PHP รุ่นที่แก้ไขช่องโหว่แล้ว
- แตกไฟล์ไปยัง laragon\bin\php\
- เลือก Menu > PHP > Version
- Restart Services
- ตรวจสอบ PHP ที่เว็บไซต์ใช้งานจริง
ควรตรวจสอบ Thread Safety, PHP Extensions และความเข้ากันได้ของ Framework
Checklist หลังอัปเดต PHP
- สำรองข้อมูลและ Configuration ก่อนอัปเดต
- ตรวจสอบ PHP Runtime ของทุกเว็บไซต์
- อัปเดต PHP ให้มี Security Patch
- ตรวจสอบ PHP Extensions และ Dependencies
- Restart หรือ Redeploy Services ที่เกี่ยวข้อง
- ตรวจสอบ PHP Version ผ่านเว็บไซต์จริง
- ทดสอบ Login, Database, API และ Upload File
- ตรวจสอบ Access Log และ Error Log
- ตรวจสอบไฟล์ผิดปกติหรือ Web Shell
- บันทึกผลการอัปเดตและผู้รับผิดชอบ
สรุปคำแนะนำ
ผู้ดูแลระบบควรเร่งตรวจสอบ PHP Version โดยเฉพาะเว็บไซต์ Production ที่เปิดให้บริการผ่านอินเทอร์เน็ต และดำเนินการอัปเดต PHP Runtime เป็นเวอร์ชันที่แก้ไข CVE-2026-109618 และ CVE-2026-109619 แล้ว
ควรอัปเดตควบคู่กับการตรวจสอบความเข้ากันได้ของแอปพลิเคชัน การกำหนดสิทธิ์การเข้าถึง และการตรวจสอบความปลอดภัยของระบบ อย่างต่อเนื่อง