当前位置:首页 > 虚拟主机 > 正文

ssl虚拟主机安装sg11扩展

宝塔面板的软件商店搜索“sg11”,按提示上传、解压并安装拓展文件,完成后重启服务器即可,注意SG11为组件加密,部分虚拟主机可能不适用。

前置条件确认

检查项 要求 备注
PHP版本兼容性 确保服务器已安装PHP 7.2及以上版本(推荐使用官方稳定版) 可通过php -v命令验证
Zend Guard Loader支持 虚拟主机环境需启用Zend Guard Loader组件(部分面板默认关闭) cPanel/DirectAdmin中开启
源码获取途径 从SourceGuardian官网下载对应系统的SG11扩展包(分Linux/Windows版本) https://www.sourceguardian.com/download.php
备份策略 操作前完整备份现有网站文件、数据库及配置文件 防止回滚失败导致数据丢失

安装步骤详解

Linux系统(以CentOS为例)

  1. 上传扩展文件
    将下载的ixed.<版本号>.lin(如ixed.7.4.lin)、loader.so及相关配置文件通过FTP/SCP上传至服务器目录(建议放在/usr/local/src/)。

    # 示例:创建专用存储路径并移动文件
    mkdir -p /usr/local/src/sg11 && mv ixed.7.4.lin loader.so /usr/local/src/sg11/
  2. 修改PHP配置文件(php.ini)
    添加以下两行到全局或用户级php.ini中:

    zend_extension="/usr/local/src/sg11/loader.so"
    zend_loader_file="/usr/local/src/sg11/ixed.7.4.lin"

    ️ 注意路径需与实际存放位置一致,可先测试路径有效性:/path/to/php -d zend_extension=...

  3. 重启Web服务生效配置
    根据使用的Web服务器类型执行对应命令:

    • Apache: systemctl restart httpdservice httpd restart
    • Nginx+PHP-FPM: systemctl restart php-fpm
    • 验证加载状态:php -m | grep sourceguardian 应显示SourceGuardian模块已启用。

Windows系统

  1. 放置DLL文件
    将下载的php_sg11.dll复制到PHP安装目录下的ext文件夹(如C:Program FilesPHP74ext)。

  2. 编辑php.ini启用扩展
    取消注释或新增以下行:

    extension=php_sg11.dll
    zend_loader_file="C:Program FilesPHP74extixed.7.4.win"

    ▶️ 提示:若报错“无法找到指定模块”,检查DLL是否匹配当前PHP架构(x86/x64)。

  3. 重启IIS/Apache服务
    通过“服务”管理器重启对应服务,或命令行执行:

    iisreset /restart      # IIS用户
    httpd -k restart       # Apache用户

SSL证书关联配置(关键!)

由于SG11依赖加密授权机制,必须确保每个站点独立绑定有效的license.key文件:

  1. 为每个虚拟主机创建专属目录(如/var/www/vhosts/domain.com/sg11/),存放该域名对应的license.key
  2. 在网站入口文件(如index.php)头部添加初始化代码:
    <?php
    // 指向当前站点的授权密钥路径
    sg11_set_key_file('/var/www/vhosts/domain.com/sg11/license.key');
    ?>
  3. 测试加密功能是否正常:访问被保护的页面,观察是否弹出SourceGuardian授权对话框。

常见问题排查指南

现象 可能原因 解决方案
“Call to undefined function”错误 未正确加载SG11模块 检查php.ini路径是否正确,重启服务后再次验证模块加载状态
授权对话框不显示 license.key路径配置错误 确认绝对路径存在且权限可读(建议设置为644)
HTTPS环境下混合内容阻止 旧版SG11不支持TLS 1.3+ 升级至最新SG11版本(≥11.0.3),并更新PHP至8.0+

相关问题与解答

Q1: 为什么安装SG11后部分加密功能失效?
A: 最常见原因是未为每个虚拟主机单独配置license.key文件,SG11采用站点级授权机制,必须确保每个域名都有独立的密钥文件,并在代码中通过sg11_set_key_file()指定路径,检查PHP错误日志是否存在“Invalid license key”提示。

ssl虚拟主机安装sg11扩展  第1张

Q2: SSL环境下如何避免SG11导致的混合内容警告?
A: 需同时满足两个条件:①使用最新版本的SG11(支持TLS 1.3);②确保所有资源(包括授权验证请求)均通过HTTPS协议加载,可在php.ini中强制启用SSL验证:sg11.force_ssl=On,并重定向所有HTTP

0