SG11在线加密系统使用教程(PHP 开发指南)
SG11 是一款广泛用于 PHP 源码保护的商业混淆与加密工具,其核心为 Zend 引擎级扩展(sg11.so 或 php_sg11.dll),支持 PHP 5.3–8.2。需注意:SG11 本身不提供“在线加密服务”——所谓“SG11在线加密系统”实为第三方封装的 Web 接口(如基于 sg11-cli 的 REST API),本文以典型集成方式为例,介绍如何在 PHP 项目中安全调用其加密能力。
✅ 前置准备
- 已安装 SG11 扩展(Linux 下执行
php -m | grep sg11验证) - 获取合法授权文件(
sg11.lic)并置于项目根目录或指定路径 - 确保目标 PHP 文件无语法错误(SG11 加密前会严格校验)
🔧 本地 CLI 加密示例(推荐)
SG11 官方提供命令行工具 sg11-cli,可集成至构建流程:
# 加密单个文件(保留原始结构)
sg11-cli --input=index.php --output=dist/index.php --license=./sg11.lic
# 批量加密整个目录(排除 .git、vendor 等)
sg11-cli --input=./src --output=./dist --exclude=".git|vendor|tests" --license=./sg11.lic
🌐 模拟“在线加密系统”调用(PHP 封装)
若需通过 HTTP 接口调用远程加密服务(如内部 DevOps 平台),可使用以下安全封装:
<?php
function encryptViaSG11API(string $sourceCode, string $licenseKey): array
{
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://api.your-company.com/sg11/encrypt',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'code' => base64_encode($sourceCode),
'license' => $licenseKey,
'php_version' => PHP_VERSION_ID,
]),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_SSL_VERIFYPEER => false, // 生产环境请启用证书验证
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200) {
throw new RuntimeException("加密服务异常:HTTP {$httpCode}");
}
$result = json_decode($response, true);
if (empty($result['success']) || empty($result['encrypted'])) {
throw new RuntimeException("加密失败:" . ($result['error'] ?? '未知错误'));
}
return [
'encrypted_code' => base64_decode($result['encrypted']),
'checksum' => $result['checksum'] ?? md5($result['encrypted'])
];
}
// 使用示例
try {
$raw = file_get_contents('./src/app.php');
$result = encryptViaSG11API($raw, 'your-license-key-here');
file_put_contents('./dist/app.php', $result['encrypted_code']);
echo "✅ 加密完成,校验和:{$result['checksum']}\n";
} catch (Exception $e) {
error_log('SG11加密失败:' . $e->getMessage());
die('加密服务不可用,请检查配置');
}
?>
💡 提示:生产环境中建议将加密操作移至 CI/CD 流水线(如 GitHub Actions),避免敏感 License Key 泄露;严禁在客户端暴露加密接口。
⚠️ 重要提醒:SG11 加密后代码仅能在安装对应 SG11 扩展的服务器上运行。部署前务必确认目标环境已正确加载扩展:
php -r "if (extension_loaded('sg11')) echo 'SG11 OK'; else echo 'MISSING';"
掌握 SG11 的正确集成方式,可有效保护核心业务逻辑。但请始终牢记:代码安全 = 技术防护 + 流程管控 + 权限最小化。加密只是纵深防御的一环,切勿过度依赖。
本文基于 SG11 v8.x 编写,具体参数请参考官方文档:https://www.phpsg11.com/
```