Hướng dẫn tải Extension PHP bên thứ ba trên ServBay
ServBay là môi trường phát triển Web cục bộ mạnh mẽ, tích hợp sẵn nhiều extension PHP thông dụng. Thông thường, bạn chỉ cần vào Packages -> Languages -> Phiên bản PHP -> Extensions trong ServBay để cấu hình và kích hoạt các extension.
Tuy nhiên, đôi khi bạn cần thêm các extension PHP bên ngoài hoặc tự biên dịch mà ServBay không tích hợp sẵn. Bài viết này sẽ hướng dẫn chi tiết cách tải và cấu hình các extension này cho phiên bản PHP bạn muốn trên ServBay, lấy ionCube Loader làm ví dụ. Quy trình này cũng áp dụng cho các Zend extension khác hoặc file mở rộng .so
mà bạn tự biên dịch.
Lưu ý về Zend extension: ionCube Loader là một Zend extension—loại extension tương tác sâu với Zend Engine của PHP. Khi cấu hình, bạn cần dùng lệnh zend_extension
thay vì lệnh extension
dành cho extension thường. Xin lưu ý sử dụng đúng chỉ thị này để đảm bảo PHP khởi động được.
Điều kiện tiên quyết
- Bạn đã cài đặt và chạy ServBay trên macOS.
- Bạn có quyền quản trị hệ thống, có thể truy cập tệp hệ thống và giao diện cấu hình của ServBay.
- Bạn đã quen thao tác với Terminal của macOS.
- Bạn đã xác định được extension PHP muốn thêm vào (thường là file
.so
), và đảm bảo file đó tương thích hoàn toàn với phiên bản PHP, kiến trúc máy (Intel hoặc Apple Silicon) và tuỳ chọn biên dịch (NTS/ZTS) của PHP trên ServBay.
Lưu ý: Tính tương thích kiến trúc cực kỳ quan trọng
ServBay cung cấp gói PHP riêng biệt cho cả hai kiến trúc Intel (x86_64) và Apple Silicon (ARM64 như chip M1/M2/M3/M4). Khi nạp file mở rộng .so
, bạn phải chắc chắn file .so
này được biên dịch cùng kiến trúc với gói PHP mà ServBay đang sử dụng.
Hai kiến trúc khác nhau không thể dùng chung file mở rộng. Nếu không khớp, PHP sẽ không thể khởi động hoặc bị crash.
Bạn có thể dùng lệnh file
để kiểm tra kiến trúc của tệp thực thi hoặc file .so
:
Kiểm tra kiến trúc gói PHP có trong ServBay (thay
8.3
bằng phiên bản bạn đang dùng):bashfile /Applications/ServBay/package/php/8.3/current/bin/php
1Ví dụ đầu ra:
/Applications/ServBay/package/php/8.3/current/bin/php: Mach-O 64-bit executable arm64 # Nghĩa là kiến trúc Apple Silicon ARM64
1hoặc
/Applications/ServBay/package/php/8.3/current/bin/php: Mach-O 64-bit executable x86_64 # Nghĩa là kiến trúc Intel x86_64
1Kiểm tra kiến trúc của file extension
.so
bạn tải hoặc tự biên dịch (thayxdebug.so
bằng tên file extension):bashfile xdebug.so
1Ví dụ đầu ra:
xdebug.so: Mach-O 64-bit bundle arm64 # Nghĩa là kiến trúc Apple Silicon ARM64
1hoặc
xdebug.so: Mach-O 64-bit bundle x86_64 # Nghĩa là kiến trúc Intel x86_64
1Đảm bảo thông tin kiến trúc ở cả Bước 1 và Bước 2 TRÙNG KHỚP hoàn toàn.
Các bước thực hiện
Bước 1: Tải file extension bên thứ ba (ví dụ ionCube Loader)
- Truy cập trang tải chính thức của ionCube Loader. Chọn đúng phiên bản phù hợp với kiến trúc macOS của bạn. Với máy Mac Apple Silicon (M series), hãy tải bản Darwin ARM64. Tham khảo ví dụ đường link (lưu ý kiểm tra phiên bản mới nhất trên website chính thức):
https://downloads.ioncube.com/loader_downloads/ioncube_loaders_dar_arm64.tar.gz - Sau khi tải về, bạn sẽ nhận được một file nén đuôi
.tar.gz
, ví dụ:ioncube_loaders_dar_arm64.tar.gz
.
Bước 2: Xác định phiên bản PHP cần cài extension & thư mục extension của ServBay
Mở ứng dụng ServBay.
Ở thanh bên trái, vào Packages -> Languages.
Ở danh sách bên phải, chọn phiên bản PHP bạn muốn cài (ví dụ PHP 8.3). Lưu lại phiên bản này.
Xác định thư mục cài đặt extension của phiên bản PHP đó (
extension_dir
). Đây là nơi lưu các file.so
. Vị trí đường dẫn còn tùy vào thư mục cài đặt ServBay, phiên bản PHP và thông số biên dịch.Cách tìm chính xác nhất là dùng lệnh Terminal:
Mở Terminal, chạy lệnh (thay
/Applications/ServBay/package/php/8.3/current/bin/php
bằng đúng đường dẫn PHP của bạn):bash/Applications/ServBay/package/php/8.3/current/bin/php -i | grep extension_dir
1Đầu ra sẽ hiện
extension_dir => /path/to/extension/directory
. Ví dụ:extension_dir => /Applications/ServBay/package/php/8.3/8.3.16/lib/php/extensions/no-debug-non-zts-20230831
1Hãy ghi lại chính xác đường dẫn này để sử dụng ở các bước sau.
Bước 3: Giải nén và đặt file Loader đúng chỗ
Mở Terminal.
Di chuyển đến thư mục bạn đã tải file
.tar.gz
(thường là~/Downloads
):bashcd ~/Downloads
1Giải nén file vừa tải:
bashtar -zxvf ioncube_loaders_dar_arm64.tar.gz
1Sau khi xả nén, thư mục
ioncube
sẽ được tạo ra.Vào thư mục
ioncube
:bashcd ioncube
1Bạn sẽ thấy nhiều file
.so
cho các phiên bản PHP khác nhau, ví dụioncube_loader_dar_8.3.so
. Xác định file đúng với phiên bản PHP trong bước 2.Copy file
.so
phù hợp vào thư mục extension bạn đã ghi chú ở bước 2. Ví dụ: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- Hãy thay thế đường dẫn
/Applications/ServBay/.../no-debug-non-zts-20230831/
bằng đúngextension_dir
mà bạn nhận được từ lệnhphp -i
. - Đảm bảo file
.so
bạn copy đúng phiên bản PHP và cùng kiến trúc với gói PHP (xem lại phần kiểm tra kiến trúc ở Điều kiện tiên quyết).
- Hãy thay thế đường dẫn
Bước 4: Cấu hình PHP trong ServBay
Quay lại giao diện ServBay.
Đảm bảo Languages đã chọn, sau đó bấm chọn phiên bản PHP muốn cấu hình (ví dụ PHP 8.3) ở danh sách bên phải.
Ở khu vực cấu hình bên phải, tới tab PHP.
Cuộn xuống dưới tìm Additional Parameters (tham số bổ sung).
Thêm dòng sau vào hộp văn bản này để nạp ionCube Loader:
inizend_extension = ioncube_loader_dar_8.3.so
1- Lưu ý: Đổi
ioncube_loader_dar_8.3.so
thành đúng tên file bạn đã copy vào thư mục extension. - Phải dùng
zend_extension
thay vìextension
vì ionCube Loader là Zend extension. - Nếu file đã nằm trong đúng
extension_dir
, chỉ cần nhập tên file, không cần đường dẫn đầy đủ. - Nếu hộp văn bản đã có sẵn cấu hình, hãy thêm chỉ thị này ở một dòng mới.
(Hình chỉ mang tính minh họa, giao diện thực tế có thể thay đổi nhẹ tùy phiên bản)
- Lưu ý: Đổi
Bấm Save ở góc phải dưới để lưu cấu hình.
Bước 5: Khởi động lại dịch vụ PHP
Sau khi bấm Save trong ServBay, phần mềm sẽ tự động phát hiện thay đổi và thử khởi động lại các dịch vụ liên quan (bao gồm PHP). Thông thường bạn không cần thao tác khởi động lại thêm.
Bước 6: Kiểm tra xác nhận đã nạp thành công
Có hai cách đơn giản để xác minh ionCube Loader đã được nạp:
Kiểm tra qua dòng lệnh:
Mở Terminal.
Chạy lệnh liệt kê các module PHP đã nạp (chú ý dùng đúng đường dẫn tới PHP):
bash/Applications/ServBay/package/php/8.3/current/bin/php -m | grep -i ioncube
1Nếu thành công, bạn sẽ thấy dòng như
ionCube Loader
trong kết quả.Bạn cũng có thể kiểm tra thông tin phiên bản PHP, dòng ionCube Loader sẽ xuất hiện dưới dòng Zend Engine:
bash/Applications/ServBay/package/php/8.3/current/bin/php -v
1Ví dụ đầu ra khi đã nạp thành công (số phiên bản có thể khác):
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
4Lưu ý dòng
with the ionCube PHP Loader ...
.
Kiểm tra qua
phpinfo()
:- Tạo file PHP mới trong thư mục gốc website (ví dụ
/Applications/ServBay/www/servbay.demo/
hoặc thư mục bạn định cấu hình), đặt têninfo.php
. - Nội dung file chỉ cần:php
<?php phpinfo(); ?>
1
2
3 - Truy cập file qua trình duyệt, ví dụ
http://servbay.demo/info.php
(đổi thành tên miền cục bộ bạn đang dùng). - Tìm kiếm "ionCube" trên trang kết quả (bằng Ctrl + F hoặc Cmd + F). Nếu cài đặt thành công, bạn sẽ thấy block thông tin riêng của ionCube Loader cùng phiên bản, bản quyền, v.v.
- Tạo file PHP mới trong thư mục gốc website (ví dụ
Nếu hai cách trên đều hiển thị thông tin ionCube Loader, đồng nghĩa extension đã được nạp thành công.
Các vấn đề thường gặp & Cách khắc phục
- PHP không khởi động hoặc tự động tắt: Nguyên nhân phổ biến nhất là extension
.so
và PHP không cùng kiến trúc. Hãy kiểm tra cẩn thận và thực hiện đúng phần kiểm tra kiến trúc ở mục Điều kiện tiên quyết. Ngoài ra, không tương thích phiên bản PHP hoặc tùy chọn build cũng có thể làm phát sinh lỗi. - Sai đường dẫn
extension_dir
: Đảm bảo file.so
đã được copy đúng vào chính xác đường dẫnextension_dir
mà bạn kiểm tra bằng lệnhphp -i | grep extension_dir
. - Sai cấu hình chỉ thị: Kiểm tra lại lệnh thêm trong phần Additional Parameters của ServBay. Zend extension phải dùng
zend_extension = filename.so
, còn extension thường dùngextension = filename.so
. Tên file phải trùng khớp tuyệt đối (kể cả hoa/thường). - Lỗi phân quyền file: Đảm bảo người dùng chạy ServBay (thường là user của bạn trên macOS) có quyền đọc tệp
.so
và thư mục chứa file. Thao tác thông thường không gặp vấn đề, trừ khi bạn tự thay đổi phân quyền. - ServBay chưa khởi động lại: Thường ServBay sẽ tự làm, nhưng nếu không thấy hiệu lực, hãy thử stop/navbar lại dịch vụ PHP trên ServBay, hoặc thoát và mở lại ứng dụng.
- Không thấy thông tin trên
phpinfo()
: Đảm bảo bạn đang kiểm tra đúng phiên bản PHP hoạt động trên ServBay và trang web chạy extension này; nếu có nhiều phiên bản PHP hoặc nhiều site, hãy xác minh đúng môi trường.
Tổng kết
Bạn hoàn toàn có thể nạp thành công ionCube Loader hoặc extension PHP dưới dạng .so
bên ngoài cho từng phiên bản PHP do ServBay quản lý bằng việc tuân thủ các bước chi tiết trên. Điều quan trọng là xác định đúng phiên bản PHP mục tiêu, kiểm tra chính xác thư mục cài extension (extension_dir
), chắc chắn file mở rộng tương thích, và viết chỉ thị cấu hình chuẩn xác ở mục Additional Parameters (zend_extension
hoặc extension
). Nếu phát sinh lỗi, hãy đối chiếu từng bước với mục khắc phục lỗi—đặc biệt lưu ý về tính tương thích kiến trúc hệ điều hành và đường dẫn file.