Heim > Artikel > Backend-Entwicklung > Ubuntu-Multiversions-PHP-Umschaltung
Ich möchte swoole vor kurzem lernen, obwohl die Maschine mit PHP7.0 installiert ist, da einige Swoole-Räder von höheren Versionen (z. B. Swooletw) abhängen, habe ich die Maschine auf PHP7.2 aktualisiert oder machen Sie sich selbst Notizen.
Versionsaktualisierungsvorgang (direktes Upgrade von 7.0 auf 7.2):
sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get upgrade php # 拓展升级 sudo apt-get install php7.2-mbstring sudo apt-get install php7.2-gd sudo apt-get install php7.2-dom sudo apt-get install php7.2-mysql sudo apt-get install php7.2-curl ......
Bei Bedarf können Sie swoole installieren:
https://wiki.swoole.com/wiki/page/6.html
Es wird empfohlen Verwenden Sie pecl install hier direkt. Die Swoole-Installation ist ein einstufiger Prozess. Wenn Sie es manuell kompilieren, kann es aufgrund inkompatibler Versionen zu verschiedenen Problemen kommen.
Version wechseln:
# 禁用7.0版本 sudo a2dismod php7.0 # 启用7.2版本 sudo a2enmod php7.2 # 重启nginx(或apache) sudo service nginx restart
Wenn FEHLER: Modul php7.0 existiert nicht, führen Sie sudo apt-get install libapache2-mod-php7.0 aus und dann Führen Sie den obigen Vorgang aus
Zu diesem Zeitpunkt sollten Sie die Version 7.2 sehen können, indem Sie phpinfo() im Browser überprüfen, aber die Befehlszeilen-CLI ist immer noch 7.0. Sie müssen die folgenden Vorgänge ausführen:
# 切换cli sudo update-alternatives --set php /usr/bin/php7.2
Auf diese Weise können Sie Version 7.2 auch in der Befehlszeile anzeigen, indem Sie php -v
ausführen. Wenn es zwei Versionen gibt, können Sie tatsächlich den Sudo-Dienst php7.0-fpm stop/restart verwenden Natürlich kann dies nur PHP-FPM wechseln, das heißt, die Web-Seite und die Befehlszeilen-CLI-Seite können immer noch nicht umgeschaltet werden
Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE):
Nach dem Upgrade der Version hatte ich auch Probleme mit PHP7.1 Als ich dann am nächsten Tag zurückkam und den Computer startete, stellte ich fest, dass alle Laravel-Projekte diesen Fehler meldeten. Nach einer Online-Suche stellte ich fest, dass es sich um ein Versionsproblem handelte, aber ich überprüfte php -v und es war 7.2. Zu diesem Zeitpunkt hatte ich vor, PHP neu zu starten, und meldete einen Fehler. Der folgende Fehler ist das Problem:
ERROR: unable to bind listening socket for address '127.0.0.1:9001': Address already in use (98)
Das bedeutet, dass der Port belegt ist und PHP dann nicht gestartet werden konnte
Lösung:
ps aux|grep php, um alle php-fpm-Prozesse anzuzeigen und festzustellen, dass es einen php7.1-fpm-Prozess gibt, die Prozess-ID abruft und ihn dann beendet neu starten.
Die Lösung für die Online-Abfrage besteht darin, den Befehl „killall php-pfm“ auszuführen. Nach der Ausführung wird nur „php-pfm“ angezeigt: Diese Methode ist nutzlos. Verwenden Sie schließlich den obigen Abfragevorgang entsprechend der Prozess-ID. So beenden Sie einen Prozess
Das obige ist der detaillierte Inhalt vonUbuntu-Multiversions-PHP-Umschaltung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!