Win10 WAMP环境运行php artisan serve报mcrypt扩展加载失败如何解决
问题根因
- PHP 7.2及以上版本官方已正式移除mcrypt扩展,第三方编译的
php_mcrypt.dll需要和你的PHP环境的线程安全属性、架构、VC编译版本完全匹配才能正常加载,你当前下载的dll版本不匹配,所以出现加载失败的报错 - Laravel 5.1及之后的版本已经废弃mcrypt依赖,改用OpenSSL实现加密逻辑,你收到
Mcrypt PHP extension required报错,大概率是使用了5.1以下的过老Laravel版本,或是项目内引入的第三方包依赖mcrypt扩展
优先解决方案(无需安装mcrypt,更安全)
- 升级Laravel版本至5.1及以上官方稳定版,原有加密逻辑可以直接替换为Laravel自带的OpenSSL加密实现,业务代码改动量极小
- 如果是第三方依赖包调用了mcrypt,优先查找对应依赖的更新版本,主流依赖基本都已适配OpenSSL替换mcrypt,升级依赖即可解决报错
必须安装mcrypt的操作步骤
如果你的业务逻辑必须依赖mcrypt扩展,按以下步骤操作:
- 先确认你的PHP编译属性:
运行命令php -i | findstr "Thread Safety",如果输出为Thread Safety => enabled,你需要下载线程安全(TS)版本的mcrypt dll,否则下载非线程安全(NTS)版本,同时确认dll为64位、VC15编译版本(PHP 7.4使用VC15编译) - 将匹配版本的
php_mcrypt.dll文件放到c:/wamp64/bin/php/php7.4.0/ext/目录下 - 修改两处php.ini配置(WAMP的Web端和CLI端使用不同的php.ini文件,必须都修改才会生效):
- Web端php.ini:左键点击WAMP托盘图标→PHP→php.ini,打开编辑,添加一行
extension=mcrypt - CLI端php.ini:打开
c:/wamp64/bin/php/php7.4.0/php.ini文件,同样添加extension=mcrypt
- Web端php.ini:左键点击WAMP托盘图标→PHP→php.ini,打开编辑,添加一行
- 重启WAMP所有服务,运行
php -m查看已加载扩展列表,确认mcrypt出现在列表中后,再执行php artisan serve即可正常启动
内容的提问来源于stack exchange,提问作者bootyconsumer123
相关产品推荐
相关产品推荐

