ubuntu多版本php切换
版本升级操纵(直接从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切换的具体内容,更多请关注百分百源码网其它相关文章!