Heim  >  Artikel  >  Backend-Entwicklung  >  Warum sind die von php -v und phpinfo() ausgegebenen PHP-Versionen inkonsistent?

Warum sind die von php -v und phpinfo() ausgegebenen PHP-Versionen inkonsistent?

藏色散人
藏色散人Original
2020-08-15 10:50:314551Durchsuche

Die PHP-Version ist inkonsistent, da die mit dem System gelieferte PHP-Version und die neu installierte erweiterte PHP-Version gleichzeitig vorhanden sind und der Speicherort der vom Terminal und phpinfo geladenen Dateien inkonsistent ist. Die Lösung besteht darin, die zu ändern Die Hochversion des PHP-Installationsverzeichnisses wird ebenfalls zur Terminalkonfigurationsdatei zum Installationsverzeichnis der Hochversion „php-fpm“ hinzugefügt.

Warum sind die von php -v und phpinfo() ausgegebenen PHP-Versionen inkonsistent?

Empfohlen: „PHP-Video-Tutorial

Das Problem besteht darin, dass die systemeigene PHP-Version und die neu installierte erweiterte PHP-Version nebeneinander existieren und die vom Terminal und phpinfo() geladenen Dateispeicherorte inkonsistent sind.

Unter diesen basiert

nginx-Dienst, der phpinfo() analysiert, auf php-fpm, daher ist die Ausgabe von phpinfo() die von php-fpm gestartete Version

Und die Terminalausführung php -v ist die PHP-Version zu laden, die dem in der Terminalkonfigurationsdatei festgelegten PHP-Installationsverzeichnis entspricht. 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

Die Hauptursache für die Inkonsistenz zwischen den beiden PHP-Versionen ist also, dass die gestartete PHP-FPM-Version nicht mit der PHP-Version übereinstimmt im Terminal konfiguriert.

Die direkte Lösung besteht darin, das Installationsverzeichnis für die Hochversion von PHP-FPM unter dem Installationsverzeichnis für die Hochversion von PHP zur Terminalkonfigurationsdatei hinzuzufügen und das System die Hochversion von PHP-FPM automatisch laden zu lassen.

Schnelle Lösung:

Konfiguration~/.bash_profile:

(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

Wenn das System zsh verwendet, direkt am Ende des ~/.zshrc Datei hinzufügen:

sudo killall php-fpm

Dann

sudo php-fpm -D

ausführen, um die Konfiguration wirksam zu machen, und php-fpm neu starten

rrreeerrreee

Das ist es

Spezifischer Prozess:

1 die aktuelle PHP-Version rrreee🎜Erhalten Sie die folgende Ausgabe:🎜rrreee🎜2. Überprüfen Sie den PHP-Installationsort🎜rrreee🎜 oder 🎜rrreee🎜Erhalten Sie die folgende Ausgabe:🎜rrreee🎜3. Überprüfen Sie die PHP-FPM-Version und den Installationsort🎜rrreee 🎜Erhalten Sie die folgende Ausgabe:🎜rrreeerrreee🎜 Erhalten Sie die folgende Ausgabe: 🎜rrreee🎜Nachdem ich das oben Gesagte überprüft habe, habe ich festgestellt, dass das von PHP geladene Installationsverzeichnis die neu installierte erweiterte Version von PHP ist und php-fpm immer noch die niedrigere Version ist Der Grund dafür ist, dass die neue Version in der PHP-Installationsdatei des Systems konfiguriert ist, der Installationsort von PHP-FPM jedoch nicht konfiguriert ist. Die niedrigere Version von PHP-FPM des Systems wird automatisch geladen. Wenn das PHP-Framework auf einer höheren Version von PHP basiert, wird es nicht ausgeführt. 🎜🎜4. Konfigurieren Sie die neue Version des PHP-FPM-Ladeverzeichnisses 🎜🎜Konfigurieren Sie ~/.bash_profile: 🎜rrreee🎜Wenn das System zsh verwendet, einfach in ~/.zshrc Fügen Sie am Ende der Datei Folgendes hinzu: 🎜rrreee🎜 oder legen Sie die obige Pfadkonfiguration direkt in der Datei ~/.zshrc fest. 🎜🎜Dann führen Sie source ~/.zshrc aus, damit die Konfiguration wirksam wird🎜🎜5. Überprüfen Sie die aktuelle PHP-FPM-Version🎜rrreee🎜Die höhere Version von PHP-FPM wurde automatisch geladen. 🎜🎜6. Starten Sie php-fpm neu.🎜🎜Beenden Sie den im Hintergrund laufenden PHP-FPM-Prozess Version 7.2🎜🎜🎜🎜

Das obige ist der detaillierte Inhalt vonWarum sind die von php -v und phpinfo() ausgegebenen PHP-Versionen inkonsistent?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn