這個的問題就是系統自帶的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 -D
即可
具體過程:
1、查看當前php版本
php -v
得到以下輸出:
PHP 7.2.23 (cli) (built: Oct 10 2019 10:15:26) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.23, Copyright (c) 1999-2018, by Zend Technologies
2、查看php安裝位置
which php
或
whereis php
得到以下輸出:
/usr/local/Cellar/php@7.2/7.2.23/bin/php
3、查看php-fpm 版本和安裝位置
php-fpm -v
得到以下輸出:
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.2/7.2.23/bin:/usr/local/Cellar/php@7.2/7.2.23/sbin:${PATH}
如果系統使用的是zsh,就在~/.zshrc
文件最后添加:
source ~/.bash_profile
或直接將上述路徑配置設置在~/.zshrc
文件中。
然后執行source ~/.zshrc
使配置生效
5、查看當前php-fpm版本
(base) qingshan@qingshan ~ php-fpm -v
PHP 7.2.23 (fpm-fcgi) (built: Oct 10 2019 10:15:34)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.23, Copyright (c) 1999-2018, by Zend Technologies
已經自動加載高版本的php-fpm了。
6、重啟php-fpm
終止后台運行的php-fpm進程
sudo killall php-fpm
啟動php-fpm並后台運行:
sudo php-fpm -D
此時phpinfo輸出的php版本信息就是最新的7.2版本