适用对象:购买了基于 SourceGuardian 加密的 PHP 程序(微擎模块、易优 CMS 插件、ShopNC 商城、快威等)的站长。
一句话结论:宝塔面板的 PHP 扩展列表里找到sourceguardian点一键安装,全程不超过 2 分钟。下文附带版本对照、手动安装方案以及加密端工具配置说明。
一、为什么需要装 SourceGuardian?
SourceGuardian(简称 SG)是 PHP 领域最主流的源码加密方案。大量第三方程序和商业模块为了防止核心代码被反编译或盗用,都会用 SG 对.php文件做加密处理。加密后的文件头部带有sg_load(...)特征码,普通 PHP 运行时无法识别。
如果服务器没装对应的 Loader(即ixed.*扩展),访问网站会报:
This protected script was encoded with SourceGuardian and requires a SourceGuardian loader 'ixed.' to be installed.中文环境下通常显示:“产品使用提示未安装 SourceGuardian 组件。”
原理清楚了,这一步也就不难:加密端用 SG 把源码封装了,运行端(你的服务器)必须装对应 Loader 才能解包执行。装 Loader 不是可选,是必须。
二、加密版本和 Loader 版本必须一致,这是铁律
SourceGuardian 有多个版本,不同版本对 PHP 的支持范围不一样。选错版本必然报 “Incompatible loader version”。
代码卫士 SG16 Pro 界面给出了完整的版本对照表,可以直接作为选型参考:
加密版本 支持的 PHP 版本 是否支持虚拟机
SG11 PHP 4.4 ~ 7.4 否
SG12 PHP 4.4 ~ 8.0 否
SG13 PHP 5.3 ~ 8.1 否
SG14 PHP 5.3 ~ 8.2 否
SG15 PHP 5.3 ~ 8.3 否
SG16 PHP 5.3 ~ 8.4 否
SG16 Pro PHP 5.3 ~ 8.4 是
选版本遵循两条原则:
- 程序用什么版本加密,服务器就装什么版本的 Loader。SG14 加密的程序,必须装 SG14 Loader,装 SG11 或 SG12 都会报错。
- 新 PHP 版本建议用新 Loader。PHP 8.x 环境直接用 SG16 或 SG16 Pro,向前兼容,覆盖范围最宽。
SG16 Pro 还支持虚拟机保护,下面细说。
三、宝塔面板一键安装(推荐)
宝塔已经把 SourceGuardian Loader 集成进 PHP 扩展列表,无需编译,无需手动下载。代码卫士的界面里也专门标了这一提示:宝塔面板可在 PHP 扩展中一键安装 SourceGuardian Loader。
第 1 步:确认 PHP 版本
登录宝塔面板 → 左侧"网站" → 找到目标网站 → 点击"设置" → 顶部"PHP 版本"选项卡,记下当前版本号,比如 8.2。
第 2 步:安装扩展
- 进入该 PHP 版本的"设置"页面。
- 切换到“安装扩展”选项卡。
- 在列表中找到
sourceguardian(部分面板显示ixed或sg11),点击“安装”。 - 等待安装完成,点击“重启”让 PHP-FPM 重新加载扩展。
通常 1 分钟内完成。
第 3 步:验证
在网站根目录创建phpinfo.php:
<?phpphpinfo();?>浏览器访问后搜索sourceguardian,能看到扩展信息块即表示安装成功。验证完记得删除该文件,避免泄露服务器环境。
四、手动安装:下载文件、上传扩展目录、修改 php.ini
部分老版本宝塔或自定义编译的 PHP 环境可能没有内置一键扩展,此时需要手动上传ixed文件。
1. 获取 ixed 文件
- 访问程序供应商报错页面上的 “Click here” 链接,会自动检测当前环境并给出匹配的 ixed 下载。
- 去 SourceGuardian 官网运行在线检测脚本,自动匹配 PHP 版本、操作系统、线程安全模式。
- 加密工具平台在配置界面通常也会附带 Loader 下载入口。
文件名形如ixed.8.0.lin(Linux)或ixed.7.4.dll(Windows)。
2. 上传到扩展目录
宝塔面板 → "文件"菜单,进入扩展目录:
/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/具体路径可以用命令确认:
php-i|grepextension_dir3. 修改 php.ini
宝塔 → “PHP 管理” → “配置文件”,在末尾追加(以 PHP 8.0 为例):
zend_extension = /www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/ixed.8.0.lin点击"重启"保存。
4. 验证
同样用phpinfo()检查扩展是否已加载。
五、Linux 下 hybrid 模式需要额外配置
这一步容易被忽略。界面专门提示了:
Linux 环境下,如果 PHP 使用 hybrid 模式编译,需要在 php.ini 中额外添加:
sourceguardian.enable_vm_hybrid=1添加位置同样在宝塔 → “PHP 管理” → "配置文件"末尾,保存后重启 PHP-FPM。
Windows 和 macOS 平台不受此限制,无需额外配置。
六、报错速查表:从 Loader 版本不匹配到 hybrid 未配置
报错信息 原因 解决办法
Incompatible loader version Loader 版本和加密版本不匹配 按对照表重新选版本重装
encoded with newer version 加密版本高于 Loader 升级 Loader(如 SG11 → SG14)
Loader 无法加载 Windows 装了 .lin,或 ZTS/NTS 不匹配 下载对应 .dll;phpinfo 里 Thread Safety enabled=ZTS,disabled=NTS
多站点一个能用一个不能用 每个 PHP 版本需单独装扩展 为每个 PHP 版本分别安装
Linux 部署异常 hybrid 模式未配置 php.ini 添加sourceguardian.enable_vm_hybrid=1
七、从安装 Loader 到加密交付:代码卫士 SG16 Pro 功能详解
到这里 Loader 装好了,别人的加密程序能正常跑了。但如果你自己也在做商业交付(开发商城系统卖给客户、做私有化部署的 SaaS 模块、或者授权制插件),那你的核心源码同样面临被反编译、被二次倒卖的风险。
这时候你需要的是加密端工具。SourceGuardian 官方授权体系门槛较高,普通个人开发者和中小团队用起来并不方便。国内有不少轻量替代方案,其中代码卫士 SG16 Pro(php.x5.chat)是我自己在用的。(仅参考)
结合它的加密配置界面,整理出对商业开发者比较实用的几个功能点:
1. 加密模式:标准加密 vs 虚拟机 + 字节码混淆
"加密模式"一栏提供两个选项:
- 普通版 - 标准加密:即 SourceGuardian 原生的文本级保护,上手简单。
- Pro 版 - 虚拟机 + 字节码混淆:将 PHP 源码编译成字节码,在虚拟机中解释执行。攻击者拿到文件看到的也是字节码而不是源码,安全等级明显提升。
该工具标注这项功能仅 SG16 Pro 支持,其他版本都不支持。如果程序倒卖风险较高,可考虑 Pro 模式。
2. 版本选择:SG11 ~ SG16 Pro 全覆盖
界面上一次列出全部版本选项:
SG16 Pro (推荐) SG16 SG15 SG14 SG13 SG12 SG11配套有完整的 PHP 版本对照表(见本文第二节),不必去翻外部文档。
3. PHP 版本多选
加密时可以从 PHP 5.3 ~ 8.4 中勾选任意组合,同一个文件兼容多个 PHP 版本。部署方不管跑的是 7.4 还是 8.3,加密文件都能正常执行。这点对需要给多个客户交付、环境各异的开发者比较实用。
4. 服务器锁定:域名、IP、MAC 地址、机器 ID
"锁定选项"这一栏支持四项绑定:
- 域名限制:支持通配符,比如
*.example.com,匹配shop.example.com和admin.example.com。 - IP 地址:限定服务器出口 IP。
- MAC 地址:绑定网卡硬件地址。
- 机器 ID:绑定服务器唯一标识。
这几项可以组合使用。典型场景:卖一套系统给客户,绑定客户的域名和 IP,客户换了服务器需要重新激活,有效防止一套授权被复制到多台机器。
5. 外部许可证管理(.lic 文件)
"外部许可证"这一栏提供了完整的授权分发能力:
- 启用后,加密文件需要配合
.lic许可证文件才能运行。 - 在"生成许可证"页面创建许可证,绑定项目 ID 和密码,与加密时设置的完全一致。
- 支持单独给客户生成许可证,而不是把文件直接交付。
对订阅制、年费制、按实例收费的商业模式较为适用。客户到期续费,重新签发.lic即可;不续费就收回,无需远程登录服务器改文件。
6. 错误处理风格:中文提示 vs 默认英文
"错误处理风格"一栏可选中文提示。部署方装错 Loader 或许可证过期时看到的是中文报错,而不是满屏英文。能减少客服解释的工作量。对方不用翻译,就知道该装哪个版本的 Loader。
7. 版权注释
加密时可在文件头部添加自定义注释,比如"禁止反编译"或写上你的公司信息。本身不增加防护,但被破解或盗用时能起到声明作用。
8. 上传方式与限制
界面明确标注了使用边界,不需要装完了才发现加密失败:
- 仅支持 ZIP 压缩格式。
- 单包最大 5MB。
- 单次最多 100 个 PHP 文件。
- 文件名不能包含中文字符,建议使用英文和数字。
9. 宝塔兼容
界面直接标了提示:宝塔面板可在 PHP 扩展中一键安装 SourceGuardian Loader。前面教程就是基于这条提示写的。
总结:纯自用场景,装好 Loader 跑通别人的加密程序即可;若涉及商业交付、授权制软件或私有化部署,加密端工具通常需要兼顾混淆强度、服务器绑定与许可证分发。代码卫士 SG16 Pro 在这几项上的组合相对完整,可作为选型参考(项目地址:php.x5.chat)。
本文整理自代码卫士 SG16 Pro 加密工具界面功能说明及相关资料。如遇本文未覆盖的报错,可以提供 PHP 版本、Loader 文件名和完整报错信息,进一步排查。