ubuntu多版本php切換


最近想要學習一下swoole,雖然機子上裝的是php7.0,但是考慮到一些有關swoole的輪子要依賴更高版本(例如swooletw),所以就在機子上升級了php7.2,下面是在網上搜索或者自己折騰出來的一些筆記。

 

版本升級操作(直接從7.0升級到7.2):

1

2

3

4

5

6

7

8

9

10

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:

1

https://wiki.swoole.com/wiki/page/6.html

這里建議直接用pecl install swoole安裝,一步到位,如果手動編譯,貌似會出現各種因為版本對應不上的問題。

切換版本:

1

2

3

4

5

6

# 禁用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,需要執行下面操作:

1

2

# 切換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端還是不能切換的

1

Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE):

升級版本后,我還折騰了php7.1,然后第二天回來啟動電腦就發現所以laravel項目都報這樣的錯,網上搜索后知道是版本問題,但是看了下php -v沒問題就是7.2,這時候打算重啟php報錯,以下的報錯就是問題所在了:

1

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殺死進程的方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM