如何在 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 服务。