Maison >développement back-end >tutoriel php >Commutation PHP multi-version Ubuntu
Je souhaite apprendre swoole récemment. Bien que la machine soit installée avec php7.0, étant donné que certaines roues swoole dépendent de versions supérieures (telles que swooletw), j'ai mis à niveau la machine vers php7.2. ou prenez quelques notes vous-même.
Opération de mise à niveau de version (mise à niveau directe de 7.0 vers 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 ......
Si nécessaire, vous pouvez installer swoole :
https://wiki.swoole.com/wiki/page/6.html
Il est recommandé de utilisez pecl install directement ici L'installation de Swoole est un processus en une seule étape. Si vous le compilez manuellement, il semble qu'il y aura divers problèmes en raison de versions incompatibles.
Changer de version :
# 禁用7.0版本 sudo a2dismod php7.0 # 启用7.2版本 sudo a2enmod php7.2 # 重启nginx(或apache) sudo service nginx restart
Si ERREUR : Le module php7.0 n'existe pas apparaît , exécutez sudo apt-get install libapache2-mod-php7.0 puis exécuter L'opération ci-dessus
À ce stade, vous devriez pouvoir voir la version 7.2 en vérifiant phpinfo() dans le navigateur, mais la ligne de commande cli est toujours 7.0. Vous devez effectuer les opérations suivantes :
# 切换cli sudo update-alternatives --set php /usr/bin/php7.2
De cette façon sur la ligne de commande Vous pouvez également voir la version 7.2 en exécutant php -v
S'il existe deux versions, vous pouvez réellement utiliser sudo service php7.0-fpm stop/restart pour switch. Bien sûr, cela ne peut changer que php-fpm. C'est-à-dire que le côté Web et le côté cli de ligne de commande ne peuvent toujours pas être commutés
Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE):
Après la mise à niveau de la version, j'ai également eu du mal avec php7.1. , puis quand je suis revenu le lendemain et que j'ai démarré l'ordinateur, j'ai découvert que tous les projets Laravel signalaient cette erreur. Après une recherche en ligne, j'ai découvert qu'il s'agissait d'un problème de version, mais après avoir vérifié php -v, c'était 7.2. J'ai prévu de redémarrer php et j'ai signalé une erreur. L'erreur suivante est le problème :
ERROR: unable to bind listening socket for address '127.0.0.1:9001': Address already in use (98)
Cela signifie que le port est occupé, puis php Le programme fastCGI n'a pas pu démarrer
Solution :
ps aux|grep php pour afficher tous les processus php-fpm et a découvert qu'il existe un processus php7.1-fpm, obtenez l'identifiant du processus, puis supprimez-le pour redémarrer.
La solution à la requête en ligne est la commande killall php-pfm. Après exécution, elle affiche uniquement php-pfm : Aucune opération trouvée. Enfin, utilisez le processus de requête ci-dessus, puis supprimez en conséquence. à l'ID du processus. Comment tuer un processus
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!