คู่มือการจัดการเวอร์ชัน PHP ใน ServBay: ตั้งค่าบน CLI และเว็บไซต์อย่างมืออาชีพ
ServBay คือเครื่องมือสภาพแวดล้อมการพัฒนาเว็บบนเครื่อง (Local Web Development Environment) อันทรงพลังที่ออกแบบมาสำหรับ macOS โดยเฉพาะ รองรับหลายภาษาและฐานข้อมูล ในบทความนี้เราจะเจาะลึกวิธีบริหารจัดการเวอร์ชัน PHP หลายชุดสำหรับแต่ละโปรเจกต์ใน ServBay ไม่ว่าจะเป็นการใช้งานผ่านบรรทัดคำสั่ง (CLI) หรือให้บริการเว็บไซต์แต่ละแห่ง การเข้าใจกลไกการจัดการเวอร์ชัน PHP ของ ServBay จะช่วยให้คุณยกระดับประสิทธิภาพการพัฒนา แยกสภาพแวดล้อมโครงการอย่างมีเสถียรภาพและปลอดภัย
1. จัดการเวอร์ชัน PHP ใน CLI ระดับโปรเจกต์ด้วย .servbay.config
เพียงสร้างไฟล์ .servbay.config
ที่โฟลเดอร์หลักของโปรเจกต์ นักพัฒนากำหนดเวอร์ชัน PHP ที่ใช้ในแต่ละโปรเจกต์ผ่านคำสั่งบรรทัดได้ทันที ServBay จะปรับสภาพแวดล้อม php ในเทอร์มินัลตามตำแหน่งโฟลเดอร์ที่คุณทำงานอัตโนมัติ แยกแต่ละโครงการได้อย่างมั่นใจโดยเวอร์ชัน PHP ของแต่ละโปรเจกต์ไม่ชนกัน
1.1 หน้าที่และหลักการของ .servbay.config
- ควบคุมเวอร์ชันระดับโปรเจกต์: ServBay รองรับการติดตั้งและใช้งาน PHP หลายเวอร์ชันพร้อมกัน ตั้งแต่ 5.6 จนถึงรุ่นใหม่ล่าสุด หรือตัวทดสอบ โดยกำหนดใน
.servbay.config
คุณสามารถเลือกเวอร์ชันที่เหมาะสมสำหรับแต่ละโปรเจกต์ได้อย่างแม่นยำ - สลับเวอร์ชันแบบไร้รอยต่อ: เมื่อเข้าสู่โฟลเดอร์ที่มีไฟล์
.servbay.config
ผ่านเทอร์มินัล ServBay จะตรวจจับไฟล์นี้ทันที และเปลี่ยน environment variable เฉพาะ session ชั่วคราว (โดยเฉพาะPATH
) ทำให้การสั่งphp
,composer
และเครื่องมืออื่น ๆ อ้างอิง PHP รุ่นที่คุณกำหนดโดยอัตโนมัติ ออกจากไดเรกทอรีนั้นเมื่อไรก็จะคืนค่า default ทันที ไม่ส่งผลกระทบกับระบบหรือเซสชันอื่น
1.2 วิธีการกำหนดค่า
สร้างไฟล์ชื่อ .servbay.config
ที่ไดเรกทอรีหลักของโปรเจกต์ และเพิ่มบรรทัดเหล่านี้เพื่อกำหนดเวอร์ชัน PHP ที่ต้องการ:
bash
# ระบุเวอร์ชัน PHP ที่ใช้สำหรับโปรเจกต์นี้ (ตัวอย่าง: PHP 8.3)
PHP_VERSION=8.3
# หากโปรเจกต์คุณจำเป็นต้องใช้ Node.js รุ่นเจาะจง สามารถระบุร่วมกันได้ (ตัวอย่าง: Node.js 20)
# NODE_VERSION=20
1
2
3
4
5
2
3
4
5
- ค่าของ
PHP_VERSION
ต้องเป็นหมายเลขเวอร์ชัน PHP ที่คุณติดตั้งไว้ใน ServBay แล้ว เช่น7.4
,8.1
,8.3
,8.5
ฯลฯ และต้องเปิดใช้งานไว้ก่อน - การตั้งค่า
NODE_VERSION
ใช้วิธีเดียวกัน เพื่อระบุเวอร์ชัน Node.js ที่โปรเจกต์นี้ต้องใช้
ทดสอบการทำงาน:
เปิดเทอร์มินัลจากไดเรกทอรีที่มีไฟล์ .servbay.config
และรันคำสั่งต่อไปนี้เพื่อตรวจสอบว่าเวอร์ชัน PHP ถูกเปลี่ยนจริง:
bash
$ pwd # ตรวจสอบว่าอยู่ในโฟลเดอร์หลักของโปรเจกต์
$ php -v # เช็ค PHP ที่แสดงออกมาว่าตรงกับเวอร์ชันที่ตั้งไว้ (เช่น PHP 8.3.x)
$ composer install # กระบวนการติดตั้ง dependencies จะอ้างอิง PHP เวอร์ชันที่เปิดใช้งานอยู่ตอนนี้
1
2
3
2
3
หากหลังจากแก้ไข .servbay.config
แล้วยังไม่ได้เปลี่ยนเวอร์ชัน ลองปิด–เปิดหน้าต่างเทอร์มินัลใหม่หรือใช้คำสั่ง cd .
เพื่อบังคับให้ ServBay โหลดค่าคอนฟิกใหม่
1.3 ข้อควรระวังและทิปส์เพิ่มเติม
- เช็กความเข้ากันของเวอร์ชัน: หากรันคำสั่งในโปรเจกต์แล้วพบ error ประเภท "Class not found", "Call to undefined function" ฯลฯ ตรวจสอบว่าระบุเวอร์ชัน PHP ที่ถูกต้องและสมควรตามที่ dependency (เช่น ข้อมูลใน
composer.json
) ต้องการ โปรเจกต์เก่า ๆ อาจขึ้นอยู่กับฟีเจอร์หรือ extension ที่โดนตัดออกไปแล้ว (เช่น PHP 7.2 ตัดmcrypt
ออก) - ค่า default ระดับ global: หากไม่มีไฟล์
.servbay.config
ใน directory ปัจจุบันหรือลำดับแม่ ServBay จะใช้ค่า default PHP เวอร์ชันจากการตั้งค่าในหน้าต่างโปรแกรม (GUI) - บริหารหลายบริการพร้อมกัน:
.servbay.config
ไม่ได้จำกัดแค่เฉพาะ PHP แต่ยังระบุได้ถึง Node.js ผ่านNODE_VERSION
เหมาะสำหรับโปรเจกต์ที่ใช้ PHP เป็น backend, Node เป็น frontend (เช่น Webpack, Vite)
1.4 ตัวอย่างการใช้งาน
นี่คือตัวอย่างสาธิตการสลับ PHP อัตโนมัติไม่ต้องตั้งค่าซ้ำแค่เปลี่ยนโปรเจกต์:
คำอธิบายภาพ: เมื่อเข้าไปแต่ละโฟลเดอร์ที่มี
.servbay.config
ต่างเวอร์ชัน จากนั้นรัน php -v
แสดงให้เห็นว่า ServBay สลับไปใช้ PHP อย่างที่กำหนดทันทีโดยอัตโนมัติ
2. จัดการ PHP ของเว็บไซต์ผ่านอินเทอร์เฟซ (GUI) ของ ServBay
นอกจากบรรทัดคำสั่ง ServBay ยังมีเมนูกราฟิก (GUI) สำหรับแยกเวอร์ชัน PHP รายเว็บไซต์ได้ไม่ยุ่งยาก เวอร์ชัน PHP ในระดับเว็บไซต์นี้เบื้องหลังแยกจาก CLI คุณจึงเลือกให้เหมาะกับความต้องการของแต่ละเว็บได้อย่างอิสระ
2.1 ขั้นตอนการตั้งค่า
- เปิดโปรแกรม ServBay: เปิดแอปฯ ServBay
- เข้าเว็บเมนู: คลิกแท็บ เว็บไซต์ (Websites) ที่แถบเมนูซ้ายมือ
- เพิ่มหรือตั้งค่าเว็บไซต์:
- คลิก + มุมล่างซ้ายเพื่อเพิ่มเว็บไซต์ใหม่
- หรือเลือกเว็บที่มีอยู่เพื่อแก้ไข
- ตั้งค่าคุณสมบัติเว็บไซต์:
- Root Directory (โฟลเดอร์รากของเว็บ): เลือกโฟลเดอร์ที่เก็บไฟล์ของเว็บไซต์คุณ แนะนำให้ใช้โฟลเดอร์ย่อยภายใต้
/Applications/ServBay/www/
เช่น/Applications/ServBay/www/your-website-name/public
(เช่นโครง Laravel หรือ Symfony) - Domain (โดเมน): ตั้งชื่อโดเมนสำหรับเว็บทดสอบ เช่น
your-website-name.servbay.demo
ServBay จะช่วยเซ็ต DNS และใบรับรอง HTTPS ให้อัตโนมัติผ่าน ServBay User CA หรือ Public CA เพิ่มความสะดวกในการพัฒนา - PHP Version (เวอร์ชัน PHP): เลือกระบุเวอร์ชัน PHP ที่ต้องการจาก drop-down ซึ่งแสดงเฉพาะรุ่น PHP ที่ติดตั้งและเปิดใช้งานแล้ว เช่น 7.4, 8.1, 8.3, 8.5
- Root Directory (โฟลเดอร์รากของเว็บ): เลือกโฟลเดอร์ที่เก็บไฟล์ของเว็บไซต์คุณ แนะนำให้ใช้โฟลเดอร์ย่อยภายใต้
- บันทึกการตั้งค่า: กดปุ่มบันทึก (save) ระบบจะประยุกต์ค่าที่เปลี่ยนทันที อาจต้อง reload/restart web server และ PHP-FPM เป็นครั้งคราว
2.2 รายละเอียดเชิงเทคนิคและข้อดี
- แยกระบบอย่างแท้จริง: เวอร์ชัน PHP รายเว็บไซต์นี้แต่ละเว็บไซต์จะรันใน process pool ของ PHP-FPM แยกเฉพาะ ไม่ปนกัน ทำให้ข้อผิดพลาดหรือปัญหา memory leak ในเว็บหนึ่งจะไม่กระทบเว็บอื่น
- ปรับแต่งประสิทธิภาพ: PHP และซอฟต์แวร์ใน ServBay ถูก optimize ให้สอดคล้องกับทั้ง ARM64 (Apple Silicon) และ X86_64 ให้ความเร็วสูงสุดในทุกเครื่อง
- การตรวจสอบและแก้ไขข้อผิดพลาด:
- เช็กบันทึก error ของ PHP ได้ที่
/Applications/ServBay/var/log/php/php_error.log
- ตรวจสอบสถานะ PHP-FPM แต่ละเวอร์ชันโดยใช้
servbayctl
เช่นservbayctl status php 8.3
- เช็กบันทึก error ของ PHP ได้ที่
2.3 ทำงานร่วมกับ Web Server และฐานข้อมูล
ServBay รองรับการตั้งค่าต่าง ๆ ได้อย่างยืดหยุ่นตามประเภทโปรเจกต์:
- รองรับ Web Server หลากหลาย: ตั้งแต่ ServBay 1.7.0 เป็นต้นไป สลับเลือก Web Server สำหรับแต่ละเว็บไซต์ได้ทั้ง Apache, Nginx, Caddy ซึ่งผนวกกับ PHP-FPM ใน ServBay อย่างไร้รอยต่อ
- รองรับหลายฐานข้อมูล: ติดตั้งและจัดการฐานข้อมูล MySQL, MariaDB, PostgreSQL, MongoDB, Redis หลายเวอร์ชัน เลือกใช้ได้ทั้งในขั้นตอนตั้งค่าเว็บหรือในโค้ดโปรเจกต์โดยผูกกับ instance ที่กำลังรันบน ServBay ได้สบาย เหมาะสำหรับโปรเจกต์ที่ต้องการ database หรือเวอร์ชันเฉพาะ (เช่น Laravel ที่เหมาะกับ MariaDB 11.x)
3. การทำงานข้ามสภาพแวดล้อมและแนวทางปฏิบัติที่ดี
แยกการจัดการเวอร์ชัน PHP สำหรับคำสั่งบรรทัด (CLI) กับเว็บไซต์ (Web) อย่างเข้าใจ จะช่วยให้คุณตอบโจทย์ทุกฉากการพัฒนาได้อย่างถูกต้องและปลอดภัย
สถานการณ์ | ตั้งค่า CLI ผ่าน .servbay.config | ตั้งค่าสภาพแวดล้อมเว็บไซต์ (GUI) | หมายเหตุ |
---|---|---|---|
ดูแลโครงการเก่า | ในโฟลเดอร์หลักใส่ PHP_VERSION=5.6 | ในหน้าตั้งค่าเลือก PHP 5.6 | ตรวจสอบให้แน่ใจว่าติดตั้ง PHP เวอร์ชันและ extension ที่โครงการเดิมต้องใช้ครบถ้วน |
พัฒนาโครงการใหม่ (เช่น Laravel 11) | ระบุ PHP_VERSION=8.3 (หรือสูงกว่า) อาจกำหนด NODE_VERSION=20 | เพิ่มเว็บไซต์ใหม่ ชี้ไปที่โฟลเดอร์ public เลือก PHP 8.3+ ใส่โดเมนเปิด HTTPS | ควรให้เครื่องมือบรรทัด (Composer, Artisan, Node) และ PHP บนเว็บตรงกัน |
ทดสอบ PHP ใหม่ในอนาคต | ตั้ง PHP_VERSION=8.5 ในโฟลเดอร์เทส | สร้างเว็บเทสใหม่ เลือก PHP 8.5 | ใช้ทดสอบความเข้ากันกับ PHP เวอร์ชันล่าสุดก่อนใช้งานจริง |
ใช้ Composer บน CLI | ต้องแน่ใจว่าโฟลเดอร์ปัจจุบันขึ้นไปมี .servbay.config ระบุ PHP ที่ถูกต้อง | N/A (Composer ใช้งานบน CLI เป็นหลัก) | Composer จะใช้ PHP เวอร์ชันที่กำลังแอคทีฟในเทอร์มินัลปัจจุบัน |
หมายเหตุสำคัญ
- ความแตกต่าง CLI กับ Web: แม้ PHP ที่ใช้จะมีหมายเลขเวอร์ชันเดียวกัน แต่รายละเอียดเชิง config หรือส่วนขยาย (extension) อาจต่างกัน โดยเฉพาะ
opcache
ที่เปิดบน PHP-FPM เสมอเพื่อเร่งความเร็วแต่ CLI มักปิดไว้ ถ้าพบพฤติกรรมต่างกันควรเช็คไฟล์php.ini
และ extension ที่เปิดอยู่อย่างละเอียด (ServBay แยกไฟล์นี้แต่ละเวอร์ชัน PHP) - อัปเดต ServBay Runtime เสมอ: แนะนำให้ใช้ ServBay และ Runtime เวอร์ชันล่าสุดตลอด ทีม ServBay มักปล่อยอัปเดต PHP รุ่นใหม่และแพตช์ด้านความปลอดภัย การอัปเดตแอปจะอัปเดต Runtime แบบอัตโนมัติ เพิ่มฟีเจอร์และความเสถียรไปในตัว
คำถามที่พบบ่อย (FAQ)
ถาม: ถ้า PHP เวอร์ชันใน CLI กับ Website ไม่ตรงกันจะเป็นปัญหาหรือไม่?
ตอบ: การกำหนดเวอร์ชัน PHP บน CLI (ไฟล์ .servbay.config
) และในเว็บ (ตั้งค่าผ่าน ServBay GUI) เป็นอิสระต่อกันโดยสิ้นเชิง .servbay.config
จะมีผลกับ php ที่รันในเทอร์มินัลปัจจุบันเท่านั้น ส่วนเว็บไซต์จะใช้เวอร์ชันที่ตั้งค่าในแอปฯ GUI ผ่าน PHP-FPM สำหรับเว็บเซิร์ฟเวอร์ (Apache/Nginx/Caddy) สองส่วนนี้ไม่ชนกัน คุณสามารถใช้คนละเวอร์ชันสำหรับรันคอมมานด์ (เช่น Composer หรือ Artisan) และรันเว็บจริง แต่อย่างไรก็ตาม แนะนำให้ใช้เวอร์ชันเดียวกันทั้งสองจุด เพื่อความตรงกันระหว่างสภาพแวดล้อมพัฒนาและโปรดักชัน
สรุป
ServBay เปิดประสบการณ์ใหม่ในการจัดการเวอร์ชัน PHP อย่างยืดหยุ่นทั้งผ่านไฟล์ .servbay.config
และหน้าต่างกราฟิก ที่ตอบโจทย์ทั้งการดูแลโปรเจกต์เก่าที่ต้องการเวอร์ชัน PHP เฉพาะ หรือพัฒนาแอปพลิเคชันรุ่นใหม่ด้วย PHP รุ่นล่าสุด ฟีเจอร์เหล่านี้จะช่วยให้สภาพแวดล้อมการพัฒนาของคุณใกล้เคียงกับโปรดักชันมากขึ้น เพิ่มเสถียรภาพและประสิทธิภาพในทุกโปรเจกต์