DriteStudioDRITESTUDIODRITESTUDIO
HomeArticlesAbout UsContact
Home
VPSHigh-performance virtual servers with full root access
VPS ForexUltra-low latency VPS optimized for Forex & automated trading
Web HostingManaged hosting with Plesk and free SSL
Game Server HostingSupports 20+ games worldwide. Rent a VPS and tell us which game you want to run.
Dedicated ServersEnterprise hardware with IPMI access
ColocationSecure data center space for your servers
SecurityWAF, DDoS Protection & 24/7 SOC Monitoring
Web DevelopmentCustom website design & development with modern frameworks
SEO ServiceBoost rankings with articles, backlinks & technical SEO
StatusCheck system uptime and service availability
ArticlesAbout UsContact
0%
วิธีใช้ PHP หลายเวอร์ชันกับ Nginx บน Ubuntu ครบทุกขั้นตอน [2026]
Back to articles

วิธีใช้ PHP หลายเวอร์ชันกับ Nginx บน Ubuntu ครบทุกขั้นตอน [2026]

วิธีใช้ PHP หลายเวอร์ชันกับ Nginx บน Ubuntu ตั้งค่า PHP-FPM pool แยกตาม site

Linux-August 28, 2023-Updated: April 15, 2026

ทำไมต้องรัน PHP หลายเวอร์ชันพร้อมกันบนเซิร์ฟเวอร์เดียว

ในการทำงานจริง เรามักมีเว็บไซต์หลายตัวบนเซิร์ฟเวอร์เดียวกัน แต่ละเว็บต้องการ PHP คนละ Version เช่น WordPress เก่าอาจต้องการ PHP 7.4 ในขณะที่ Laravel ตัวใหม่ต้องใช้ PHP 8.2 ขึ้นไป Nginx ไม่มี PHP Module ในตัวเหมือน Apache แต่ใช้ PHP-FPM (FastCGI Process Manager) แทน ข้อดีคือรัน PHP-FPM หลาย Version พร้อมกันได้

บทความนี้จะพาคุณตั้งค่า PHP หลายเวอร์ชันกับ Nginx บน Ubuntu ตั้งแต่ติดตั้งจนถึงแยก Pool สำหรับแต่ละ Site

ติดตั้ง PHP หลายเวอร์ชันบน Ubuntu

เพิ่ม PPA Repository

Ubuntu ไม่ได้มี PHP ทุก Version ใน Official Repo ต้องเพิ่ม PPA ของ Ondrej Sury

sudo apt update
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

ติดตั้ง PHP แต่ละเวอร์ชัน

sudo apt install php7.4-fpm php7.4-mysql php7.4-xml php7.4-mbstring php7.4-curl -y
sudo apt install php8.2-fpm php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl -y
sudo apt install php8.3-fpm php8.3-mysql php8.3-xml php8.3-mbstring php8.3-curl -y

เพิ่ม Extension ตามที่ Application ต้องการ เช่น php8.2-gd, php8.2-zip, php8.2-intl ตรวจสอบว่า PHP-FPM ทำงานด้วย sudo systemctl status php8.3-fpm

ตั้งค่า Nginx กับ PHP-FPM แต่ละเวอร์ชัน

Nginx ส่ง PHP Request ผ่าน FastCGI ไปยัง PHP-FPM Socket ที่กำหนดในแต่ละ Site โดย Socket อยู่ที่ /run/php/phpX.X-fpm.sock

Config สำหรับ Site ที่ใช้ PHP 7.4

server {
    listen 80;
    server_name legacy-app.example.com;
    root /var/www/legacy-app;
    index index.php index.html;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }
}

Config สำหรับ Site ที่ใช้ PHP 8.3

server {
    listen 80;
    server_name new-app.example.com;
    root /var/www/new-app;
    index index.php index.html;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}

ความแตกต่างอยู่ที่บรรทัด fastcgi_pass เท่านั้น เปลี่ยน Socket Path ตาม PHP Version

เปิด Site และ Test Config

sudo ln -s /etc/nginx/sites-available/legacy-app /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/new-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

แยก PHP-FPM Pool สำหรับ Production

สำหรับ Production ที่ต้องการแยก Resource ให้แต่ละ Site ไม่กระทบกัน สร้าง PHP-FPM Pool แยกที่ /etc/php/8.3/fpm/pool.d/new-app.conf

กำหนด user, listen socket แยก และปรับ pm.max_children ตาม Traffic ของแต่ละ Site แล้วแก้ Nginx Config ให้ชี้ไปที่ Socket ของ Pool ใหม่

ข้อดีของการแยก Pool คือจำกัด Resource ได้ แยก User เพิ่มความปลอดภัย และปรับ pm.max_children ตาม Traffic ได้อิสระ

เปลี่ยน Default PHP Version

ถ้าต้องการเปลี่ยน PHP Version สำหรับ Command Line

sudo update-alternatives --set php /usr/bin/php8.3
php -v

วิธีนี้ไม่กระทบ PHP-FPM ที่รันอยู่ เปลี่ยนแค่ CLI Version เท่านั้น

ทดสอบว่าทำงานถูกต้อง

สร้างไฟล์ phpinfo ใน Document Root ของแต่ละ Site เปิด Browser ดูว่า PHP Version ตรงกับที่ตั้งค่า อย่าลืมลบไฟล์ phpinfo หลังทดสอบเสร็จเพราะเปิดเผยข้อมูลเซิร์ฟเวอร์ที่อาจเป็นช่องโหว่

คำถามที่พบบ่อย (FAQ)

ติดตั้ง PHP หลายเวอร์ชันจะกิน RAM เยอะไหม

แต่ละ PHP-FPM Process กิน RAM ประมาณ 20-50MB ถ้ามีหลาย Version พร้อมกัน ควรปรับ pm.max_children ให้เหมาะกับ RAM ที่มี เพื่อไม่ให้ใช้ RAM เกินจน Swap

เปลี่ยน PHP Version ของ Site ที่มีอยู่แล้วทำอย่างไร

แก้ fastcgi_pass ใน Nginx Config ให้ชี้ไปที่ PHP-FPM Socket Version ใหม่ แล้ว sudo systemctl reload nginx ก่อนเปลี่ยนควรทดสอบ Application กับ PHP Version ใหม่บน Staging ก่อน

PHP-FPM Pool แบบ Static กับ Dynamic ต่างกันอย่างไร

Static จะรัน Process ตามจำนวนที่กำหนดตลอดเวลา เหมาะกับ Traffic สม่ำเสมอ Dynamic จะปรับจำนวน Process ตาม Load เหมาะกับ Traffic ที่ขึ้นลงไม่แน่นอน สำหรับส่วนใหญ่แนะนำ Dynamic

รองรับ PHP 8.4 หรือ Version ใหม่กว่าได้ไหม

ได้ เมื่อ PPA ของ Ondrej Sury อัปเดต PHP Version ใหม่ สามารถติดตั้งเพิ่มได้ทันที โดยไม่กระทบ Version เก่าที่รันอยู่

สรุป

การรัน PHP หลาย Version บน Nginx ด้วย PHP-FPM เป็นวิธีที่ยืดหยุ่นและมีประสิทธิภาพ เหมาะกับเซิร์ฟเวอร์ที่ Host หลาย Site จัดการ Pool ให้ดีและ Monitor Resource อย่างสม่ำเสมอ

สำหรับผู้ที่ต้องการเซิร์ฟเวอร์สำหรับ Host PHP Application หลายตัว VPS ของ DriteStudio ให้ Root Access เต็มรูปแบบ ติดตั้ง PHP กี่ Version ก็ได้ หรือถ้าต้องการ Managed Hosting Hosting จาก DriteStudio รองรับ PHP หลาย Version พร้อมใช้งานทันที

Share article:
View more articles
D

DriteStudio | ไดรท์สตูดิโอ

Digital infrastructure provider for VPS, web hosting, and colocation in Thailand

Operated by Craft Intertech (Thailand) Co., Ltd.

© 2026 Craft Intertech (Thailand) Co., Ltd. All rights reserved.

Privacy PolicyTerms of ServiceSystem Status