Windows — แผนแก้ไขสำหรับผู้ดูแล

1. ใช้รายงาน inventory แล้วตรวจ IIS Handler Mappings/FastCGI หรือ Apache configuration
   ให้ทราบ binary และ php.ini ที่แต่ละเว็บไซต์ใช้จริง CLI อาจคนละตัวกับเว็บ
2. เทียบ PHP version และ vendor advisory ของชุดที่ติดตั้ง เก็บหลักฐาน backport หากมี
3. สำรอง configuration, โค้ด, ฐานข้อมูล และตั้ง maintenance window
4. ดาวน์โหลดรุ่นแก้ไขจาก PHP หรือผู้จำหน่ายชุดติดตั้ง ตรวจ x64/x86,
   Thread Safety, Visual C++ runtime และ extensions ให้ตรงกับวิธีติดตั้ง
5. ติดตั้งในโฟลเดอร์ใหม่และทดสอบ staging จากนั้นเปลี่ยน handler/FastCGI path
   ตามคู่มือผู้ผลิต ตรวจทุกเว็บไซต์ที่ใช้ PHP หลายชุด
6. recycle application pool หรือเริ่ม process PHP ที่เกี่ยวข้องใหม่
7. ตรวจ runtime เว็บจริง login/session/upload/ฐานข้อมูล และ error log
8. ตรวจ NTFS ACL ให้บัญชีเว็บเขียนเฉพาะโฟลเดอร์ที่จำเป็น และปิดการรัน PHP
   ใน upload directory ตามรูปแบบเว็บเซิร์ฟเวอร์ ทดสอบก่อนใช้จริง
9. ย้อน configuration ได้เมื่อทดสอบไม่ผ่าน แต่หากกลับรุ่นที่มีความเสี่ยง
   ต้องจำกัดการเข้าถึงชั่วคราวจนมีแพตช์ที่ใช้งานได้

เครื่องมือแพ็กนี้ไม่เปลี่ยน IIS, ACL, PHP binaries หรือรีสตาร์ต Windows ให้อัตโนมัติ
อ้างอิง: https://www.php.net/manual/en/install.windows.php

Docker/Compose — แผนแก้ไขที่ image

1. ตรวจ inventory ของ container ที่เลือก บันทึก image reference และ image ID
   ตรวจ Dockerfile/Compose และ volumes เพื่อทราบว่า INI/code มาจากไหน
2. เปลี่ยน base image หรือ package ที่ติดตั้งใน Dockerfile เป็นรุ่นแก้ไขที่รองรับ
   ถ้า pin digest ต้องเปลี่ยน digest ด้วย การ --pull อย่างเดียวไม่เปลี่ยน digest ที่ pin
3. ใส่ configuration ใน source หรือระบบจัดการ config ที่ใช้งานอยู่
   การแก้ไฟล์เฉพาะใน container จะหายเมื่อสร้างใหม่
4. Build และทดสอบ image ใหม่ ตัวอย่างที่ต้องแทนชื่อ image/tag:
     docker build --pull -t myapp:patched-test .
     docker run --rm --entrypoint php myapp:patched-test -v
   ตัวอย่างนี้ใช้ได้เมื่อ executable ชื่อ php; ตรวจ effective runtime ด้วยอีกครั้ง
5. ทดสอบแอปบน staging พร้อม extensions และ volumes จริงที่เหมาะสม
6. เปลี่ยน image ใน Compose แล้ว deploy service ที่เกี่ยวข้องในช่วงบำรุงรักษา
   ตรวจ healthcheck และทุก replica อย่าลบ volume ฐานข้อมูลระหว่าง deploy
7. ใช้ Guard ตรวจ container ใหม่และตรวจเว็บไซต์จริง บันทึก digest ที่ deploy
8. ประเมิน non-root, read-only root filesystem, dropped capabilities,
   no-new-privileges และจำกัด writable volumes โดยทดสอบความเข้ากันได้
9. เก็บ image/config รุ่นก่อนสำหรับ rollback แต่ไม่ถือว่า rollback ไป PHP เก่าแก้ความเสี่ยงแล้ว

Kubernetes: ขั้นตอนเดียวกันที่ build pipeline จากนั้นแก้ Deployment image
ติดตาม rollout/readiness ให้ทุก replica เปลี่ยนครบ; Guard รุ่นนี้ยังไม่มี Kubernetes adapter
อย่าส่ง environment variables/secrets หรือ full docker inspect ไปเว็บรายงานสาธารณะ
อ้างอิง: https://docs.docker.com/build/building/best-practices/
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
