本地Mac上安装了多个版本的PHP,现在要用Imagick来处理png的裁剪,因为GD库处理png会把透明背景变成白色,安装过程有点曲折,所以记录一下完整过程,希望能帮到有需要的人。
第一步执行安装brew install imagemagick:

看到这个的话,就是安装成功了:
Pruned 0 symbolic links and 1 directories from /opt/homebrew
==> Caveats
==> imagemagick
Ghostscript is not installed by default as a dependency.
If you need PS or PDF support, ImageMagick will still use the ghostscript formula if installed directly.
然后执行brew install autoconf,Mac可能自带这个,所以我执行的时候返回的是:
Warning: autoconf 2.72 is already installed and up-to-date.
To reinstall 2.72, run:
brew reinstall autoconf
可忽略,继续:
pecl install imagick
安装过程会提示设置目录,直接回车,然后继续安装,最后会显示这个错误:
Build process completed successfully
Installing '/opt/homebrew/Cellar/php@7.4/7.4.33_9/include/php/ext/imagick/php_imagick_shared.h'
Installing '/opt/homebrew/Cellar/php@7.4/7.4.33_9/pecl/20190902/imagick.so'
Warning: mkdir(): File exists in System.php on line 294
PHP Warning: mkdir(): File exists in /opt/homebrew/Cellar/php@7.4/7.4.33_9/share/php@7.4/pear/System.php on line 294
Warning: mkdir(): File exists in /opt/homebrew/Cellar/php@7.4/7.4.33_9/share/php@7.4/pear/System.php on line 294
ERROR: failed to mkdir /opt/homebrew/Cellar/php@7.4/7.4.33_9/pecl/20190902
本来以为是本地多版本的问题,然后去目录 /opt/homebrew/Cellar/php@7.4/7.4.33_9查看,
ls -l
total 376
drwxr-xr-x 12 *** admin 384 4 18 19:35 bin
-rw-r--r-- 1 *** admin 789 4 18 19:35 homebrew.mxcl.php@7.4.plist
-rw-r--r-- 1 *** admin 285 4 18 19:35 homebrew.php@7.4.service
drwxr-xr-x 3 *** admin 96 3 31 16:08 include
-rw-r--r-- 1 *** admin 11003 4 18 19:35 INSTALL_RECEIPT.json
drwxr-xr-x 4 *** admin 128 3 31 16:08 lib
-rw-r--r-- 1 *** admin 3204 3 31 16:08 LICENSE
-rw-r--r-- 1 *** admin 106264 3 31 16:08 NEWS
lrwxr-xr-x 1 *** admin 26 4 18 19:35 pecl -> /opt/homebrew/lib/php/pecl
-rw-r--r-- 1 *** admin 967 3 31 16:08 README.md
drwxr-xr-x 3 *** admin 96 3 31 16:08 sbin
-rw-r--r-- 1 *** admin 53839 4 18 19:35 sbom.spdx.json
drwxr-xr-x 5 *** admin 160 3 31 16:08 share
发现pecl指向的是另一个位置,把这个指向删除,新建一个正确的:
ln -s /opt/homebrew/lib/php/pecl /opt/homebrew/Cellar/php@7.4/7.4.33_9/pecl
然后执行pecl install imagick
安装成功了,重启PHP
brew services restart php@7.4
Stopping `php@7.4`... (might take a while)
==> Successfully stopped `php@7.4` (label: homebrew.mxcl.php@7.4)
==> Successfully started `php@7.4` (label: homebrew.mxcl.php@7.4)
查看拓展是否安装成功的时候会报错:
php -m | grep imagick
PHP Warning: PHP Startup: Unable to load dynamic library 'imagick' (tried: /opt/homebrew/lib/php/pecl/20190902/imagick (dlopen(/opt/homebrew/lib/php/pecl/20190902/imagick, 0x0009): tried: '/opt/homebrew/lib/php/pecl/20190902/imagick' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/lib/php/pecl/20190902/imagick' (no such file), '/opt/homebrew/lib/php/pecl/20190902/imagick' (no such file)), /opt/homebrew/lib/php/pecl/20190902/imagick.so (dlopen(/opt/homebrew/lib/php/pecl/20190902/imagick.so, 0x0009): tried: '/opt/homebrew/lib/php/pecl/20190902/imagick.so' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/lib/php/pecl/20190902/imagick.so' (no such file), '/opt/homebrew/lib/php/pecl/20190902/imagick.so' (no such file))) in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library 'imagick' (tried: /opt/homebrew/lib/php/pecl/20190902/imagick (dlopen(/opt/homebrew/lib/php/pecl/20190902/imagick, 0x0009): tried: '/opt/homebrew/lib/php/pecl/20190902/imagick' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/lib/php/pecl/20190902/imagick' (no such file), '/opt/homebrew/lib/php/pecl/20190902/imagick' (no such file)), /opt/homebrew/lib/php/pecl/20190902/imagick.so (dlopen(/opt/homebrew/lib/php/pecl/20190902/imagick.so, 0x0009): tried: '/opt/homebrew/lib/php/pecl/20190902/imagick.so' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/lib/php/pecl/20190902/imagick.so' (no such file), '/opt/homebrew/lib/php/pecl/20190902/imagick.so' (no such file))) in Unknown on line 0
找不到so文件![[挖鼻]](https://erro.com.cn/public/static/duodar-admin/layui/images/face/5.gif)
![[挖鼻]](https://erro.com.cn/public/static/duodar-admin/layui/images/face/5.gif)
![[挖鼻]](https://erro.com.cn/public/static/duodar-admin/layui/images/face/5.gif)
![[挖鼻]](https://erro.com.cn/public/static/duodar-admin/layui/images/face/5.gif)
![[挖鼻]](https://erro.com.cn/public/static/duodar-admin/layui/images/face/5.gif)
![[挖鼻]](https://erro.com.cn/public/static/duodar-admin/layui/images/face/5.gif)
![[挖鼻]](https://erro.com.cn/public/static/duodar-admin/layui/images/face/5.gif)
![[挖鼻]](https://erro.com.cn/public/static/duodar-admin/layui/images/face/5.gif)
![[挖鼻]](https://erro.com.cn/public/static/duodar-admin/layui/images/face/5.gif)
![[挖鼻]](https://erro.com.cn/public/static/duodar-admin/layui/images/face/5.gif)
查看配置文件
php --ini
Configuration File (php.ini) Path: /opt/homebrew/etc/php/7.4
Loaded Configuration File: /opt/homebrew/etc/php/7.4/php.ini
Scan for additional .ini files in: /opt/homebrew/etc/php/7.4/conf.d
Additional .ini files parsed: /opt/homebrew/etc/php/7.4/conf.d/ext-opcache.ini
编辑/opt/homebrew/etc/php/7.4/php.ini发现第一行自动添加了extension="imagick.so",现在错误提示是找不到,所以要把这里的so文件位置写成正确的:
extension=/opt/homebrew/lib/php/20190902/imagick.so
保存后再次重启PHP,执行php -m | grep imagick就正常显示了,至此,拓展安装完成,去试了一下,果然就OK了,透明度不会变成白色了。
如果本地有多版本PHP,切换版本的时候,记得这样安装的扩展需要注释掉再切换版本,不然会报错!
nginx资源404 nginx无法访问静态资源 Mac nginx PHP安装Imagick Imagick 多版本PHP环境安装Imagick SSL免费续签 SSL证书续签 SSL证书领取 SSL免费 SSL证书 link must be in js secure domain list uniapp分享 wx.config is not a function 微信分享 pyenv-virtualenv brew install pyenv-virtualenv ModuleNotFoundError: No module named 'requests' python报错 python环境