基于CodeIgniter的PHP应用Windows下报Mcrypt扩展缺失错误求助
针对你遇到的这个「相同XAMPP安装包和代码,部分Windows 10机器报错The Encrypt library requires the Mcrypt extension,部分正常」的问题,我结合实际排查经验整理了几个可行的解决方向,你可以逐一尝试:
1. 确认修改的是正确的php.ini文件
XAMPP环境里通常存在多个php.ini副本(比如PHP根目录下的和Apache/bin目录下的),很多人会改错文件导致无效。你可以在CodeIgniter项目里新建一个临时文件phpinfo.php,内容如下:
<?php phpinfo(); ?>
访问这个文件后,找到Loaded Configuration File项,它显示的就是当前Apache实际加载的php.ini路径。找到这个文件,打开后定位到;extension=mcrypt(PHP 7.x及以上可能是;extension=mcrypt.dll),去掉前面的分号,保存后完全重启Apache服务(停止后再启动,不要仅刷新)。
2. 验证Mcrypt扩展文件的完整性与路径
- 打开XAMPP的
php/ext目录,确认存在php_mcrypt.dll文件。如果缺失,可能是安装包损坏,重新解压同一XAMPP安装包覆盖即可。 - 把XAMPP的
php目录和php/ext目录添加到系统的PATH环境变量中:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在系统变量的Path里添加这两个路径,然后重启电脑生效。这能避免Apache加载扩展时找不到依赖文件。
3. 切换CodeIgniter的加密驱动(绕开Mcrypt依赖)
旧版CodeIgniter默认使用Mcrypt作为加密驱动,但如果你的PHP版本在5.6及以上,已经支持更稳定的OpenSSL驱动。你可以修改application/config/config.php中的配置:
// 找到这一行,把'mcrypt'改成'openssl' $config['encryption_driver'] = 'openssl';
修改后无需依赖Mcrypt扩展,大部分场景下都能正常运行,这也是最快捷的替代方案。
4. 安装对应版本的VC++运行库
Mcrypt扩展的加载依赖Visual C++ Redistributable运行库,不同版本的PHP对应不同的VC库(比如PHP 7.0+对应VC14,PHP 5.6对应VC11)。有些机器可能之前已经安装过,有些没有,导致扩展加载失败。你可以下载并安装与你的XAMPP中PHP版本匹配的VC++运行库,安装后重启电脑再测试。
5. 查看Apache错误日志定位具体问题
如果以上方法都无效,打开XAMPP的apache/logs/error.log文件,搜索「mcrypt」相关的错误信息。日志里会明确提示扩展加载失败的原因(比如「找不到指定的模块」「依赖缺失」等),根据具体提示再针对性解决。
内容的提问来源于stack exchange,提问作者Rahul Kumar Singh

