当前位置: 首页 > Linux

ubuntu多版本php切换

时间:2023-04-06 20:43:47 Linux

最近想学习swoole,虽然机器上装的是php7.0,但是考虑到swoole相关的一些wheel依赖更高的版本(比如swooletw),所以升级了php7machine.2,下面是自己在网上搜到的或者自己做的一些笔记。版本升级操作(7.0直接升级到7.2):sudoadd-apt-repositoryppa:ondrej/phpsudoapt-getupdatesudoapt-getupgradephp#expansionupgradesudoapt-getinstallphp7.2-mbstringsudoapt-getinstallphp7.2-gdsudoapt-getinstallphp7.2-domsudoapt-getinstallphp7.2-mysqlsudoapt-getinstallphp7.2-curl...需要的话可以安装swoole:https://wiki.swoole.com/wiki/...这里推荐使用peclinstallswoole直接安装,一步到位,如果手动编译,好像会因为版本不匹配出现各种问题。切换版本:#禁用7.0版本sudoa2dismodphp7.0#启用7.2版本sudoa2enmodphp7.2#重启nginx(或apache)sudoservicenginxrestart如果ERROR:Modulephp7.0doesnotexist!,executesudoapt-getinstalllibapache2-mod-php7.0然后执行以上操作。这时候在浏览器中查看phpinfo()应该可以看到7.2版本,但是命令行cli还是7.0。需要进行如下操作:#switchclisudoupdate-alternatives--setphp/usr/bin/php7.2这样在命令行执行php-v也可以看到7.2版本。如果有两个版本,可以直接sudoservicephp7.0-fpmstop/restart切换。当然这个只能切换php-fpm,也就是web端,命令行cli端还是不能切换。Parseerror:syntaxerror,unexpected'?',expectingvariable(T_VARIABLE):升级版本后,我也折腾了php7.1,第二天回来启动电脑,发现所有的laravel项目都报这样的错误.网上查了下才知道是版本问题,但是看了php-v是7.2,打算重启php报错。下面的报错是Theproblemis:ERROR:unabletobindlisteningsocketforaddress'127.0.0.1:9001':Addressalreadyinuse(98)大致意思是端口被占用,然后phpfastCGI程序启动失败解决办法:psaux|grepphp查看全部php-fpm进程发现一个php7.1-fpm进程,拿到进程id,然后杀掉重启。网上查询的解决方法是killallphp-pfm命令。执行后只有php-pfm:Nooperationfound,这个方法没用,最后用上面查询进程的方法,然后根据进程idkill进程