SG11在线加密系统使用教程(PHP 开发指南)
注意:SG11 并非官方标准加密协议,而是国内部分 PHP 混淆/保护工具(如 SourceGuardian 的旧称 SG11)的俗称。本文所指为基于 SourceGuardian v11+ 的 PHP 代码加密与部署实践,适用于企业级源码保护场景。
一、环境准备
确保运行环境满足以下要求:
- PHP 版本:7.2–8.2(SG11 不支持 PHP 8.3+)
- 已安装
SourceGuardian Loader(需匹配 PHP SAPI 类型,如php_sguard.dll或ixed.7.4.lin) - 验证加载:在
phpinfo()中搜索sourceguardian确认启用
二、加密流程(本地开发端)
使用官方 SourceGuardian Encoder 工具(GUI 或 CLI)加密 PHP 文件。PHP 端无需调用加密逻辑——加密是编译时行为,非运行时函数。
✅ 正确做法(命令行示例):
# Linux/macOS 示例(需下载 Encoder CLI)
./encoder --encode --phpver 7.4 --license /path/to/license.key \
--output ./protected/ index.php config.php
❌ 错误认知:SG11 不是像 openssl_encrypt() 那样的运行时加密函数,PHP 代码中 不包含任何 SG11 加密 API 调用。
三、部署与运行(服务器端)
加密后的文件(如 index.php.ixed 或直接覆盖原文件)可直接被 PHP 解析,前提是 Loader 已正确加载:
<?php
// 无需任何额外代码 —— SG11 文件由 Loader 自动识别并解密执行
echo "Hello from protected code! PHP version: " . PHP_VERSION;
require_once 'config.php.ixed'; // 或直接 require 'config.php';
?>
四、关键配置检查(php.ini)
确保 php.ini 包含以下配置(路径根据系统调整):
; Linux 示例
zend_extension=/usr/lib/php/20200930/ixed.7.4.lin
; Windows 示例
zend_extension="C:\php\ext\php_sguard.dll"
; 启用保护(可选)
sourceguardian.enable=1
sourceguardian.restrictions=0
⚠️ 重要提醒:SG11 加密后无法反编译还原源码,但存在兼容性风险(如扩展冲突、OPcache 异常)。建议加密前完整测试,并始终保留原始源码备份。
五、常见问题速查
- 报错 “SourceGuardian loader not installed” → 检查
zend_extension路径及权限,重启 Web 服务 - 加密文件空白或 500 错误 → 确认 PHP 版本与 Encoder 版本严格一致(如 7.4.33 必须用 7.4 Encoder)
- 无法加载 .ixed 文件 → 使用
sg_loadtest工具诊断 Loader 兼容性
SG11 是成熟的商业级 PHP 保护方案,其价值在于部署即生效、零侵入式集成。开发者只需专注业务逻辑,安全交付交由 Encoder 与 Loader 协同完成。
```