这个的问题就是系统自带的php版本和新安装的php高级版本同时存在,并且终端和phpinfo()加载的文件位置不一致导致。
其中,
nginx服务解析phpinfo()是依赖php-fpm实现的,所以phpinfo()输出的是php-fpm启动的版本;
而终端执行php -v是加载终端配置文件中设置的php安装目录对应的php版本的;
所以导致两者php版本不一致主要就是启动的php-fpm版本和终端配置的php版本不一致。
直接的解决办法就是将高版本php安装目录下的高版本php-fpm安装目录也加到终端配置文件,让系统自动加载高版本php-fpm即可。
快速解决:
配置~/.bash_profile:
export PATH=/usr/local/Cellar/php@7.2/7.2.23/bin:/usr/local/Cellar/php@7.2/7.2.23/sbin:${PATH}
如果系统使用的是zsh,就在~/.zshrc文件最后添加:(如果不是可以不用加这条)
source ~/.bash_profile
然后再执行
source ~/.zshrc
使配置生效,并重启php-fpm
sudo killall php-fpm
sudo php-fpm
即可
具体过程:
1、查看当前php版本
php -v
得到以下输出:
PHP 7.4.11 (cli) (built: Oct 1 2020 23:30:54) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies
2、查看php安装位置
which php 或者执行 whereis php
得到以下输出
/usr/local/Cellar/php/7.4.11/bin/php
3、查看php-fpm 版本和安装位置
PHP 5.6.30 (fpm-fcgi) (built: Oct 29 2017 20:31:21)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
which php-fpm
得到以下输出:
/usr/sbin/php-fpm
以上查看一遍后,发现php加载的安装目录是新安装的php高级版本,而php-fpm 还是mac系统自带的低版本,原因是在系统终端配置文件中配置了新版本php安装位置,但是没有配置php-fpm的安装位置,导致启动php-fpm时自动加载的是系统低版本的php-fpm,当php框架依赖高版本php时,就会无法运行。
4、配置新版本php-fpm加载目录
配置~/.bash_profile
export PATH=/usr/local/Cellar/php/7.4.11/bin:/usr/local/Cellar/php/7.4.11/sbin:${PATH}
如果系统使用的是zsh,就在~/.zshrc文件最后添加:
source ~/.bash_profile
或直接将上述路径配置设置在~/.zshrc文件中。
然后执行source ~/.zshrc使配置生效
5、查看当前php-fpm版本
php-fpm -v
结果:
PHP 7.4.11 (fpm-fcgi) (built: Oct 1 2020 23:31:04)
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies
已经自动加载高版本的php-fpm了。
6、重启php-fpm
终止后台运行的php-fpm进程
sudo killall php-fpm
然后执行 启动php-fpm并后台运行:
sudo php-fpm -D
此时phpinfo输出的php版本信息就是最新的7.4版本
每天爱你们一点点,秃头小可爱们 😃