Ubuntu中支持PHP5與PHP7雙版本的簡(jiǎn)單實(shí)現(xiàn)
前言
最近在編寫(xiě)一個(gè)工具的時(shí)候,使用了PHP命名空間特性,在命名空間中如果想引用常量、函數(shù),需要PHP5.6以上的版本,但我阿里云 ECS 上安裝的版本是PHP 5.5.9,由于 ECS 部署了很多PHP代碼,如果貿(mào)然升級(jí)高版本PHP,可能會(huì)存在一些兼容性的問(wèn)題。突然奇想,在同一個(gè)操作系統(tǒng)中,是否能夠同時(shí)支持兩個(gè)版本的PHP呢?
簡(jiǎn)單查閱了相關(guān)資料,其實(shí)在 Ubuntu 中使用包安裝方式支持PHP雙版本非常簡(jiǎn)單,兩個(gè)版本存在能夠互不干擾,接下去簡(jiǎn)單做下介紹,其實(shí)相關(guān)文章很多。
1:獲取PHP7源
我的操作系統(tǒng)版本是 Ubuntu 14.04.5 LTS,默認(rèn)的PHP源是 5.5.9 版本,可以使用下列的命令確認(rèn):
$ apt show php
為了獲取各個(gè)版本的PHP源,
在 Ubuntu 官方的 PPA 包含了很多軟件的源,為了支持 PPA 包,可以采用 add-apt-repository 命令行安裝,如果該工具沒(méi)安裝,可以運(yùn)行下列命令安裝:
$ apt install python-software-properties
簡(jiǎn)單理解下 add-apt-repository 工具,該工具的作用如下:
Adds a repository into the /etc/apt/sources.list or /etc/apt/sources.list.d or removes an existing one
也就是說(shuō)無(wú)需你手動(dòng)修改 /etc/apt/sources.list,就能夠通過(guò)該工具添加源。
為了支持多版本的 PHP 的源,運(yùn)行如下命令:
$ add-apt-repository ppa:ondrej/php
運(yùn)行完成后,實(shí)際上 /etc/apt/sources.list.d/ondrej-php-trusty.list 文件更新了。
2:更新系統(tǒng)
添加源后,需要運(yùn)行下列命令更新系統(tǒng),然后再安裝各個(gè) PHP 版本。
$ apt-get update -y
3:安裝PHP7.1
接下去看看目前有多少個(gè)PHP版本可以安裝。
$ apt-cache pkgnames | grep php7
關(guān)鍵輸出如下:
php7.0-fpm
php7.1-fpm
php7.2-fpm
libapache2-mod-php7.0
libapache2-mod-php7.1
libapache2-mod-php7.2
也就是支持兩種 SAPI,我主要使用 Nginx+FPM 的方式,也可以看出目前支持三個(gè)版本的PHP7。
我主要想使用命令行 PHP7 版本,順帶也想著把 FPM 安裝上,運(yùn)行如下命令了解詳細(xì)信息:
$ apt-cache depends php7.1-fpm Depends: php7.1-cli Depends: php7.1-common Depends: php7.1-json Depends: php7.1-opcache
可見(jiàn) php7.1-fpm 也包含了命令行PHP(php7.1-cli),接下去安裝:
$ apt-get install php7.1-fpm php7.1-curl
3:觀察安裝后的文件
運(yùn)行如下命令,觀察 php7.1-fpm 安裝了哪些文件。
$ dpkg -L php7.1-fpm
關(guān)鍵輸出如下:
/usr/sbin/php-fpm7.1
/etc/php/7.1/fpm/php-fpm.conf
/etc/apache2/conf-available/php7.1-fpm.conf
可以看出,你可以運(yùn)行一個(gè) PHP7 版本的 FPM 服務(wù),和 /etc/php5/fpm/php-fpm.conf 使用的配置文件是互相隔離的,我的網(wǎng)站 www.simplehttps.com 和 blog.simplehttps.com 就使用了兩個(gè)版本的 FPM。
接下去查看 php7.1-cli 安裝了哪些文件,這是我最關(guān)心的。
$ dpkg -L php7.1-cli
關(guān)鍵輸出如下:
/usr/bin/php7.1
4:如何切換兩個(gè)PHP版本
對(duì)于命令行來(lái)說(shuō),兩個(gè)版本的地址如下:
/usr/bin/php7.1
/usr/bin/php5
難道運(yùn)行不同版本的時(shí)候,使用完整路徑?其實(shí)可以使用 update-alternatives 工具配置默認(rèn)項(xiàng)運(yùn)行的 PHP 版本。
$ update-alternatives --set php /usr/bin/php7.1
這樣運(yùn)行 php -v 就相當(dāng)于運(yùn)行 /usr/bin/php7.1 -v,如果想使用PHP5版本,可以運(yùn)行下列命令切換:
$ update-alternatives --set php /usr/bin/php5
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Ubuntu16.04.4LTS安裝mininet遇到的問(wèn)題及解決方案
- Ubuntu環(huán)境下使用G++編譯CPP文件
- Ubuntu下VIM配置成C++開(kāi)發(fā)編輯器
- 開(kāi)發(fā)環(huán)境Ubuntu16安裝以后的初始化設(shè)置
- Ubuntu終端多窗口分屏Terminator
- Ubuntu 16.04設(shè)置PostgreSQL開(kāi)機(jī)啟動(dòng)的方法
- 在Ubuntu Linux上安裝和使用Git和GitHub
- ubuntu16.04制作vim和python3的開(kāi)發(fā)環(huán)境
- foreman ubuntu16 快速安裝
- Ubuntu18下安裝Nvidia驅(qū)動(dòng)解決黑屏并調(diào)整分辨率問(wèn)題
- Ubuntu16.04源碼安裝Mininet
相關(guān)文章
PHP顯示今天、今月、上月、今年的起點(diǎn)/終點(diǎn)時(shí)間戳的代碼
PHP顯示今天、今月、上月、今年的起點(diǎn)/終點(diǎn)時(shí)間戳的代碼,需要的朋友可以參考下。2011-05-05PHP輸出兩個(gè)數(shù)字中間有多少個(gè)回文數(shù)的方法
這篇文章主要介紹了PHP輸出兩個(gè)數(shù)字中間有多少個(gè)回文數(shù)的方法,實(shí)例分析了回文數(shù)的概念與相關(guān)判斷技巧,需要的朋友可以參考下2015-03-03高質(zhì)量PHP代碼的50個(gè)實(shí)用技巧必備(下)
這篇文章主要為大家分享了50個(gè)高質(zhì)量PHP代碼的實(shí)用技巧,大家必備的php實(shí)用代碼,感興趣的小伙伴們可以參考一下2016-01-01php數(shù)組函數(shù)序列之a(chǎn)sort() - 對(duì)數(shù)組的元素值進(jìn)行升序排序,保持索引關(guān)系
asort() 函數(shù)對(duì)數(shù)組進(jìn)行排序并保持索引關(guān)系。主要用于對(duì)那些單元順序很重要的結(jié)合數(shù)組進(jìn)行排序??蛇x的第二個(gè)參數(shù)包含了附加的排序標(biāo)識(shí)2011-11-11詳解PHP執(zhí)行定時(shí)任務(wù)的實(shí)現(xiàn)思路
這篇文章主要介紹了詳解PHP執(zhí)行定時(shí)任務(wù)的幾種實(shí)現(xiàn)思路,PHP的定時(shí)任務(wù)功能必須通過(guò)和其他工具結(jié)合才能實(shí)現(xiàn),們就來(lái)深入的解析幾種常見(jiàn)的php定時(shí)任務(wù)的思路2015-12-12Windows2003 下 MySQL 數(shù)據(jù)庫(kù)每天自動(dòng)備份
Windows2003 下 MySQL 數(shù)據(jù)庫(kù)每天自動(dòng)備份...2006-12-12PHP實(shí)現(xiàn)在數(shù)據(jù)庫(kù)百萬(wàn)條數(shù)據(jù)中隨機(jī)獲取20條記錄的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)在數(shù)據(jù)庫(kù)百萬(wàn)條數(shù)據(jù)中隨機(jī)獲取20條記錄的方法,涉及php簡(jiǎn)單數(shù)據(jù)庫(kù)查詢與隨機(jī)數(shù)操作相關(guān)技巧,需要的朋友可以參考下2017-04-04