Mac电脑上发生这个错误这个原因是Mac电脑自带的php的gd未安装freetype导致的,所以要解决这个问题就是安装freetype. 解决办法很多,网上资料也很多.但是要么太繁琐,要么看上去简单但是经过操作后发现并没有解决掉问题. 经过多方查找资料,实践后才发现网上的简单流程是有问题的.文本根据自己的实践,重新梳理一下.希望能够帮助大家快速解决问题,节省时间.废话不多说,进入正题
电脑系统
macOS Mojave 版本 10.14.6
终端查看自己的php版本(我的版本是php 7.1 )
$ php -v
安装方法 :通过脚本在线安装带有freetype的php替代系统默认的
根据自己的php情况,打开上面的链接选择适合自己的版本,因为我的版本是php7.1,所以使用7.1版本,打开终端执行下面的命令
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.1
注(因为是国外的,所以下载很慢,网络不好可能很容易失败)
安装成功后在/usr/local文件夹下会生成两个文件夹 php5-7.1.31-20190811-210816 和 php5(php5-7.1.31-20190811-210816的替身), 要修改文件内容直接在php5-7.1.31-20190811-210816目录下进行修改就行了
新的php版本安装成功了,但是在终端执行
php -v
看到的还是系统自带的php版本, 如果让新安装的php生效呢, 在https://php-osx.liip.ch Frequently Asked Questions中有介绍,我这边直接粘贴原文
Why does php -v on the command line still show my old version?
php-osx doesn't overwrite the php binaries installed by Apple, but installs everything in /usr/local/php5. The new php binary is therefore in /usr/local/php5/bin/php.
You can also adjust your PATH do include that directory, eg. write into your ~/.profile file the following
export PATH=/usr/local/php5/bin:$PATH
source ~/.profile
这里补充说明下, 因为我安装了第三方终端iTerm,所以修改的文件是~/.zshrc , 修改方式和上面类似,别忘了最后执行
source 操作让修改即时生效.
这个时候再查看php版本就发现是安装的最新的了.
虽然支持freetype的php版本安装成功了,但是如果再次打开网页,发现验证码还是一样失败,显示的异常还是 undefined function think\captcha\imagettftext(), 就算重启了php-fpm问题仍然没有得到解决,为什么这样呢?
那是因为在终端中直接使用php-fpm启动的时候,使用的仍然是系统默认的php,并没有使用最新安装的php.
所以目前要解决的问题就是启动php-fpm时使用最新的php?
使用新安装的php下的php-fpm启动服务
配置php-fpm
主要就是修改php-fpm.conf(由php-fpm.conf.default复制而来)和php-fpm.d目录下的www.conf(由php-fpm.conf.default复制而来) 的日志文件路径
切换到配置文件目录
cd /usr/local/php5-******/etc
(在/usr/local/php5-******目录下,暗转的php版本不同,后缀也不同)
$ sudo cp php-fpm.conf.default php-fpm.conf
配置日志文件路径
[global]
error_log = /usr/local/var/log/php-fpm.log
配置www.conf
cd /usr/local/php5-******/etc/php-fpm.d
sudo cp www.conf.default www.conf
配置日志文件路径,最文件的最后一行把前面的;去掉就行了,主要修改的就是error_log目录
php_flag[display_errors] = on
php_admin_value[error_log] = user/local/var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
启动php-fpm服务
绝对路径启动
/usr/local/php5/sbin/php-fpm -D
如果当前所处的目录为/usr/local/php5/sbin/启动方式应使用
./php-fpm -D
而不能是
php-fpm -D
因为这种方式还是使用的是默认的php版本,
执行完以上流程后再刷新网页就发现验证码已经出来了.
参考文章:
网友评论