版本升级操纵(直接从7.0升级到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 ......
有须要能够装置swoole:
https://wiki.swoole.com/wiki/page/6.html
这里发起直接用pecl install swoole装置,一步到位,假如手动编译,貌似会涌现种种由于版本对应不上的题目。
切换版本:
# 禁用7.0版本 sudo a2dismod php7.0 # 启用7.2版本 sudo a2enmod php7.2 # 重启nginx(或apache) sudo service nginx restart
假如涌现ERROR: Module php7.0 does not exist! ,实行sudo apt-get install libapache2-mod-php7.0再实行上面操纵
这时候在浏览器检察phpinfo()应当就可以够看到7.2版本了,然则敕令行cli那边照样7.0,须要实行下面操纵:
# 切换cli sudo update-alternatives --set php /usr/bin/php7.2
如许在敕令行实行php -v也能看到7.2版本了
假如有两个版本,实在能够直接用sudo service php7.0-fpm stop/restart来举行切换,固然这只能切换php-fpm,也就是web端,敕令行cli端照样不能切换的
Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE):
升级版本后,我还折腾了php7.1,然后第二天返来启动电脑就发明所以laravel项目都报如许的错,网上搜刮后晓得是版本题目,然则看了下php -v没题目就是7.2,这时候盘算重启php报错,以下的报错就是题目所在了:
ERROR: unable to bind listening socket for address '127.0.0.1:9001': Address already in use (98)
大抵就是端口被占用,然后php fastCGI顺序启动失利
解决要领:
ps aux|grep php检察一切php-fpm历程,发明有个php7.1-fpm历程,拿到历程id,再kill掉就可以够重启了。
网上查询的解决要领是killall php-pfm这个敕令,实行后只要显现 php-pfm:没有发明操纵,这类要领没用,末了运用上面这类查询历程,然后依据历程id杀死历程的要领
以上就是ubuntu多版本php切换的细致内容,更多请关注ki4网别的相干文章!