美文网首页
call to undefined function think

call to undefined function think

作者: 王兴岭 | 来源:发表于2020-03-05 11:18 被阅读0次

    Mac电脑上发生这个错误这个原因是Mac电脑自带的php的gd未安装freetype导致的,所以要解决这个问题就是安装freetype. 解决办法很多,网上资料也很多.但是要么太繁琐,要么看上去简单但是经过操作后发现并没有解决掉问题. 经过多方查找资料,实践后才发现网上的简单流程是有问题的.文本根据自己的实践,重新梳理一下.希望能够帮助大家快速解决问题,节省时间.废话不多说,进入正题

    电脑系统

    macOS Mojave 版本 10.14.6

    终端查看自己的php版本(我的版本是php 7.1 )

    $ php -v

    安装方法 :通过脚本在线安装带有freetype的php替代系统默认的

    https://php-osx.liip.ch 

    根据自己的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版本,

    执行完以上流程后再刷新网页就发现验证码已经出来了.

    参考文章: 

    nginx用什么版本的php取决于php-fpm哪个php版本的

    mac 重启php-fpm

    mac配置nginx和php-fpm

    相关文章

      网友评论

          本文标题:call to undefined function think

          本文链接:https://www.haomeiwen.com/subject/adjtrhtx.html