這個的問題就是系統自帶的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版本