SG11在线加密系统使用教程(PHP 开发指南)
SG11 是一款广泛用于 PHP 源码保护的商业混淆与加密工具,其核心能力是将 PHP 脚本编译为不可逆的字节码,并绑定至特定服务器环境(如域名、IP 或硬件指纹),有效防止代码泄露与非法复用。本文以 PHP 8.1 环境为例,介绍 SG11 的典型集成流程与关键注意事项。
一、环境准备
确保已安装 SG11 扩展(非开源组件,需从官方获取):
; php.ini 中启用扩展(Linux 示例)
extension=sg11.so
; Windows 示例
; extension=php_sg11.dll
重启 Web 服务后,运行 php -m | grep sg11 验证加载成功。
二、基础加密调用示例
SG11 提供 sg11_encode() 函数对字符串或文件内容进行加密(仅限授权环境):
<?php
// 示例:加密配置密钥(生产环境慎用明文!)
$raw_key = 'my_secret_api_key_2024';
$encrypted = sg11_encode($raw_key);
if ($encrypted === false) {
throw new RuntimeException('SG11 加密失败:' . sg11_last_error());
}
echo "加密结果: " . base64_encode($encrypted) . "\n";
// 解密需在同环境调用(SG11 自动处理)
$decrypted = sg11_decode($encrypted);
echo "解密验证: " . ($decrypted === $raw_key ? '✓ 成功' : '✗ 失败');
?>
三、源码保护实践(推荐方案)
实际项目中,应优先使用 SG11 CLI 工具预编译 PHP 文件(不建议在运行时动态加密业务逻辑):
# 命令行加密单个文件(需 SG11 授权许可)
sg11 --input index.php --output index.php.sg11 --domain example.com
# 加密整个目录(排除敏感配置)
sg11 --input ./src/ --output ./dist/ --ip 192.168.1.100 --exclude config/*.php
部署时,将生成的 .sg11 文件替换原 PHP 文件,SG11 扩展会自动识别并执行。
✅ 最佳实践:仅对核心业务逻辑(如支付验证、算法模块)启用 SG11;数据库配置、路由定义等保持明文,便于运维调试。
⚠️ 重要提醒:SG11 加密后无法还原源码,请务必在加密前备份原始文件;且加密文件仅能在授权服务器运行,本地开发环境需保留未加密版本。
四、错误排查
常见问题可通过以下方式诊断:
<?php
// 检查扩展状态
if (!function_exists('sg11_encode')) {
die("SG11 扩展未启用,请检查 php.ini 配置");
}
// 获取详细错误信息
if (sg11_encode('test') === false) {
error_log('SG11 错误: ' . sg11_last_error());
}
?>
若提示 "License expired" 或 "Domain mismatch",请核对授权证书有效期及绑定域名/IP 是否匹配当前服务器。
SG11 并非万能方案——它提升的是破解门槛,而非绝对安全。建议结合代码审计、最小权限原则与 Web 应用防火墙(WAF)构建纵深防御体系。
注:本文基于 SG11 v4.8 官方文档编写,具体参数请以最新版 SG11 Developer Docs 为准。
```