CentOS上的PHP版本都十分古老,滿足不了一些框架對PHP版本的要求。于是,出現(xiàn)了許多第三方軟件庫,如EPEL、RPM Fusion、Remi等,這些庫提供了新版的PHP。讓我們的系統(tǒng)能與時俱進(jìn)。
但是,第三方軟件庫有幾個缺點(diǎn):第一,他們提供的軟件沒有經(jīng)過CentOS官方測試,在安裝軟件的同時,可能會替換掉系統(tǒng)的一些核心文件,造成系統(tǒng)不穩(wěn)定。第二,第三方庫安裝的軟件可能不保證兼容性,也許對系統(tǒng)升個級就會導(dǎo)致某個軟件沒法使用。
所以本篇推薦用SCL(Software Collections)軟件庫安裝高版本的PHP。SCL屬于CentOS官方的軟件庫,經(jīng)過充分測試,安裝軟件時不會替換系統(tǒng)的核心文件,保證了系統(tǒng)的穩(wěn)定性。
安裝SCL很簡單,只需一條命令就可以了:
[root@localhost]# yum install centos-release-scl-rh
然后就能在yum中搜到新版的PHP了:
[root@localhost]# yum search php...php54-runtime.x86_64 php55-runtime.x86_64 rh-php56-runtime.x86_64 rh-php70-runtime.x86_64...
rh- 前綴是RedHat的意思,告訴你這是官方提供的PHP而不是第三方庫提供的。作者猜測這個前綴規(guī)范是2015年左右制定的,PHP5.4 & 5.5是在這之前發(fā)布的,為了保證你的程序的兼容性(比如你的某些程序里已經(jīng)寫了yum install php55,加個前綴程序就掛了),就沒帶上rh- 前綴。
接下來,安裝PHP7.0:
[root@localhost]# yum install rh-php70
安裝完之后,PHP實(shí)際會安裝在/opt/rh目錄下。
此時如果你運(yùn)行php命令,系統(tǒng)依然會提示你command not found。這是因?yàn)?,SCL的風(fēng)格就是把軟件對系統(tǒng)的影響減少到最小,甚至安裝完P(guān)HP,php命令都不會被添加到 $PATH 變量中,所以你沒法直接執(zhí)行軟件中的命令的。需要通過 scl enable 命令顯示執(zhí)行:
先看看SCL安裝了哪些軟件:
[root@localhost]# scl -lrh-php70
可以看到我們在系統(tǒng)安裝了一個rh-php70,先啟用它并執(zhí)行命令:
[root@localhost]# scl enable rh-php70 "php -v"PHP 7.0.10 (cli) (built: Nov 3 2016 08:06:03) ( NTS )Copyright (c) 1997-2016 The PHP GroupZend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
命令成功執(zhí)行了。要是每一條命令都要這么執(zhí)行,太麻煩了!不要緊,你可以不用每次執(zhí)行一條命令,而是直接執(zhí)行 bash 命令,那么新開的shell就能自動識別php了:
[root@localhost]# scl enable rh-php70 bash[root@localhost]# php -vPHP 7.0.10 (cli) (built: Nov 3 2016 08:06:03) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies [root@localhost ~]# php -m[PHP Modules] bz2 calendar...
SCL以 scl enable 方式管理軟件,雖然在使用上增加了一點(diǎn)點(diǎn)的麻煩,但這絕對地保證了系統(tǒng)穩(wěn)定性。而且這么做還有一個好處:就是系統(tǒng)上可以多個PHP版本共存而互相不沖突。方便你測試代碼或者框架,在各個版本PHP上的兼容性。
總之,要做一個嚴(yán)謹(jǐn)?shù)倪\(yùn)維,本篇還是十分推薦用SCL管理你系統(tǒng)上的軟件。
CentOS上的PHP版本都十分古老,滿足不了一些框架對PHP版本的要求。于是,出現(xiàn)了許多第三方軟件庫,如EPEL、RPM Fusion、Remi等,這些庫提供了新版的PHP。讓我們的系統(tǒng)能與時俱進(jìn)。
但是,第三方軟件庫有幾個缺點(diǎn):第一,他們提供的軟件沒有經(jīng)過CentOS官方測試,在安裝軟件的同時,可能會替換掉系統(tǒng)的一些核心文件,造成系統(tǒng)不穩(wěn)定。第二,第三方庫安裝的軟件可能不保證兼容性,也許對系統(tǒng)升個級就會導(dǎo)致某個軟件沒法使用。
所以本篇推薦用SCL(Software Collections)軟件庫安裝高版本的PHP。SCL屬于CentOS官方的軟件庫,經(jīng)過充分測試,安裝軟件時不會替換系統(tǒng)的核心文件,保證了系統(tǒng)的穩(wěn)定性。
安裝SCL很簡單,只需一條命令就可以了:
[root@localhost]# yum install centos-release-scl-rh
然后就能在yum中搜到新版的PHP了:
[root@localhost]# yum search php...php54-runtime.x86_64 php55-runtime.x86_64 rh-php56-runtime.x86_64 rh-php70-runtime.x86_64...
rh- 前綴是RedHat的意思,告訴你這是官方提供的PHP而不是第三方庫提供的。作者猜測這個前綴規(guī)范是2015年左右制定的,PHP5.4 & 5.5是在這之前發(fā)布的,為了保證你的程序的兼容性(比如你的某些程序里已經(jīng)寫了yum install php55,加個前綴程序就掛了),就沒帶上rh- 前綴。
接下來,安裝PHP7.0:
[root@localhost]# yum install rh-php70
安裝完之后,PHP實(shí)際會安裝在/opt/rh目錄下。
此時如果你運(yùn)行php命令,系統(tǒng)依然會提示你command not found。這是因?yàn)?,SCL的風(fēng)格就是把軟件對系統(tǒng)的影響減少到最小,甚至安裝完P(guān)HP,php命令都不會被添加到 $PATH 變量中,所以你沒法直接執(zhí)行軟件中的命令的。需要通過 scl enable 命令顯示執(zhí)行:
先看看SCL安裝了哪些軟件:
[root@localhost]# scl -lrh-php70
可以看到我們在系統(tǒng)安裝了一個rh-php70,先啟用它并執(zhí)行命令:
[root@localhost]# scl enable rh-php70 "php -v"PHP 7.0.10 (cli) (built: Nov 3 2016 08:06:03) ( NTS )Copyright (c) 1997-2016 The PHP GroupZend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
命令成功執(zhí)行了。要是每一條命令都要這么執(zhí)行,太麻煩了!不要緊,你可以不用每次執(zhí)行一條命令,而是直接執(zhí)行 bash 命令,那么新開的shell就能自動識別php了:
[root@localhost]# scl enable rh-php70 bash[root@localhost]# php -vPHP 7.0.10 (cli) (built: Nov 3 2016 08:06:03) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies [root@localhost ~]# php -m[PHP Modules] bz2 calendar...
SCL以 scl enable 方式管理軟件,雖然在使用上增加了一點(diǎn)點(diǎn)的麻煩,但這絕對地保證了系統(tǒng)穩(wěn)定性。而且這么做還有一個好處:就是系統(tǒng)上可以多個PHP版本共存而互相不沖突。方便你測試代碼或者框架,在各個版本PHP上的兼容性。
總之,要做一個嚴(yán)謹(jǐn)?shù)倪\(yùn)維,本篇還是十分推薦用SCL管理你系統(tǒng)上的軟件。
推薦教程:《php視頻教程》