#Apache

ส่งไฟล์ขึ้นโฮสต์แล้วทับกันเงียบๆ สามกับดักตอนคัดลอกไฟล์
ส่งไฟล์สองตัวที่ชื่อซ้ำกันขึ้นโฮสต์พร้อมกัน ตัวหลังทับตัวแรกเงียบๆ ไม่มี error ไม่มี exit code ผิด เว็บยังตอบ 200 ทุกหน้า แค่หน้าภาษาอังกฤษกลายเป็นหน้าภาษาไทย นี่คือสามกับดักที่ทำให้การคัดลอกไฟล์เสียหายโดยไม่มีอะไรเตือน

Build APM บน Windows: สารบัญ ทำ Apache + PHP 8.4 + MariaDB เอง
ซีรีส์ 7 ตอนพาคอมไพล์ Apache 2.4.69, PHP 8.4.27 และ MariaDB 11.8.9 บน Windows 11 จาก source เอง ให้เวลาที่ PHP ออกแพตช์ความปลอดภัย แก้เลขเวอร์ชันในไฟล์เดียวแล้ว build ใหม่ได้ภายในวัน หน้านี้คือสารบัญ ภาพรวม เวลา ดิสก์ และทางลัดสามคำสั่ง

Build APM บน Windows ตอนที่ 7: Deploy รัน และอัปเดต security patch
ตอนจบของซีรีส์ build Apache + PHP + MariaDB บน Windows ติดตั้งลง C:\APM สตาร์ตครั้งแรกและทดสอบ เปิดให้เครื่องใน LAN เข้าแบบปลอดภัย เล่าบั๊กจริงหกตัว (PidFile, plugin MariaDB, พอร์ต DB, ASLR 500, พาธมีช่องว่างและวงเล็บ) และขั้นตอนอัปเดตเวลามี security release ใหม่

Build APM บน Windows ตอนที่ 6: build PHP 8.4 พร้อม redis imagick
ตอนที่ 6 ของซีรีส์ build Apache + PHP + MariaDB บน Windows จาก source พาไล่ 30-php.ps1 ทีละขั้น ตั้งแต่ php-sdk คำสั่ง configure ทั้งเส้น การคัดลอก DLL จนถึงทดสอบ JIT, redis และ imagick ว่าใช้ได้จริง

Build APM บน Windows ตอนที่ 3: build Apache httpd 2.4.69 ด้วย CMake
build APR, APR-util, httpd 2.4.69 และ mod_fcgid ด้วย CMake กับ Ninja บน Windows อธิบายทุก option ว่าใส่ทำไม ไล่ DLL ที่ต้องวางข้าง httpd.exe ด้วย dumpbin ดักไม่ให้ลิงก์ DLL ตัว debug แล้วทดสอบ config ด้วย httpd -t

Build APM บน Windows ตอนที่ 2: ดึง source และ lib ด้วย vcpkg
ขั้นที่ 1 และ 2 ของการ build Apache เองบน Windows อ่านสคริปต์ 00-fetch.ps1 กับ 10-deps-vcpkg.ps1 ทีละบรรทัด ตรวจ sha256 ของ source ทุกตัว แล้วให้ vcpkg build OpenSSL 3.5 LTS กับ lib อีก 8 ตัวจาก source พร้อมคำสั่งตรวจผลทุกขั้น

Build APM บน Windows ตอนที่ 1: เตรียมเครื่องมือและแตก build kit
ตอนแรกของซีรีส์ build Apache + PHP 8.4 + MariaDB เองบน Windows ติดตั้ง Visual Studio 2022 Build Tools พร้อม component ที่จำเป็น Git CMake Ninja PowerShell 7 ตั้ง Defender แตก build kit ลง C:\apm-build แล้วไล่ดูโฟลเดอร์ versions.json และสคริปต์ lib.ps1 กับ build-all.ps1 ทีละบรรทัด

PHP มีช่องโหว่ RCE ระดับวิกฤตสองตัว (php2shell) อัปเดตด่วนวันนี้
CVE-2026-109618 กับ CVE-2026-109619 เป็นช่องโหว่ RCE ของ PHP ที่ CVSS 9.2 มี exploit สาธารณะแล้ว กระทบทุกเครื่องที่ใช้ PHP รับ request เว็บ รุ่นที่แก้แล้วคือ 8.5.12, 8.4.27, 8.3.36, 8.2.35 บันทึกนี้รวมวิธีเช็กเวอร์ชัน วิธีอัปเดตทั้ง Debian, RHEL, DirectAdmin, Docker และ Windows กับค่าชั่วคราวระหว่างรอแพตช์

เว็บสองภาษา 26 หน้า ทำไมต้องกลายเป็น .php แล้วลิงก์พังทั้งเว็บ
หน้าโปรดักชันโชว์แท็ก PHP เป็นตัวหนังสือดิบ เพราะเว็บเซิร์ฟเวอร์เสิร์ฟ .html เป็นไฟล์ static พอเปลี่ยนทั้ง 26 หน้าเป็น .php ลิงก์ก็พังทั้งเว็บ แล้วพอทำ clean URL ต่อหน้าย่อยก็เด้งกลับเป็น .php เพราะ rewrite กับ 301 ทำครึ่งเดียว บทความนี้คือ .htaccess เต็ม กติกา $base แปดกรณี และสคริปต์ที่ทำทีเดียวทั้งเว็บ

route:cache แล้วทุก GET กลายเป็น 405 — กับดักแอปใต้ sub-path
deploy เสร็จ กด optimize ตามคู่มือ แล้วทุกหน้าตอบ 405 Method Not Allowed ทั้งที่ route:list ยืนยันว่า route ถูกต้อง — เรื่องของ route cache ที่พังเฉพาะบางเครื่อง วิธีแยกให้ขาดใน 30 วินาที และของแถมอีกสามอย่างที่เจอพร้อมกันตอนเอาแอปไปวางใต้ sub-path

โฮสต์ static บน DirectAdmin แล้ว GET ได้ 404 แต่ HEAD ได้ 200
อัปเว็บ static ขึ้น public_html แล้วเปิดไม่ได้ ไฟล์เล็กออกปกติ ไฟล์ใหญ่ 404 แต่ยิง HEAD กลับได้ 200 ทุกไฟล์ ต้นเหตุคือ .htaccess ของ Laravel ที่นั่งอยู่ที่ docroot ดูดทุกอย่างเข้า front controller บทความนี้เล่าทั้งการวินิจฉัยและทางออกสามทาง

มี backup ครบทุกไฟล์ แต่สร้างเครื่องใหม่ไม่ได้
dump ฐานข้อมูลครบ tar โค้ดครบ ไฟล์ความลับครบ แต่พอเอาไปวางบนเครื่องเปล่าแล้วเว็บไม่ขึ้น เพราะของที่ทำให้เครื่องทำงานได้จริงไม่เคยอยู่ในไฟล์ backup เลย บทความนี้คือรายการของที่หายไปกับเครื่อง และลำดับกู้ที่ผมเขียนไว้ให้ตัวเองในอนาคต