环境
Mac OS X 10.14.3
问题
最近在使用thinkphp的验证码模块时,出现了一个异常Call to undefined function think\captcha\imagettftext()
没有imagettftext()
这个函数,原因是因为php缺少gd库中的freetype模块导致的。
知道了原因后,查询了网上大致的方法,大概这么几种
- 重新编译PHP
- 用brew重新安装新的PHP
- https://php-osx.liip.ch 一句话脚本
在尝试了很多遍后,都没有成功。有一篇文章讲到了这些方案比较过时,在Macos10.14版本下更改了安全策略,新增了Rootless
机制,具体请看我博客中另一篇文章关于Rootless
的介绍。
解决
方案一(便携)
使用第三方集成环境例如MAMP
,MAMP PRO
,XAMPP
等
方案二(推荐)
首先关闭Rootless
关闭步骤
1 | 1、重启 Mac 并按住 Command+R,进入恢复模式 |
开启步骤
1 | 1、重启 Mac 并按住 Command+R,进入恢复模式 |
重新brew安装php
这里我试过关闭rootless后使用一句话脚本也没有办法安装成功。也试过一些网上的方案例如
1 | $ brew install php56 --with-apche --with-freetype |
但是运行出现Error: invalid option: --with-apche
此错误,寻思没有解决办法。
成功的方案
1 | $ brew install php@7.1 --build-from-source |
记住添加
--build-from-source
参数
php 版本可自行通过brew search php
来查看需要安装所需,运行后出现
1 | ==> Installing dependencies for php@7.1: pkg-config |
主要查看后面的提示信息并配置环境
1 | $ echo 'export PATH="/usr/local/opt/php@7.1/bin:$PATH"' >> ~/.bash_profile |
然后source ~/.bash_profire
再次重新运行thinkphp中的验证码模块,实验成功
参考资料
https://blog.csdn.net/leiflyy/article/details/53016769
https://blog.csdn.net/liaobangxiang/article/details/79460290
https://github.com/EricLi404/notes/issues/1
https://stackoverflow.com/questions/50259893/home-brew-php-7-2-5-install-with-curl
https://hackycy.github.io/2019/03/19/Mac-OS-X-10-11-Rootless-介绍