SourceGuardian扩展NTS与TS版本选择_线程安全判断
SourceGuardian(简称sg11)是一款PHP代码加密保护工具,很多商业PHP程序(如某些授权CMS、商城系统、SaaS平台)使用SourceGuardian加密源码,运行这些程序必须在服务器上安装SourceGuardian Loader扩展,否则会提示「SourceGuardian loader is not installed」或页面空白。Linux虚拟主机安装sg11扩展需要确认PHP版本、下载对应扩展文件、配置php.ini、重启PHP,几个环节都要正确。本文详细讲解Linux虚拟主机安装SourceGuardian扩展的完整步骤、版本选择方法、面板配置方式和常见问题排查,帮助站长顺利运行加密PHP程序。
DirectAdmin面板安装sg11。登录DirectAdmin,进入「Extra Features」-「Select PHP Version」,选择PHP版本后进入「Extensions」,勾选sourceguardian保存。如果没有,在「File Manager」中找到php.ini(通常在/usr/local/lib/php.ini或用户目录),添加extension配置,上传.so文件到扩展目录。DirectAdmin的PHP版本切换功能允许用户选择不同PHP版本,每个版本扩展独立,确认在当前使用的版本下配置。部分DirectAdmin主机需要联系服务商安装sg11,因为用户没有权限修改系统扩展目录。
虚拟主机不支持sg11的处理。如果面板中没有SourceGuardian扩展且联系主机商后确认不支持,有几个选择:一是更换支持sg11的虚拟主机,购买前先确认是否支持SourceGuardian(现在主流主机商都预装了sg11);二是如果程序有未加密版本或其他加密方式(如ionCube),换用对应版本;三是升级到VPS或独立服务器,自己安装sg11扩展,VPS环境完全可控,安装扩展很简单。购买虚拟主机前,先在主机商官网查看支持的PHP扩展列表,或联系售前确认是否支持sg11、ionCube、Swoole Loader等加密扩展,避免买了之后程序跑不起来。
配置php.ini加载sg11扩展。打开phpinfo中显示的Loaded Configuration File对应的php.ini文件,在文件末尾添加一行:extension=ixed.7.4.lin(根据你的PHP版本修改文件名,扩展在系统目录时用文件名)或extension=/绝对路径/ixed.7.4.lin(扩展在自定义目录时用绝对路径)。注意SourceGuardian用extension加载,不是zend_extension。有些旧版本说明可能写zend_extension,以官方当前说明为准,现在版本用extension。保存php.ini后重启PHP服务:独立服务器用systemctl restart php-fpm或service php-fpm restart,虚拟主机在面板中重启PHP或切换PHP版本触发重启。重启后访问phpinfo,搜索「sourceguardian」或「ixed」,能看到版本信息说明安装成功。
上传扩展文件到服务器。用FTP或面板文件管理器,把解压后对应PHP版本的ixed.X.X.lin文件上传到PHP的extension_dir目录(phpinfo中查看的路径,通常是/usr/lib/php/20190902或类似)。如果是虚拟主机没有权限写入系统扩展目录,可以放到自己的目录(如/home/user/php_ext/),在php.ini中用绝对路径指定。上传后设置文件权限为644或755。虚拟主机用户如果无法上传到系统扩展目录,联系主机商协助上传,或在面板的PHP扩展管理中查找是否有SourceGuardian可以一键开启。
SourceGuardian与ionCube Loader的区别。两者都是PHP加密代码的加载器,用于运行加密后的PHP程序,功能类似但加密算法不同,互不兼容——用SourceGuardian加密的程序必须装sg11,用ionCube加密的必须装ionCube Loader。一台服务器可以同时安装两个扩展,各自处理对应加密的文件,互不冲突。SourceGuardian的优势是加密强度高、支持PHP版本广(从PHP4到PHP8都有对应版本)、官方更新积极;ionCube的优势是市场占有率高、很多商业程序用ionCube加密、文档丰富。选择哪个加密是程序开发者决定的,用户只需要根据程序要求安装对应的加载器。
sg11与其他加密扩展共存配置。一台服务器上可以同时安装SourceGuardian、ionCube Loader、Swoole Loader、Zend Guard Loader等多个加密扩展,在php.ini中分别添加各自的extension配置即可。注意加载顺序:ionCube和Zend Guard通常要求放在php.ini最前面(在其他extension之前),SourceGuardian和Swoole Loader位置不敏感。如果出现冲突,可以调整顺序测试。多个加密扩展会增加PHP启动时间,但影响很小(几毫秒),内存占用也很低。安装多个扩展时,每个扩展都要匹配PHP版本和线程安全类型,任何一个版本不对都会导致PHP启动失败,出现500错误。
CLI和Web环境sg11不一致的问题。有些站长在phpinfo(Web)中看到sg11已加载,但命令行执行PHP脚本(如定时任务、队列处理)时提示未安装,这是因为CLI和FPM用了不同的php.ini。解决方法:命令行执行php --ini查看CLI加载的php.ini路径(通常是/etc/php/X.X/cli/php.ini),在这个php.ini中也添加extension=ixed.X.X.lin配置,或确认CLI的extension_dir中有扩展文件。虚拟主机的PHP CLI可能和Web用同一套配置,独立服务器通常分开。如果程序有定时任务通过CLI执行(如crontab中的php脚本),务必确保CLI环境也加载了sg11,否则定时任务会失败。
常见报错「Unable to load dynamic library 'ixed.7.4.lin'」的原因。一是文件不存在或路径错误:确认extension_dir目录中有这个文件,文件名拼写正确(大小写敏感,Linux区分大小写)。二是文件权限不足:设置chmod 644 ixed.7.4.lin,确保PHP进程能读取。三是PHP版本不匹配:PHP7.4用了ixed.7.3.lin,版本不对无法加载,重新下载对应版本。四是架构不匹配:64位系统用了32位扩展,或反之,下载对应架构版本。五是文件损坏:下载过程中文件损坏,重新下载并校验MD5。根据报错信息中的具体描述(如「file not found」「wrong ELF class」「undefined symbol」)可以判断具体原因。
站长反馈:「安装sg11加密的商城程序,按官方检测脚本loader.php确认了版本,下载对应ixed.7.4.lin配置php.ini,重启后phpinfo看到sourceguardian,程序正常运行」「cPanel面板在Select PHP Version里勾选sourceguardian就开了,不用手动配置,很方便,之前不知道有这个功能一直在手动装」。
操作提示:安装sg11前用官方loader.php检测脚本确认需要的版本,比自己看phpinfo更准确。下载对应版本的ixed.X.X.lin文件,上传到extension_dir目录,在正确的php.ini中添加extension配置,重启PHP后用phpinfo和测试脚本双重验证。CLI和Web环境都要确认加载,有定时任务的程序特别注意。更新扩展前备份旧.so文件,新版本有问题可以换回。

更新时间:2026-08-27 10:30:21