Tag Archive เวิร์ดเพรสส์

Byphunsanit

WordPress: ติดตั้ง php extension ให้ครบ

การติดตั้ง WordPress บน nginx ถ้ามี php อยู่แล้วโดยปกติจะสามารถใช้ php extension ที่มีติดมากับ package ของ linux server ได้เลย แต่ถ้าอยากจะให้เวิร์ดเพรสส์ทำงานได้เต็มที่ ก็ควรจะเพิ่ม php extension ตาม PHP Extensions


คู่มือติดตั้ง PHP Extensions สำหรับ WordPress บน Nginx Server

การรัน WordPress บน Nginx ให้ทำงานได้อย่างเต็มประสิทธิภาพ รวดเร็ว และปลอดภัยนั้น ไม่ได้ขึ้นอยู่กับแค่การจูน Config ของ Nginx เพียงอย่างเดียว แต่ “หัวใจ” สำคัญคือ PHP Extensions ที่ติดตั้งลงในเครื่อง Server ครับ

บทความนี้สรุปรายการ PHP Extensions ที่ จำเป็น (Required) และ แนะนำ (Recommended) ตามมาตรฐานของทีมพัฒนา WordPress พร้อมวิธีติดตั้งสำหรับสาย System Admin ที่ใช้ Nginx ครับ

  1. ทำไมต้องติดตั้งให้ครบ?
    WordPress Handbook แบ่ง Extension ออกเป็นกลุ่มๆ หากติดตั้งไม่ครบอาจเกิดปัญหาดังนี้:
    • ขาดตัว Required: เว็บจะพังทันที (เช่น เชื่อมต่อฐานข้อมูลไม่ได้)
    • ขาดตัว Recommended: ฟีเจอร์บางอย่างจะหายไป (เช่น อัปโหลดรูปแล้วภาพไม่ชัด, ตัดคำภาษาไทยผิดเพี้ยน, หรืออัปเดตปลั๊กอินไม่ได้)
  2. รายการ Extensions ที่ต้องมี (Checklist)
    • กลุ่ม A: บังคับต้องมี (Required)
      ถ้าไม่มีกลุ่มนี้ WordPress จะรันไม่ได้เลย
      • json: ใช้จัดการข้อมูล JSON (จำเป็นมากสำหรับการสื่อสารระหว่าง Server และ REST API)
      • mysqli: ใช้เชื่อมต่อฐานข้อมูล MySQL หรือ MariaDB
    • กลุ่ม B: แนะนำเป็นอย่างยิ่ง (Highly Recommended)
      เพื่อให้เว็บทำงานได้สมบูรณ์และรองรับปลั๊กอินส่วนใหญ่
      • curl: สำหรับยิง Request ไปภายนอก (เช่น การเช็ค update, การดึง feed)
      • dom / xml: จัดการ XML (ใช้ใน sitemap และ theme หลายตัว)
      • exif: อ่านข้อมูล metadata ของรูปภาพ
      • fileinfo: ตรวจสอบประเภทไฟล์ที่อัปโหลด (MIME types)
      • hash: สำหรับการเข้ารหัสและความปลอดภัย
      • imagick: (สำคัญ) ใช้จัดการรูปภาพ หากไม่มีตัวนี้ WordPress จะถอยไปใช้ GD Library ซึ่งคุณภาพรูปจะแย่กว่าและกินแรมมากกว่าในบางกรณี
      • intl: จัดการเรื่องภาษา วันที่ และสกุลเงิน (จำเป็นมากสำหรับเว็บภาษาไทยหรือ Multilingual)
      • mbstring: จัดการข้อความ UTF-8 (สำคัญที่สุดสำหรับการตัดคำภาษาไทยและชื่อไฟล์ภาษาไทย)
      • openssl: รองรับการเชื่อมต่อแบบ SSL/HTTPS
      • zip: ใช้แตกไฟล์เวลาติดตั้งหรืออัปเดต Theme/Plugin
    • กลุ่ม C: เพื่อประสิทธิภาพ (Performance & Caching)
      • opcache: ช่วย cache PHP code ที่ compile แล้ว ทำให้เว็บโหลดเร็วขึ้นมาก (ต้องเปิด!)
      • redis หรือ apcu: สำหรับทำ Object Cache (แนะนำ Redis สำหรับ Production)
  3. วิธีติดตั้งบน Nginx (Ubuntu/Debian)
    นื่องจาก Nginx มักจะทำงานร่วมกับ PHP-FPM การติดตั้ง Extension จะทำผ่าน Package Manager ของ OS (เช่น apt บน Ubuntu)
    คำสั่งติดตั้งแบบรวดเร็ว (One-liner): (ตัวอย่างสำหรับ PHP 8.1 – 8.3 ให้เปลี่ยนตัวเลขเวอร์ชันตามที่คุณใช้อยู่)
    sudo apt update
    sudo apt install php8.3-mysql php8.3-curl php8.3-xml php8.3-mbstring \
    php8.3-imagick php8.3-zip php8.3-intl php8.3-bcmath php8.3-soap \
    php8.3-gd php8.3-readline php8.3-msgpack php8.3-igbinary php8.3-redis

    Note: ในคำสั่งมีการแถม php-bcmath (สำหรับคำนวณเลขทศนิยมแม่นยำ ใชบ่อยในปลั๊กอิน WooCommerce) และ php-soap (สำหรับเชื่อมต่อ Gateway บางตัว) ซึ่งมักจำเป็นในการใช้งานจริง
  4. ข้อควรระวังสำหรับ Nginx Users
    หลังจากติดตั้ง Extension เสร็จแล้ว “อย่า Restart แค่ Nginx”
    Nginx ทำหน้าที่เป็น Proxy ส่งข้อมูลไปให้ PHP ประมวลผล ตัว Extensions ฝังอยู่ที่ PHP Process ดังนั้นคุณต้อง Restart Service ของ PHP-FPM ด้วยเพื่อให้ค่าใหม่เริ่มทำงาน
    # Restart PHP-FPM (เปลี่ยน 8.3 เป็นเวอร์ชันที่คุณใช้)
    sudo systemctl restart php8.3-fpm
    # Reload Nginx เพื่อความชัวร์ (Optional)
    sudo systemctl reload nginx
  5. วิธีตรวจสอบว่าติดตั้งสำเร็จหรือไม่
    วิธีที่ง่ายที่สุดคือการใช้คำสั่ง CLI หรือสร้างไฟล์ info.php
    ตรวจสอบผ่าน Terminal: พิมพ์คำสั่งนี้เพื่อดู Module ที่โหลดขึ้นมาทั้งหมด
    php -m
    หรือเจาะจงดูตัวที่สำคัญ เช่น Imagick:
    php -m | grep imagick
    ตรวจสอบผ่าน WordPress: ใน WordPress เวอร์ชันใหม่ๆ มีเครื่องมือตรวจสอบมาให้แล้ว ไปที่: Tools (เครื่องมือ) > Site Health (สุขภาพหน้าเว็บ) > Server (เซิร์ฟเวอร์) ในหน้านี้จะแสดงรายการ PHP Extensions ทั้งหมดที่ระบบมองเห็น หากขาดตัวไหนไป ระบบจะแจ้งเตือนทันที

อ่านเพิ่มเติม