版本升級操作(直接從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切換的詳細內容,更多請關注TW511.COM其它相關文章!