#CentOS上的PHP版本十分古老,滿足不了一些框架對PHP版本的要求。於是,出現了許多第三方軟體函式庫,如EPEL、RPM Fusion、Remi等,這些函式庫提供了新版的PHP。讓我們的系統能與時俱進。
但是,第三方軟體庫有幾個缺點:第一,他們提供的軟體沒有經過CentOS官方測試,在安裝軟體的同時,可能會替換掉系統的一些核心文件,造成系統不穩定。第二,第三方函式庫安裝的軟體可能不保證相容性,也許對系統升個級就會導致某個軟體無法使用。
所以這篇推薦用SCL(Software Collections)軟體庫安裝高版本的PHP。 SCL屬於CentOS官方的軟體庫,經過充分測試,安裝軟體時不會取代系統的核心文件,確保了系統的穩定性。
安裝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而不是第三方函式庫提供的。作者猜測這個前綴規範是2015年左右制定的,PHP5.4 & 5.5是在這之前發布的,為了保證你的程序的兼容性(比如你的某些程序裡已經寫了yum install php55,加個前綴程式就掛了),就沒帶rh- 前綴。
接下來,安裝PHP7.0:
[root@localhost]# yum install rh-php70
安裝完之後,PHP實際上會安裝在/opt/rh目錄下。
此時如果你執行php指令,系統還是會提示你command not found。這是因為,SCL的風格就是把軟體對系統的影響減少到最小,甚至安裝完PHP,php指令都不會被加入到$PATH 變數中,所以你沒辦法直接執行軟體中的命令的。需要透過scl enable 指令顯示執行:
先看看SCL安裝了哪些軟體:
[root@localhost]# scl -lrh-php70
可以看到我們在系統安裝了一個rh-php70,先啟用它並執行命令:
[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
命令成功執行了。要是每個指令都要這麼執行,太麻煩了!不要緊,你可以不用每次執行一條指令,而是直接執行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 方式管理軟體,雖然在使用上增加了一點點的麻煩,但這絕對地保證了系統穩定性。而且這麼做還有一個好處:就是系統上可以多個PHP版本共存而互相不衝突。方便你測試程式碼或框架,在各個版本PHP上的相容性。
總之,要做一個嚴謹的維,本篇還是十分推薦用SCL管理你係統上的軟體。
CentOS上的PHP版本都很古老,滿足不了一些框架對PHP版本的要求。於是,出現了許多第三方軟體函式庫,如EPEL、RPM Fusion、Remi等,這些函式庫提供了新版的PHP。讓我們的系統能與時俱進。
但是,第三方軟體庫有幾個缺點:第一,他們提供的軟體沒有經過CentOS官方測試,在安裝軟體的同時,可能會替換掉系統的一些核心文件,造成系統不穩定。第二,第三方函式庫安裝的軟體可能不保證相容性,也許對系統升個級就會導致某個軟體無法使用。
所以這篇推薦用SCL(Software Collections)軟體庫安裝高版本的PHP。 SCL屬於CentOS官方的軟體庫,經過充分測試,安裝軟體時不會取代系統的核心文件,確保了系統的穩定性。
安裝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而不是第三方函式庫提供的。作者猜測這個前綴規範是2015年左右制定的,PHP5.4 & 5.5是在這之前發布的,為了保證你的程序的兼容性(比如你的某些程序裡已經寫了yum install php55,加個前綴程式就掛了),就沒帶rh- 前綴。
接下來,安裝PHP7.0:
[root@localhost]# yum install rh-php70
安裝完之後,PHP實際上會安裝在/opt/rh目錄下。
此时如果你运行php命令,系统依然会提示你command not found。这是因为,SCL的风格就是把软件对系统的影响减少到最小,甚至安装完PHP,php命令都不会被添加到 $PATH 变量中,所以你没法直接执行软件中的命令的。需要通过 scl enable 命令显示执行:
先看看SCL安装了哪些软件:
[root@localhost]# scl -lrh-php70
可以看到我们在系统安装了一个rh-php70,先启用它并执行命令:
[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
命令成功执行了。要是每一条命令都要这么执行,太麻烦了!不要紧,你可以不用每次执行一条命令,而是直接执行 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 方式管理软件,虽然在使用上增加了一点点的麻烦,但这绝对地保证了系统稳定性。而且这么做还有一个好处:就是系统上可以多个PHP版本共存而互相不冲突。方便你测试代码或者框架,在各个版本PHP上的兼容性。
总之,要做一个严谨的运维,本篇还是十分推荐用SCL管理你系统上的软件。
推荐教程:《php视频教程》
以上是CentOS安裝PHP7的正確方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!