MAC Call to undefined function Think\imagettftext()

今天在用Thinkphp框架做项目的时候,用到了thinkPHP框架的验证码,验证码一直出不来,报错显示:
Call to undefined function Think\imagettftext()
1.下载新的php版本且带有大量php扩展
我在网上查询了下,是因为gd未安装freetype,访问phpinfo()可以返现发现没有这个模块
然后大家给出比较终极的方案都是通过一行命令来解决:
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.1
注:最后的7.1是我目前php的版本号,你可以先查询下自己php的版本号
官网地址:https://php-osx.liip.ch/
敲下回车后,你可能会看见以下警告:

Detected OS X El Capitan 10.11. As this is quite new, there may be issues still. Your mileage may vary.

不用管这个警告,等待下载安装完毕即可(下载的时候有时候特别慢,如果很久都没有反应可以又重新执行命令行)。

2.配置PHP命令路径
当时我是看网上大家都说直接执行命令就可以啦,我发现下载完成之后,该报错的还是报错,而且扩展也没有加上。

当我在命令行中输入:

php -v 

还是之前的版本。安装完毕如果在终端里运行PHP -v命令,还是会显示mac自带的旧版本。因此,我们还需要配置一下路径。

在命令行中输入如下命令:
sudo vim ~/.bash_profile
然后,在文件的最后加上:
export PATH=/usr/local/php5-7.1.13-20180201-134129/bin:$PATH;
注意:我这里是以安装的PHP7.1的路径来配置的,你需要进到/usr/local中查看你所安装的PHP的路径。
最后,运行命令:
source ~/.bash_profile
配置完成,再试试php -v显示的就是最新安装的PHP版本了。
3.更改Apache中PHP的加载

更有意思的是,当我通过页面查看phpinfo()时,我发现phpinfo中的php的版本号既不是我之前php的php版本,也不是我现在php版本,然后我通过命令行找啦以下

php:sudo find / -name 'php'
我才发现我的MAC上安装了多个php版本(ps:之前电脑是别人用的,我只是简单配置了下就使用了)
这时需要在 apache2 配置文件中修改 PHP 的扩展路径即可:
vi /etc/apache2/httpd.conf
Mac 自带的 apache 配置文件中 加载的是 PHP5.5 的版本,如果需要加载自己安装的版本,
请指定自定义的 PHP 安装路径。

加载路径示例(我的Mac上配置的路径):

LoadModule php5_module LoadModule php7_module /usr/local/php5-7.1.13-20180201-134129/libphp7.so #填写自己版本的libphp5.so的路径,就会使用对应的php版本  
之后重启 apache:
sudo apachectl restart
在命令行可以通过命令:
php -i 
来查看phpinfo的信息,在这些可以看到当前的php版本加载那个目录下的php配置文件等。
在这样切换之后,我再次用页面访问phpinfo()就发现freetype已经有了,我在看验证码页面,验证码就已经显示出来了。


猜你喜欢

转载自blog.csdn.net/liaobangxiang/article/details/79460290