最近想要學習一下swoole,雖然機子上裝的是php7.0,可是考慮到一些有關swoole的輪子要依賴更高版本(例如swooletw),因此就在機子上升級了php7.2,下面是在網上搜索或者本身折騰出來的一些筆記。php
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/...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,須要執行下面操做:mysql
# 切換cli sudo update-alternatives --set php /usr/bin/php7.2
這樣在命令行執行php -v也能看到7.2版本了nginx
若是有兩個版本,其實能夠直接用sudo service php7.0-fpm stop/restart來進行切換,固然這隻能切換php-fpm,也就是web端,命令行cli端仍是不能切換的
升級版本後,我還折騰了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程序啓動失敗laravel
解決方法:
ps aux|grep php查看全部php-fpm進程,發現有個php7.1-fpm進程,拿到進程id,再kill掉就可以重啓了。web
網上查詢的解決方法是killall php-pfm這個命令,執行後只有顯示 php-pfm:沒有發現操做,這種方法沒用,最後使用上面這種查詢進程,而後根據進程id殺死進程的方法