คอมไพล์และติดตั้งโมดูล PHP ปรับแต่งเองใน ServBay
ServBay คือสภาพแวดล้อมการพัฒนาเว็บแบบ Local ที่ทรงพลัง รองรับทั้ง macOS และ Windows โดยมาพร้อมชุดซอฟต์แวร์ครบครันเพื่อตอบโจทย์นักพัฒนาเว็บยุคใหม่ มีทั้ง PHP, Node.js, Python, Go, Java, ฐานข้อมูล (MySQL, PostgreSQL, MongoDB), แคช (Redis), และเว็บเซิร์ฟเวอร์ (Caddy, Nginx, Apache) สามารถเลือกใช้หลายเวอร์ชันของแต่ละแพลตฟอร์มได้อย่างยืดหยุ่นตามความต้องการของโปรเจกต์
แม้ ServBay จะติดตั้งโมดูล PHP ยอดนิยมมามากมายล่วงหน้า ในบางกรณีคุณอาจต้องคอมไพล์และติดตั้งโมดูลเพิ่มเติมเพื่อขยายความสามารถของ PHP หรือบูรณาการกับบริการ Third-party เฉพาะทาง
เอกสารนี้เป็นคู่มือโดยละเอียดสำหรับการคอมไพล์และติดตั้งโมดูล PHP ปรับแต่งเองใน ServBay โดยจะยกตัวอย่างวิธีดำเนินการกับโมดูล imagick
(จัดการภาพ) และ sqlsrv
(ขับเคลื่อนการเชื่อมต่อ Microsoft SQL Server) เพื่อให้คุณเพิ่มฟีเจอร์ที่ต้องการให้กับสภาพแวดล้อม PHP ใน ServBay ได้อย่างง่ายดาย
เงื่อนไขเบื้องต้น
ข้อควรระวังที่สำคัญ
ก่อนเริ่มคอมไพล์โมดูล PHP ใดๆ สิ่งสำคัญที่สุด คือการตั้งค่าและเริ่มต้น (init) สภาพแวดล้อมสำหรับการคอมไพล์ตามคู่มือ ServBay อย่างถูกต้อง และกำหนด Environment Variables ที่จำเป็นในระบบ หากข้ามขั้นตอนนี้หรือกำหนดไม่ถูกต้อง การคอมไพล์จะล้มเหลว เช่น ไม่พบคำสั่ง, ไลบรารี, หรือไฟล์หัว
สคริปต์ตั้งค่าสภาพแวดล้อมของ ServBay จะกำหนด Environment Variables ที่ต้องใช้ เช่น PATH
(ชี้ไปยังเครื่องมือ build ภายใน ServBay), SERVBAY_PACKAGE_FULL_PATH
(โฟลเดอร์รูทของแพ็กเกจ ServBay), และ CPU_NUMBER
(ใช้สำหรับคอมไพล์แบบมัลติคอร์) ตัวแปรเหล่านี้สำคัญต่อการคอมไพล์ขั้นตอนถัดไป
สำหรับขั้นตอนการตั้งค่าสภาพแวดล้อมอย่างละเอียด กรุณาดูเอกสาร: คอมไพล์แพ็กเกจเพิ่มเติมด้วย ServBay อย่าลืมทำตามคำแนะนำในคู่มือดังกล่าวทุกขั้นตอนให้ครบถ้วนก่อนดำเนินการถัดไป
ก่อนดำเนินการคอมไพล์โมดูลต่อไป โปรดตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าสภาพแวดล้อมสำหรับคอมไพล์ ServBay และ Environment Variables ทั้งหมดเรียบร้อยใน Terminal session ปัจจุบัน
ความสำคัญของการเลือกเวอร์ชัน PHP
จุดเด่นอย่างหนึ่งของ ServBay คือสามารถติดตั้งและใช้งาน PHP หลายเวอร์ชันในด้วยระบบเดียวกัน ทำให้สลับเวอร์ชันเพื่อรองรับหลายโปรเจกต์ได้สะดวก แต่เมื่อจะคอมไพล์โมดูล PHP จำเป็นต้องดำเนินการกับเวอร์ชันที่ต้องการโดยเฉพาะ เครื่องมือหลักอย่าง phpize
และ php-config
จะถูกผูกกับ PHP เวอร์ชันนั้นๆ
phpize
: สคริปต์สำหรับเตรียมสภาพแวดล้อมการคอมไพล์ PHP extension อ่านconfig.m4
และสร้างสคริปต์configure
ตามขั้นตอนมาตรฐานของ C/C++php-config
: สคริปต์ให้ข้อมูล config ของ PHP เวอร์ชันที่ต้องการ เช่น compiler flags, include paths, library paths ฯลฯ สคริปต์configure
จะเรียกใช้เพื่อเชื่อมโยง module ให้ถูกต้องกับ PHP เวอร์ชันที่ระบุ
ดังนั้น ในการใช้ phpize
, php-config
หรือคำสั่งคอมไพล์อื่นๆ ต้องระบุfull path ไปยังเวอร์ชัน PHP ที่ต้องการคอมไพล์โมดูลให้
ตัวอย่าง path
ต้องการคอมไพล์โมดูลกับ PHP 8.3 ใน ServBay
macOS:
phpize
:/Applications/ServBay/package/php/8.3/current/bin/phpize
php-config
:/Applications/ServBay/package/php/8.3/current/bin/php-config
Windows:
phpize
:C:\ServBay\package\php\8.3\current\bin\phpize
php-config
:C:\ServBay\package\php\8.3\current\bin\php-config
การเลือกเวอร์ชันจะทำให้มั่นใจว่าโมดูลที่คอมไพล์จะใช้งานกับ PHP เวอร์ชันเป้าหมายได้สมบูรณ์
เอกสารนี้จะยกตัวอย่างกับ PHP 8.3 ใน ServBay โปรดเปลี่ยน path ของคำสั่งเป็น PHP เวอร์ชันที่คุณใช้จริงในการคอมไพล์
คอมไพล์โมดูล PHP imagick
imagick
คือ PHP extension ยอดนิยมสำหรับจัดการและประมวลผลรูปภาพผ่านไลบรารี ImageMagick รองรับฟังก์ชันหลากหลาย เช่น resize, crop, แปลงไฟล์, ใส่ลายน้ำ, สร้างภาพซ้อน ฯลฯ ขั้นตอนคอมไพล์และติดตั้ง imagick
ใน ServBay มีดังนี้:
ขั้นตอนที่ 1 : ติดตั้ง dependency ImageMagick
โมดูล imagick
จำเป็นต้องมีไลบรารี ImageMagick บนระบบก่อน
macOS
แนะนำติดตั้งผ่าน Homebrew หากยังไม่มี Homebrew ดูคู่มือจาก เว็บไซต์หลัก Homebrew
เปิด Terminal แล้วรัน:
bash
brew install imagemagick
1
Windows
สำหรับ Windows ต้องดาวน์โหลดและติดตั้ง ImageMagick จาก หน้าดาวน์โหลดของ ImageMagick
ขณะติดตั้งเลือกเวอร์ชันที่มี developer library และเพิ่ม path เข้า Environment Variable
ขั้นตอนที่ 2 : ดาวน์โหลดซอร์สโค้ดโมดูล imagick
ไปที่ PECL หน้าหลักของ imagick เพื่อเลือกเวอร์ชันที่ต้องการ (ควรใช้เวอร์ชัน stable ล่าสุด) ตัวอย่างนี้ใช้ 3.7.0
:
bash
wget https://pecl.php.net/get/imagick-3.7.0.tgz
1
ขั้นตอนที่ 3 : แตกไฟล์ซอร์สและเข้าไดเรกทอรี
หลังดาวน์โหลด แตกไฟล์และเข้าไดเรกทอรีโค้ดด้วย:
bash
tar zxvf imagick-3.7.0.tgz
cd imagick-3.7.0
1
2
2
ขั้นตอนที่ 4 : เตรียมสภาพแวดล้อมคอมไพล์ (phpize)
เมื่ออยู่ในไดเรกทอรีโค้ดแล้ว ให้ใช้ phpize
จาก PHP เวอร์ชันเป้าหมาย (ดูหัวข้อก่อนหน้า) สมมติใช้ PHP 8.3 และมีการตั้งค่า ${SERVBAY_PACKAGE_FULL_PATH}
แล้ว:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/phpize
1
หากรันสำเร็จจะได้สคริปต์ configure
และไฟล์ build อื่นๆ Terminal จะรายงานว่าพร้อมสำหรับคอมไพล์
ขั้นตอนที่ 5 : กำหนด options สำหรับคอมไพล์
รันสคริปต์ configure
พร้อมระบุ path ไปยัง php-config
:
bash
./configure --with-php-config=${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php-config
1
สคริปต์นี้จะเช็คหาไลบรารีและ header ของ ImageMagick และข้อมูล config จาก PHP หากผิดพลาดมักเกิดจาก dependency ไม่ถูกติดตั้งหรือ path ไม่ถูกต้อง
ขั้นตอนที่ 6 : คอมไพล์และติดตั้งโมดูล
หลังจากได้ Makefile
แล้ว รัน make
และ make install
เพื่อคอมไพล์และติดตั้ง:
bash
make -j ${CPU_NUMBER}
make install
1
2
2
โมดูลจะถูกคัดลอกไปยังโฟลเดอร์ extension ของ PHP ใน ServBay ดังนี้:
- macOS:
/Applications/ServBay/package/php/8.3/current/lib/php/extensions/no-debug-non-zts-YYYYMMDD/
- Windows:
C:\ServBay\package\php\8.3\current\lib\php\extensions\no-debug-non-zts-YYYYMMDD\
ตำแหน่งที่แน่นอนขึ้นกับเวอร์ชัน PHP ที่ใช้
ขั้นตอนที่ 7 : เปิดใช้โมดูล
หลังติดตั้ง ให้เปิดใช้งานโมดูลในไฟล์ config ของ PHP ผ่าน GUI ของ ServBay
- เปิดโปรแกรม ServBay
- เมนูฝั่งซ้ายไปที่
ภาษา
-PHP
-PHP 8.3
- ที่หน้าทางขวาเลือกแท็บ
PHP
แล้วเลื่อนลงไปส่วน “พารามิเตอร์เพิ่มเติม” ใส่extension=imagick.so
- กด
บันทึก
แล้ว ServBay จะ restart PHP อัตโนมัติ
ขั้นตอนที่ 8 : ตรวจสอบโมดูลใช้งานได้หรือไม่
หลังเปิดใช้โมดูล อย่าลืมรีสตาร์ท PHP ใน ServBay เพื่อโหลด config ใหม่ สามารถใช้เมนูบนแผงควบคุม ServBay หรือคำสั่ง CLI ตามคู่มือ ServBay
ตรวจสอบว่า imagick
โหลดสำเร็จได้ด้วย:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep imagick
1
ควรเห็น imagick
ใน output
อีกวิธีคือสร้างไฟล์ PHP ใน web root เช่น info.php
ใส่โค้ด <php phpinfo(); ?>
โฟลเดอร์เว็บ root:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
เข้าเว็บเบราเซอร์ ไปที่ http://localhost/info.php
หรือโดเมน ServBay แล้วค้นหา "imagick" บนหน้า phpinfo
คอมไพล์โมดูล PHP sqlsrv/pdo_sqlsrv
sqlsrv
และ pdo_sqlsrv
คือ extension ที่พัฒนาโดย Microsoft สำหรับเชื่อมต่อ SQL Server ผ่าน ODBC driver หากต้องใช้ PHP เข้าถึง SQL Server ใน ServBay ต้องคอมไพล์และติดตั้งโมดูลเหล่านี้ ขั้นตอนดังนี้:
ข้อกำหนดสำคัญ
ก่อนคอมไพล์ sqlsrv
ต้องติดตั้ง SQL Server ODBC driver และเครื่องมือของ Microsoft ด้วยตัวเอง ServBay ไม่ได้ติดตั้งมาให้ล่วงหน้า
macOS
แนะนำให้ติดตั้งผ่าน Homebrew หากยังไม่มี Homebrew ดูคู่มือที่ เว็บไซต์หลัก Homebrew
รันคำสั่งตามนี้ (อาจต้องตั้งค่า HOMEBREW_ACCEPT_EULA=Y
):
bash
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18 mssql-tools18
1
2
3
2
3
ปกติ dependencies จะถูกติดตั้งไว้ที่ /opt/homebrew/
(Mac Silicon) หรือ /usr/local/
(Intel Mac) ควรชี้ path ให้ถูกต้องตอนคอมไพล์
Windows
ดาวน์โหลดและติดตั้ง ODBC Driver for SQL Server จาก Microsoft เลือกเวอร์ชันที่ตรงกับระบบของคุณ และตรวจสอบว่า driver ติดตั้งถูกต้อง
เคล็ดลับ
sqlsrv
และ pdo_sqlsrv
เป็น extension คนละตัว ต้องคอมไพล์แยกกัน โดยขั้นตอนแทบเหมือนกัน ตัวอย่างนี้ใช้ sqlsrv
เป็นหลัก
ขั้นตอนที่ 1 : ติดตั้ง Microsoft ODBC Driver
(ตามข้อกำหนดข้างบน ต้องติดตั้ง msodbcsql18
และ mssql-tools18
ด้วย Homebrew ให้เรียบร้อย)
ขั้นตอนที่ 2 : ดาวน์โหลดซอร์สโค้ด sqlsrv
ไปที่ PECL sqlsrv เพื่อดาวน์โหลดเวอร์ชันที่ต้องการ ตัวอย่างนี้ใช้ 5.12.0
:
bash
wget https://pecl.php.net/get/sqlsrv-5.12.0.tgz # sqlsrv
wget https://pecl.php.net/get/pdo_sqlsrv-5.12.0.tgz # pdo_sqlsrv
1
2
2
ขั้นตอนที่ 3 : แตกไฟล์ซอร์สและเข้าไดเรกทอรี
แตกไฟล์และเข้าไดเรกทอรีโค้ด:
bash
tar zxvf sqlsrv-5.12.0.tgz
cd sqlsrv-5.12.0
# pdo_sqlsrv ก็ทำเหมือนกัน ตัวอย่างด้านล่างเน้น sqlsrv
1
2
3
4
2
3
4
ขั้นตอนที่ 4 : เตรียมสภาพแวดล้อมคอมไพล์ (phpize)
เมื่ออยู่ในโฟลเดอร์ซอร์สโค้ด ใช้ phpize
จาก PHP เวอร์ชันเป้าหมาย (เช่น PHP 8.3):
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/phpize
1
ขั้นตอนที่ 5 : ตั้งค่าการคอมไพล์ (ใส่ path dependency)
รัน configure
โดยตั้งค่า Environment Variables ให้สคริปต์หาไลบรารีต่างๆ ได้ถูกต้อง ต้องระบุ path ของ Homebrew สำหรับ library และ header ตาม ตัวแปร LDFLAGS และ CPPFLAGS รวมทั้ง --with-php-config
:
ตัวอย่าง Homebrew ติดตั้งที่ /opt/homebrew
:
bash
export LDFLAGS="-L/opt/homebrew/lib ${LDFLAGS}"
export CPPFLAGS="-I/opt/homebrew/opt/unixodbc/include -I/opt/homebrew/include ${CPPFLAGS}" # ใส่ /opt/homebrew/include ด้วยเพื่อหา header ครบ
./configure --with-php-config=${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php-config
1
2
3
2
3
LDFLAGS
: ชี้ไป library files โดยใช้-L/opt/homebrew/lib
CPPFLAGS
: ชี้ไป header files โดยใช้-I/opt/homebrew/opt/unixodbc/include
และ-I/opt/homebrew/include
${CPPFLAGS}
และ${LDFLAGS}
ประกอบกับ Environment Variables ที่ ServBay อาจตั้งไว้ก่อน
ขั้นตอนที่ 6 : คอมไพล์และติดตั้งโมดูล
หลังได้ Makefile
แล้ว รัน make
และ make install
:
bash
make -j ${CPU_NUMBER}
make install
1
2
2
โมดูลที่ได้ (sqlsrv.so
และอาจมี pdo_sqlsrv.so
) จะถูกคัดลอกไปยังโฟลเดอร์ extension ของ PHP ใน ServBay
ขั้นตอนที่ 7 : เปิดใช้โมดูล
หลังติดตั้งแล้ว ให้เปิดใช้โมดูลใน config ของ PHP ผ่าน GUI ของ ServBay
- เปิดโปรแกรม ServBay
- เมนูซ้ายไปที่
ภาษา
-PHP
-PHP 8.3
- ที่หน้าทางขวาเลือกแท็บ
PHP
แล้วเลื่อนลงไปส่วน “พารามิเตอร์เพิ่มเติม” ใส่extension=sqlsrv.so
และextension=pdo_sqlsrv.so
- กด
บันทึก
แล้ว ServBay จะ restart PHP อัตโนมัติ
ขั้นตอนที่ 8 : ตรวจสอบโมดูลใช้งานได้หรือไม่
หลังเปิดใช้โมดูล อย่าลืมรีสตาร์ท PHP ใน ServBay
ตรวจสอบว่า sqlsrv
(และ pdo_sqlsrv
) โหลดสำเร็จได้ด้วย:
bash
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep sqlsrv
${SERVBAY_PACKAGE_FULL_PATH}/php/8.3/current/bin/php -m | grep pdo_sqlsrv
1
2
2
ถ้าโหลดสำเร็จจะเห็นชื่อโมดูลในผลลัพธ์ หรือจะใช้ฟังก์ชัน phpinfo()
ตรวจสอบก็ได้
FAQ (คำถามที่พบบ่อย)
- ถาม: คอมไพล์แล้วมี error “Cannot find autoconf” หรือคล้ายกัน?
- ตอบ: เกิดจากไม่ตั้งค่าสภาพแวดล้อมคอมไพล์ ServBay ให้ถูกต้อง กลับไปอ่าน “เงื่อนไขเบื้องต้น” และตั้งค่าตาม คอมไพล์แพ็กเกจเพิ่มเติมด้วย ServBay ให้ครบ ตรวจสอบว่ามี build tools เช่น autoconf, automake, libtool ถูกติดตั้งและอยู่ใน Environment Variables แล้ว การรันสคริปต์ตั้งค่าสภาพแวดล้อมและ restart terminal มักแก้ปัญหานี้ได้
- ถาม: สคริปต์
configure
รันไม่ผ่าน แจ้งไม่เจอ library หรือ header?- ตอบ: แปลว่า dependency ยังไม่ได้ติดตั้งหรือ path ไม่ถูกต้อง
- สำหรับ
imagick
ให้แน่ใจว่าติดตั้ง ImageMagick developer library (brew install imagemagick
) - สำหรับ
sqlsrv
ต้องติดตั้ง Microsoft ODBC driver (msodbcsql18
) และmssql-tools18
ด้วย Homebrew รวมทั้งตั้งค่า LDFLAGS/CPPFLAGS ไปยัง path ที่ตัว library/header อยู่ เช่น/opt/homebrew/lib
,/opt/homebrew/opt/unixodbc/include
- ตรวจสอบว่า Environment Variables มี path ของ Homebrew (ถ้าใช้ Homebrew ติดตั้ง) หรืออาจต้องเพิ่ม path ของ Homebrew/bin ใน PATH ของ ServBay ด้วย
- สำหรับ
- ตอบ: แปลว่า dependency ยังไม่ได้ติดตั้งหรือ path ไม่ถูกต้อง
- ถาม: รัน
make
หรือmake install
แล้วล้มเหลว?- ตอบ: เป็นไปได้จากหลายสาเหตุ:
- ขาด dependency: ดูจาก error log เพื่อติดตั้ง dependency ที่ขาด
- ตั้งค่าผิด: ตรวจดูขั้นตอนการเรียก configure โดยเฉพาะ path ไปยัง
--with-php-config
- สิทธิ์ไม่พอ:
make install
จะคัดลอกไฟล์ไปในโฟลเดอร์ extension ถ้าสิทธิ์ไม่พอ อาจต้องใช้sudo make install
(ใช้ด้วยความระมัดระวัง) - ปัญหาซอร์สโค้ด: ตรวจสอบว่าไฟล์แพ็กเกจที่ดาวน์โหลดมาครบถ้วน
- ตอบ: เป็นไปได้จากหลายสาเหตุ:
- ถาม: โมดูล
.so
อยู่ในโฟลเดอร์ extension แล้ว ในไฟล์.ini
ก็เปิดไว้ แต่php -m
หรือphpinfo()
ไม่เจอ?- ตอบ:
- สาเหตุหลัก: ไม่ได้รีสตาร์ท PHP ใน ServBay หลังแก้ไข
.ini
ต้องรีสตาร์ท PHP ผ่าน ServBay panel หรือ CLI (รีเฟรชเว็บหรือ restart web server เฉยๆ ไม่พอ) .ini
syntax error: ตรวจสอบว่าเขียนextension=modulename.so
ถูกต้อง ไม่มีสะกดผิด- path ของ extension directory ผิด: ดูว่า
php.ini
ตั้งextension_dir
ถูกต้อง ควรจะตรงกับ output จากphp-config --extension-dir
- โมดูลเสียหรือไม่รองรับ PHP เวอร์ชันนี้: ลองคอมไพล์ใหม่ดู เลือกเวอร์ชัน source ให้ตรงกับ PHP และเช็ค error log ใน ServBay
- สาเหตุหลัก: ไม่ได้รีสตาร์ท PHP ใน ServBay หลังแก้ไข
- ตอบ:
สรุป
หากดำเนินการตามขั้นตอนในคู่มือนี้ คุณจะสามารถคอมไพล์และติดตั้งโมดูล PHP ปรับแต่งเอง เช่น imagick
และ sqlsrv
ใน ServBay ได้อย่างสมบูรณ์ เคล็ดลับสำคัญคือ:
- ตั้งค่าคอมไพล์ ServBay เต็มรูปแบบอย่างถูกต้อง – เป็นฐานสำคัญของการคอมไพล์ทุกครั้ง
- ระบุและใช้ path PHP เวอร์ชันเป้าหมายทุกขั้น – โดยใช้ path เต็มทุกครั้งกับ
phpize
,php-config
- แก้ dependency ของโมดูลให้ครบ – ติดตั้ง library/tool ตามต้องการและระบุ path ให้ครบ (ImageMagick, ODBC driver ฯลฯ) ขณะ configure
- เปิดใช้โมดูลถูกต้อง – สร้างหรือแก้ไขไฟล์ในโฟลเดอร์ conf.d ของ PHP โดยใช้
extension=modulename.so
- รีสตาร์ท PHP ผ่าน ServBay – เพื่อให้โมดูลโหลดและใช้งานได้จริง
ServBay เป็นสภาพแวดล้อมที่ยืดหยุ่นและรองรับทุกความต้องการสายพัฒนาเว็บ ไม่ใช่แค่เรื่อง PHP แต่ยังครบทุกสแต็กที่ใช้งานบ่อย เช่น MySQL, PostgreSQL, MongoDB, Redis, Caddy, Nginx, Apache, Node.js, Python, Go, Java, .NET, Ruby, Rust เป็นต้น ฟีเจอร์เสริมครบ ทั้งการขอ SSL จริงผ่าน ACME, ตั้งค่า CORS, แบ็กอัพอัตโนมัติ (รวมถึง settings, เว็บไซต์, ฐานข้อมูล, SSL), รีเซ็ตรหัสผ่าน root ของฐานข้อมูล, รวมทั้ง ServBay User CA และ ServBay Public CA เพื่อพัฒนา HTTPS local อย่างง่าย
หวังว่าคู่มือนี้จะช่วยเพิ่มฟีเจอร์ PHP ในระบบ ServBay ของคุณได้อย่างมีประสิทธิภาพ หากประสบปัญหาเพิ่มเติม แนะนำให้อ่านเอกสาร ServBay หรือขอคำแนะนำใน community ของ ServBay