วิธีโหลด PHP Extension ของบุคคลที่สามบน ServBay
ServBay เป็นสภาพแวดล้อมพัฒนาเว็บในเครื่อง (Local Web Development) ที่ทรงพลัง มาพร้อมกับ PHP Extension ที่ถูกใช้บ่อยไว้อยู่แล้ว ผู้ใช้สามารถตั้งค่าและเปิดใช้งานส่วนขยายเหล่านี้ได้โดยตรงผ่านเมนู แพ็คเกจ (Packages) -> ภาษา (Languages) -> เวอร์ชัน PHP -> ขยาย (Extensions)
ทว่า บางครั้งนักพัฒนาอาจจำเป็นต้องติดตั้ง PHP Extension ภายนอก หรือที่คอมไพล์เอง ซึ่ง ServBay ไม่ได้มีมาให้ในค่าเริ่มต้น คู่มือนี้จะพาคุณตั้งค่าโหลด Extension ประเภทนี้กับ PHP เวอร์ชันที่ต้องการบน ServBay โดยยกตัวอย่าง ionCube Loader กระบวนการนี้ใช้กับ Zend Extension อื่น ๆ หรือไฟล์ .so
ที่คุณคอมไพล์เองได้เช่นกัน
หมายเหตุสำคัญเกี่ยวกับ Zend Extension:
ionCube Loader ถือเป็น Zend Extension ซึ่งต้องทำงานร่วมกับ Zend Engine ของ PHP โดยตรง ดังนั้น ในการตั้งค่าจะต้องใช้คำสั่ง zend_extension
แทนการใช้ extension
แบบ Extension ปกติ กรุณาแยกแยะให้ถูกต้องเสมอ
ข้อกำหนดเบื้องต้น
- คุณได้ติดตั้งและกำลังใช้งาน ServBay บน macOS แล้ว
- คุณมีสิทธิ์ผู้ดูแลระบบ (Admin) และเข้าถึงไฟล์ระบบกับการตั้งค่า ServBay ได้
- คุณมีความคุ้นเคยกับแอป Terminal ของ macOS
- ได้ไฟล์ PHP Extension ที่ต้องการโหลดมาไว้แล้ว (มักเป็น
.so
) และมั่นใจว่าไฟล์นี้รองรับ PHP เวอร์ชันที่คุณใช้งานกับ ServBay รวมถึงสถาปัตยกรรมเครื่อง (Intel หรือ Apple Silicon) และตัวเลือกคอมไพล์ (NTS/ZTS) ตรงกัน
ข้อควรระวัง: สถาปัตยกรรมต้องตรงกันเท่านั้น
ServBay มีแพ็คเกจ PHP สำหรับทั้ง Intel (x86_64) และ Apple Silicon (ARM64 เช่น M1/M2/M3/M4) แบบ Native หากโหลดไฟล์ .so
กรุณาตรวจสอบให้แน่ใจว่าสถาปัตยกรรมของ .so
ตรงกับ PHP Package ของ ServBay ที่ใช้งาน
หากสถาปัตยกรรมไม่ตรงกัน จะทำให้ PHP เปิดไม่ติดหรือเกิดข้อผิดพลาดทันที
คุณสามารถใช้คำสั่ง file
ใน Terminal ตรวจสอบสถาปัตยกรรมของ Executable หรือไฟล์ .so
ได้ดังนี้:
ตรวจสอบสถาปัตยกรรมของ PHP ที่มากับ ServBay (เปลี่ยน
8.3
ให้ตรงกับเวอร์ชันจริงที่ใช้งาน):bashfile /Applications/ServBay/package/php/8.3/current/bin/php
1ผลลัพธ์ตัวอย่าง:
/Applications/ServBay/package/php/8.3/current/bin/php: Mach-O 64-bit executable arm64 # หมายถึง Apple Silicon ARM64
1หรือ
/Applications/ServBay/package/php/8.3/current/bin/php: Mach-O 64-bit executable x86_64 # หมายถึง Intel x86_64
1ตรวจสอบสถาปัตยกรรมของไฟล์
.so
ที่โหลดมา (เปลี่ยนxdebug.so
ให้ตรงตามชื่อไฟล์ที่ใช้งาน):bashfile xdebug.so
1ตัวอย่างผลลัพธ์:
xdebug.so: Mach-O 64-bit bundle arm64 # หมายถึง Apple Silicon ARM64
1หรือ
xdebug.so: Mach-O 64-bit bundle x86_64 # หมายถึง Intel x86_64
1ให้ผลลัพธ์ของขั้นตอนที่ 1 และ 2 ตรงกันทุกประการ
ขั้นตอนการดำเนินการ
ขั้นตอนที่ 1: ดาวน์โหลดไฟล์ Extension ภายนอก (ตัวอย่างใช้ ionCube Loader)
- ไปที่ หน้าดาวน์โหลด ionCube Loader อย่างเป็นทางการ เลือกเวอร์ชันให้ตรงกับสถาปัตยกรรมบน macOS คุณ หากใช้ macOS ARM64 (Apple Silicon M ซีรีส์) ให้เลือกเวอร์ชัน Darwin ARM64
ตัวอย่างลิงก์ดาวน์โหลด (โปรดตรวจสอบเวอร์ชันล่าสุดที่เว็บไซต์ แนะนำนี้เป็นเพียงตัวอย่าง):
https://downloads.ioncube.com/loader_downloads/ioncube_loaders_dar_arm64.tar.gz - หลังดาวน์โหลดจะได้ไฟล์
.tar.gz
เช่นioncube_loaders_dar_arm64.tar.gz
ขั้นตอนที่ 2: ระบุ PHP เวอร์ชันเป้าหมายและโฟลเดอร์ Extensions ของ ServBay
เปิดแอปพลิเคชั่น ServBay
เลือกเมนู แพ็คเกจ (Packages) ทางซ้าย จากนั้นเลือก ภาษา (Languages)
ทางขวาจะเห็น PHP เวอร์ชันต่าง ๆ ให้จดเลขเวอร์ชัน PHP ที่จะติดตั้ง ionCube Loader (เช่น PHP 8.3)
ค้นหาโฟลเดอร์ Extensions ติดตั้ง (
extension_dir
) ของ PHP เวอร์ชันนั้น ServBay วางไฟล์.so
ไว้ตำแหน่งเฉพาะเสมอ ซึ่งขึ้นอยู่กับที่อยู่ติดตั้ง เวอร์ชัน และตัวเลือกการคอมไพล์วิธีที่แม่นยำสุดคือใช้คำสั่ง Terminal:
เปิด Terminal แล้วรัน (เปลี่ยน
/Applications/ServBay/package/php/8.3/current/bin/php
เป็น path ของ PHP ที่ใช้อยู่จริง):bash/Applications/ServBay/package/php/8.3/current/bin/php -i | grep extension_dir
1ผลลัพธ์จะแจ้งค่าเช่น
extension_dir => /Applications/ServBay/package/php/8.3/8.3.16/lib/php/extensions/no-debug-non-zts-20230831
ให้จดตำแหน่งนี้ไว้ใช้ในขั้นตอนถัดไป
ขั้นตอนที่ 3: แตกไฟล์และวาง Loader ไว้ในโฟลเดอร์
เปิดแอป Terminal
ใช้คำสั่ง
cd
ไปยังโฟลเดอร์ที่ดาวน์โหลดไฟล์.tar.gz
ไว้ (โดยปกติคือ~/Downloads
)bashcd ~/Downloads
1แตกไฟล์ดาวน์โหลด:
bashtar -zxvf ioncube_loaders_dar_arm64.tar.gz
1จะได้โฟลเดอร์ใหม่ชื่อ
ioncube
เข้าโฟลเดอร์ ioncube:
bashcd ioncube
1จะเจอไฟล์
.so
สำหรับ PHP เวอร์ชันต่าง ๆ เช่นioncube_loader_dar_8.3.so
ให้เลือกไฟล์ที่ตรงกับเวอร์ชัน PHP เป้าหมายคัดลอกไฟล์
.so
ที่เลือก ไปยัง extension_dir ที่ได้จากขั้นตอนที่ 2 เช่นถ้า extension_dir คือ/Applications/ServBay/package/php/8.3/8.3.16/lib/php/extensions/no-debug-non-zts-20230831/
และติดตั้ง PHP 8.3:bashcp ioncube_loader_dar_8.3.so /Applications/ServBay/package/php/8.3/8.3.16/lib/php/extensions/no-debug-non-zts-20230831/
1- อย่าลืมเปลี่ยน path ปลายทางให้ตรงตามที่ได้จาก
php -i
- ต้องใช้ไฟล์
.so
ที่ตรง VS PHP Version และ Architecture (รายละเอียดดูที่ "ข้อกำหนดเบื้องต้น")
- อย่าลืมเปลี่ยน path ปลายทางให้ตรงตามที่ได้จาก
ขั้นตอนที่ 4: ตั้งค่าโหลด Extension ใน ServBay
กลับไปในแอป ServBay
เลือก ภาษา (Languages) เลือก PHP เวอร์ชันที่ต้องการ (เช่น PHP 8.3)
ไปที่แท็บ PHP
เลื่อนลงมาที่กล่องข้อความ Additional Parameters
เพิ่มคำสั่งนี้ในกล่องนั้น (เปลี่ยนชื่อไฟล์ให้ตรงกับที่คัดลอกไปจริง):
inizend_extension = ioncube_loader_dar_8.3.so
1- สำคัญ: ชื่อไฟล์ต้องตรงกับชื่อจริงใน extension_dir
- ต้องใช้
zend_extension
แทนextension
เพราะ ionCube Loader เป็น Zend Extension - ไม่ต้องใส่ path เต็ม ถ้าไฟล์อยู่ใน extension_dir แล้ว
- หากมีการตั้งค่าอื่น ๆ อยู่แล้ว ให้เพิ่มบรรทัดใหม่นี้เพิ่มเข้าไปเฉย ๆ
(ภาพตัวอย่าง - หน้าจริงอาจแตกต่างตามเวอร์ชัน)
กด Save ที่มุมล่างขวาเพื่อบันทึกการตั้งค่า
ขั้นตอนที่ 5: รีสตาร์ทบริการ PHP
หลังจากกด Save ใน ServBay ระบบจะตรวจจับการเปลี่ยนแปลงและพยายาม restart บริการ PHP ให้อัตโนมัติ โดยปกติไม่จำเป็นต้องรีสตาร์ทเอง
ขั้นตอนที่ 6: ตรวจสอบว่าโหลด Extension สำเร็จ
คุณสามารถตรวจสอบว่าทำงานสำเร็จด้วยสองวิธีหลัก ๆ
ตรวจสอบผ่าน Terminal:
เปิด Terminal
รันคำสั่งนี้ (ใส่ path PHP ให้ตรงกับที่ใช้งาน):
bash/Applications/ServBay/package/php/8.3/current/bin/php -m | grep -i ioncube
1ถ้าโหลดสำเร็จจะเห็นบรรทัด
ionCube Loader
แสดงออกมาหรือสั่ง
php -v
เพื่อดูรายละเอียดเวอร์ชันและตรวจสอบว่า ionCube Loader ถูกโหลดแล้ว:bash/Applications/ServBay/package/php/8.3/current/bin/php -v
1ตัวอย่างผลลัพธ์เมื่อสำเร็จ (version อาจต่างกัน):
PHP 8.3.16 (cli) (built: Jan 31 2025 15:09:39) (NTS) Copyright (c) The PHP Group Zend Engine v4.3.16, Copyright (c) Zend Technologies with the ionCube PHP Loader v14.4.0, Copyright (c) 2002-2024, by ionCube Ltd.
1
2
3
4ให้สังเกตุบรรทัด
with the ionCube PHP Loader ...
ตรวจสอบผ่าน
phpinfo()
:- สร้างไฟล์ PHP ใหม่ เช่น
info.php
ไว้ที่ root เว็บไซต์ของคุณ (เช่น/Applications/ServBay/www/servbay.demo/
หรือ path ที่ตั้งไว้) - ใส่เนื้อหาดังนี้:php
<?php phpinfo(); ?>
1
2
3 - เปิดเบราว์เซอร์ ไปที่
http://servbay.demo/info.php
(หรือ domain localhost ที่ตั้งไว้) - ใช้ฟังก์ชั่นค้นหาของเบราว์เซอร์ (เช่น
Cmd + F
หรือCtrl + F
) หา "ionCube" หากโหลดสำเร็จจะมีหัวข้อ ionCube Loader แสดงอยู่ พร้อมรายละเอียดเวอร์ชันและสิทธิ์การใช้งาน
- สร้างไฟล์ PHP ใหม่ เช่น
หากตรวจสอบแล้วเห็นข้อมูล ionCube Loader แสดงว่าสำเร็จ!
ปัญหาที่พบบ่อยและแนวทางแก้ไข
- PHP เปิดไม่ติด/แครช: พบได้บ่อยเนื่องจากสถาปัตยกรรมของ Extension กับ PHP package ไม่ตรงกัน กรุณาทำตามขั้นตอน "ข้อกำหนดเบื้องต้น" ตรวจสอบซ้ำ - PHP เวอร์ชันหรือ options คอมไพล์ไม่ตรงก็มีผลเช่นกัน
- ตั้งค่า path
extension_dir
ผิด: ให้แน่ใจว่าคัดลอกไฟล์.so
ไปไว้ที่ path ที่ได้จากคำสั่งphp -i | grep extension_dir
- พิมพ์ค่าคำสั่งใน Additional Parameters ผิด: สำหรับ Zend Extension ต้องใช้
zend_extension = filename.so
สำหรับ Extension ปกติใช้extension = filename.so
และชื่อไฟล์ต้องตรง (ตัวเล็กใหญ่ก็สำคัญ) - สิทธิ์ไฟล์ไม่ถูกต้อง: ให้ macOS user ของคุณ (ผู้เปิด ServBay) มีสิทธิ์อ่านไฟล์
.so
กับโฟลเดอร์ที่วางไฟล์ - ServBay ไม่ได้รีสตาร์ท: ส่วนใหญ่อัตโนมัติ แต่กรณีปัญหาให้ลอง stop แล้ว start ใหม่ หรือปิด-เปิดแอป ServBay อีกรอบ
- ไม่เห็น Extension ใน
phpinfo()
: ให้ตรวจดูว่าเข้าไปดูที่ PHP เวอร์ชันและเว็บที่กำลังใช้งานกับ ServBay จริง ๆ (หลาย environment หลาย domain อาจสับสนได้)
สรุป
ทำตามแต่ละขั้นตอนนี้แล้ว คุณจะเพิ่ม ionCube Loader หรือ PHP Extension (.so) อื่น ๆ ให้กับ PHP เวอร์ชันที่ต้องการใน ServBay ได้แน่นอน
หัวใจคือ: หาตำแหน่ง extension_dir ให้ถูก เลือกไฟล์ .so ให้รองรับสถาปัตยกรรมกับ PHP ติดตั้งให้ถูก folder แล้วตั้งค่าชื่อไฟล์ผ่าน Additional Parameters
ถ้าติดขัดใด ๆ ให้ย้อนอ่านข้อควรระวังหรือปัญหาที่พบบ่อย โดยเฉพาะเรื่องสถาปัตยกรรมและ path ของไฟล์