Mac OS El Capitan下PHP7.1无法加载imagick.so及相关问题求助
先理清楚你遇到的两个核心问题:Imagick 扩展找不到导致的启动警告,以及 Mcrypt 模块重复加载的提示,下面分步骤解决:
一、修复 Imagick 扩展加载失败的问题
你用 brew reinstall -s php71-imagick 报错找不到公式,是因为 Homebrew 官方已经移除了旧 PHP 版本的扩展公式,需要借助第三方 tap 来获取适配 PHP 7.1 的扩展包,具体操作:
清理残留的无效扩展配置
先找到 PHP 7.1 的配置目录(一般是/usr/local/etc/php/7.1/conf.d/),删除里面所有和 imagick 相关的.ini文件(比如ext-imagick.ini或者php71-imagick.ini),这些旧配置指向的路径已经失效了。添加支持旧 PHP 版本的 Homebrew 源
在终端执行以下命令添加第三方 tap,它维护了很多旧版本 PHP 的扩展:brew tap shivammathur/php重新安装适配 PHP 7.1 的 Imagick 扩展
现在可以安装正确命名的扩展包了:brew install shivammathur/php/php@7.1-imagick验证安装结果
安装完成后,执行php -v,如果 Imagick 的警告消失,说明问题解决。如果还存在,可以用brew info php@7.1-imagick查看扩展的实际安装路径,然后手动在/usr/local/etc/php/7.1/php.ini里添加一行(替换成实际路径):extension=/usr/local/Cellar/php@7.1-imagick/[具体版本号]/lib/php/20160303/imagick.so
二、修复 Mcrypt 模块重复加载的警告
这个问题很简单,就是你的 PHP 配置里重复声明了 mcrypt 模块的加载:
定位重复配置
打开 PHP 7.1 的主配置文件/usr/local/etc/php/7.1/php.ini,或者检查conf.d目录下的 mcrypt 相关.ini文件。删除重复的加载行
搜索extension=mcrypt.so(或者类似的配置行),找到重复出现的那一行并删除,保存配置文件。验证修复
再次执行php -v,Mcrypt 的重复加载警告就会消失。
额外注意事项
如果安装 Imagick 时还是报错,可能是系统缺少 Imagick 的依赖库,你可以先安装适配旧版本的 Imagemagick:
brew install imagemagick@6
安装完成后再重新安装 PHP 的 Imagick 扩展即可。
内容的提问来源于stack exchange,提问作者BARNOWL

