如何在 ServBay 中加载第三方 PHP 扩展
ServBay 已經為用戶附帶了常用的 PHP 扩展模块,用戶只需要在 ServBay 的 語言
- PHP 版本
- 擴展
中進行配置和啟用即可。
但有時候,用戶需要加載 ServBay 中沒有附帶的模塊,本文將闡述如何實現這一過程。
ServBay 允許用戶靈活地為其管理的 PHP 環境加載第三方擴展。本文檔將以 ionCube Loader 為例,指導您完成整個過程。這個過程對於加載其他 Zend 擴展或 用戶自行編譯 的 PHP 擴展(.so
文件)也具有參考意義。
注意: ionCube Loader 是一個 Zend 擴展,因此在配置時需要使用 zend_extension
指令,而不是 extension
指令。
前提條件
- 您已經安裝並運行了 ServBay。
- 您擁有管理員權限,可以訪問系統文件和 ServBay 配置界面。
- 您熟悉使用 macOS 的終端(Terminal)應用程序。
注意
ServBay 為 Intel 和 Silicon(M1/M2/M3/M4) 芯片均提供了原生架構的 PHP 軟體包,在加載 so
文件時,務必確認您所加載的 so
文件編譯架構與 ServBay 的軟體包架構一致。
不同架構的文件不能混用,架構不一致將會導致 PHP 崩潰。
- 確定 ServBay 附帶的 PHP 軟體包架構:
file /Applications/ServBay/package/php/8.3/current/bin/php
輸出的資訊類似:
php: Mach-O 64-bit executable arm64 # Silicon Arm64架構
php: Mach-O 64-bit executable x86_64 # Intel x86架構
2
- 確定需要安裝的
so
文件架構:
file xdebug.so
輸出的資訊類似:
xdebug.so: Mach-O 64-bit bundle arm64 # Silicon Arm64架構
xdebug.so: Mach-O 64-bit bundle x86_64 # Intel x86架構
2
操作步驟
步驟 1:下載 ionCube Loader
- 訪問 ionCube Loader 的官方下载页面。對於 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 版本和擴展目錄
打開 ServBay 應用程序。
在左側導航欄中,點擊 Languages。
在右側列表中,找到您想要為其安裝 ionCube Loader 的 PHP 版本(例如,本例中為 PHP 8.3)。請記下這個版本號。
ServBay 的 PHP 擴展通常存放在特定路徑下。根據 ServBay 的標準安裝結構和截圖示例,PHP 8.3 的擴展目錄可能類似於:
/Applications/ServBay/package/php/8.3/8.3.16/lib/php/extensions/no-debug-non-zts-20230831/
/Applications/ServBay/package/php/
是 ServBay PHP 包的基礎路徑。8.3/
是主版本目錄。8.3.16/
是具體的 PHP 版本目錄(請根據您實際安裝的版本調整)。lib/php/extensions/
是擴展目錄的父目錄。no-debug-non-zts-xxxxxxxx/
是具體的 API 版本和編譯選項目錄(這個目錄名會隨 PHP 版本變化)。
重要: 您需要根據您 ServBay 中 實際安裝的 PHP 版本 和 架構 確定或找到這個確切的路徑。您也可以通過終端命令查找(確保使用 ServBay 管理的 PHP 路徑):
bash/Applications/ServBay/package/php/8.3/current/bin/php -i | grep extension_dir
1將
/Applications/ServBay/package/php/8.3/current/bin/php
替換為您目標 PHP 版本的實際php
可執行文件路徑。命令輸出會顯示extension_dir => /path/to/extension/directory
。
步驟 3:解壓並放置 Loader 文件
- 打開終端(Terminal)應用程序。
- 使用
cd
命令進入您下載.tar.gz
文件的目錄(通常是Downloads
目錄)。bashcd ~/Downloads
1 - 解壓縮下載的文件:bash這會創建一個名為
tar -zxvf ioncube_loaders_dar_arm64.tar.gz
1ioncube
的目錄。 - 進入
ioncube
目錄:bashcd ioncube
1 - 在此目錄中,您會看到對應不同 PHP 版本的
.so
文件,例如ioncube_loader_dar_8.3.so
。找到與您目標 PHP 版本(步驟 2 中確定的版本,例如 8.3)匹配的文件。 - 將這個匹配的
.so
文件複製到您在步驟 2 中確定的 PHP 擴展目錄。假設目標目錄是前面示例的路徑,並且您要安裝 PHP 8.3 的 Loader: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- 請務必將目標路徑替換為您 PHP 版本的 實際擴展目錄路徑。
- 確保複製的是與 PHP 版本完全匹配的
.so
文件。
步驟 4:在 ServBay 中配置 PHP
回到 ServBay 應用程序界面。
確保左側 Languages 已選中,然後在右側列表中點擊您要配置的 PHP 版本(例如 PHP 8.3)。
在右側展開的配置區域中,點擊 PHP 標籤頁(如下圖箭頭 1 所示)。
向下滾動找到 Additional Parameters(附加參數)文本框。
在此文本框中,添加以下一行(如下圖箭頭 2 所示),指定 ionCube Loader 文件的 相對路徑:
inizend_extension = ioncube_loader_dar_8.3.so
1- 再次強調:
so
文件必須嚴格放置在步驟 3 所獲得的extension_dir
路徑中。請仔細檢查。 - 使用
zend_extension
而不是extension
,因為 ionCube Loader 是 Zend 擴展。 - 如果此文本框中已有其他配置,請在新的一行添加此指令。
- 再次強調:
點擊右下角的 Save 按鈕保存配置。
步驟 5:重啟 PHP 服務
在點擊保存按鈕後,ServBay 已經自動重啟了 PHP 服務。
步驟 6:驗證加載是否成功
可以通過兩種方式驗證 ionCube Loader 是否已成功加載:
通過命令行:
打開終端。
運行以下命令(確保使用目標 PHP 版本的完整路徑):
bash/Applications/ServBay/package/php/8.3/current/bin/php -m | grep -i ioncube
1如果成功加載,您應該能看到類似
ionCube Loader
的輸出。您也可以運行
php -v
查看版本信息,通常加載了 ionCube 後會顯示相關信息:bash/Applications/ServBay/package/php/8.3/current/bin/php -v
1輸出示例:
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
通過 phpinfo():
- 創建一個包含
<?php phpinfo(); ?>
內容的 PHP 文件(例如info.php
)並將其放置在您網站的根目錄下。 - 通過瀏覽器訪問該文件 (例如
http://your-local-site.test/info.php
)。 - 在
phpinfo()
輸出頁面中搜索 "ionCube"。如果加載成功,您會看到一個專門的 ionCube Loader 信息區塊,顯示其版本等詳細信息。
- 創建一個包含
總結
按照以上步驟,您應該能夠成功地為 ServBay 管理的特定 PHP 版本加載 ionCube Loader 或其他第三方 PHP 擴展。關鍵在於找到正確的擴展文件、確定正確的 PHP 擴展目錄、在 ServBay 配置中添加正確的指令(zend_extension
或 extension
)。如果遇到問題,請仔細檢查路徑、文件權限以及是否重啟了 PHP 服務。