IonCube Loader 必须与 XAMPP 中 PHP 版本、TS/NTS 模式、x86/x64 架构完全匹配;需将对应 DLL 放入 php\ioncube\ 目录,用 zend_extension 在 php.ini 开头绝对路径加载,并在 Apache 和 CLI 的两个 php.ini 中均配置,最后通过 phpinfo 和 test_encoder.php 验证。

确认 PHP 版本和架构是否匹配 IonCube 包
IonCube Loader 必须与 XAMPP 中实际运行的 PHP 版本、线程安全(TS/NTS)模式、架构(x86/x64)完全一致,否则 php -v 会直接报错或静默失效。XAMPP 默认启用 TS(Thread Safe)版本,且多数 Windows 版本仍为 x86 架构,哪怕系统是 64 位——这点极易被忽略。
在 XAMPP 控制面板点 Shell,执行:
php -v<br>php -i | findstr "Architecture Thread"
输出中需明确看到类似 PHP 8.2.12 (cli) (built: ...) 和 Thread Safety => enabled、Architecture => x86。然后去 ioncube.com/loaders.php 下载对应包(例如 ioncube_loaders_win_x86.zip),解压后找到 ioncube_loader_win_8.2.dll 这类文件名含 PHP 主版本号的 DLL。
将 ioncube_loader_win_X.X.dll 放入正确的扩展目录
XAMPP 的 PHP 扩展路径不是 php/ext,而是 php\ioncube\ ——这个目录默认不存在,需手动创建。放错位置会导致 extension=ioncube_loader_win_8.2.dll 加载失败,且错误日志里只显示“unable to load dynamic library”,不提示路径问题。
操作步骤:
- 进入 XAMPP 安装目录(如
C:\xampp),在php\下新建文件夹ioncube - 把下载解压出的
ioncube_loader_win_8.2.dll(注意版本号匹配)复制进该目录 - 不要改名、不要放子目录、不要用符号链接
在 php.ini 中正确启用并前置加载
IonCube Loader 必须在所有其他扩展之前加载,否则可能因依赖冲突导致 PHP 启动失败或部分加密脚本白屏。XAMPP 有两个 php.ini:一个用于 Apache(apache\bin\php.ini),一个用于 CLI(php\php.ini),两者都要改。
在 [Extension List] 段最开头插入:
; IonCube Loader<br>zend_extension = "C:\xampp\php\ioncube\ioncube_loader_win_8.2.dll"
注意使用 zend_extension(不是 extension),路径用双引号包裹,且必须是绝对路径(XAMPP 不支持相对路径或 %PHP_HOME% 这类变量)。改完后重启 Apache;若 CLI 下 php -m | findstr ioncube 无输出,说明 CLI 的 php.ini 没改对。
验证是否生效及常见失败信号
成功加载后,访问 http://localhost/xampp/phpinfo.php 页面,搜索 ionCube PHP Loader,应看到版本号和“enabled”。但更关键的是测试行为:
- 新建
test-enc.php,内容为<?php echo "ok"; ?>—— 正常输出,说明基础环境没崩 - 用官方提供的 test_encoder.php(需下载)上传到
htdocs,访问它;若页面显示IonCube Loader is installed and working,才算真正可用 - 若出现
Zend OPcache is disabled提示,不用管——IonCube 和 OPcache 可共存,但某些旧版 IonCube 会禁用 OPcache,新版已修复 - 若 Apache 启动失败,检查 Windows 事件查看器中的 Application 日志,错误通常指向 DLL 路径或架构不匹配
最麻烦的情况是“看起来启用了,但加密脚本仍报 require_once(): Failed opening required”——这往往是因为脚本本身用的是 PHP 7.x 加密,而你装了 PHP 8.x 的 loader,反过来也一样。版本必须严格对齐,不能靠“差不多”。

















