必须手动匹配ixed.lin文件与PHP的ABI、ZTS、架构和版本号,关键依据是php -i中Zend Extension Build字段(如API20220829,NTS,x86_64),而非php -v显示的版本名;需从SourceGuardian官网按ABI+ZTS/NTS+架构精准下载对应loader,放入extension_dir并以绝对路径在php.ini中添加zend_extension指令,且Loader版本不得低于加密工具版本。

SourceGuardian 扩展在 phpEnv 环境下无法直接通过图形界面安装,必须手动匹配 ixed.lin 文件与当前 PHP 的 ABI、ZTS、架构和版本号,否则必然报错或白屏。
确认 phpEnv 中 PHP 的精确 ABI 信息
phpEnv 不提供类似宝塔的“一键扩展”入口,所有扩展都依赖你准确识别当前 PHP 实例的编译特征。关键不是看 php -v 显示的 8.1 或 8.3,而是看它底层的 Zend Extension Build 字符串。
- 执行
php -i | grep -E "(PHP Version|Architecture|Thread Safety|Zend Extension Build)",重点关注输出中类似API20220829,NTS,x86_64的字段 - 其中
20220829是 ABI 版本号(对应 PHP 8.2+),NTS表示非线程安全(绝大多数 phpEnv 场景),x86_64是架构 - 若输出含
TS而非NTS,说明是 ZTS 构建,必须下载带ts后缀的ixed.8.x.lin文件;否则用nts版本 - 不要依赖 phpEnv 的“PHP 版本名”,有些环境显示为
php-8.2,实际 ABI 可能是20220829(PHP 8.2)或20230831(PHP 8.3)——ABI 才是 loader 加载的唯一依据
下载并放置正确的 ixed.lin 文件
SourceGuardian 官网不提供 phpEnv 专用包,但提供按 ABI 和架构分类的 Linux 预编译 loader。你必须用上一步确认的 ABI + ZTS/NTS + 架构组合去筛选。
- 访问 https://www.php.cn/link/8dcedd6884e553e55dfb6298a6f6cd94,选择 Linux x86_64(或 arm64,如 M1/M2 Mac 上运行 phpEnv)
- 找到匹配你 ABI 的目录,例如 PHP 8.3 NTS 对应路径是
/loaders.linux-x86_64/nts/,文件名为ixed.8.3.lin - 用
wget下载并放入 PHP 扩展目录:wget https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64/nts/ixed.8.3.lin -O $(php -r "echo ini_get('extension_dir');")/sourceguardian.so - 确保权限正确:
chmod 644 $(php -r "echo ini_get('extension_dir');")/sourceguardian.so
启用扩展并验证是否加载成功
phpEnv 默认不写入全局 php.ini,你需要向当前 PHP 实例生效的配置文件中添加 zend_extension 指令,且必须用绝对路径。
立即学习“PHP免费学习笔记(深入)”;
- 先确认生效的配置文件位置:
php --ini输出中Loaded Configuration File对应的路径 - 编辑该
php.ini,在末尾添加一行:zend_extension = /absolute/path/to/sourceguardian.so(不能用相对路径,也不能漏掉zend_前缀) - 重启你的 Web 服务(如 Apache 或 Nginx + PHP-FPM)或 CLI 环境(如 phpEnv 切换后需重新
phpenv rehash) - 运行
php -m | grep sourceguardian,有输出即表示加载成功;若无,检查错误日志:php --ri sourceguardian会直接提示缺失或 ABI 不匹配
最容易被忽略的是:加密源码所用的 SourceGuardian 工具版本(如 SG14.3)必须 ≤ 服务器上 ixed.lin 的 Loader 版本(如 ixed.8.3.lin 实际对应 SG14.5)。哪怕 ABI 完全匹配,Loader 版本低于加密工具版本,也会静默失败——页面白屏、无错误日志、phpinfo() 里也看不到 SourceGuardian 模块。遇到这种情况,只能升级服务器上的 ixed.lin 文件,而不是降级加密工具。



















