一、需求
?? 有些時(shí)候我們需要安裝不同版本的php,目前php版本的php5.4、php5.5使套、php5.6枣宫、php7.0已經(jīng)沒(méi)有下載地址了,只有php7.1彭谁、php7.2、php7.3,那么如何安裝其中一個(gè)版本呢戈咳?安裝版本后發(fā)現(xiàn)插件少了一個(gè)需要安裝怎搞?
1.安裝任意一個(gè)版本可以用remi源安裝壕吹,默認(rèn)的源只有php5.5
2.如果要安裝插件可以直接yum install插件名或者用phpize進(jìn)行安裝
二著蛙、指定安裝php版本
2.1 安裝指定的php版本
#1.安裝epel和remi源
mkdir /disk1/tools
cd /disk1/tools/
#不行就用wget下載
rpm-Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wge thttp://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ih remi-release-7.rpm
#2. 指定源
#指定源我們會(huì)用到y(tǒng)um的一個(gè)參數(shù)
--enablerepo=[repo]?? 啟用一個(gè)或多個(gè)軟件源(支持通配符)
如:我這里用的是remi源,所以格式為
yum --enablerepo=remi <參數(shù)> <name>
#還可以多個(gè)耳贬,如我指定php73的踏堡,可以寫(xiě)成
yum --enablerepo=remi,php73 install xxx
#3.安裝依賴
yum -y install libxml2-develbzip2-devel libpng-devel libmcrypt-devel libjpeg \
libjpeg-devel freetype freetype-devel? openssl-devel libcurl-devel gmp-devel \
libxslt-devel zlib zlib-develcurl curl-devel ncurses ncurses-devel gd-devel \
openssl-devel? ImageMagick-devel
#4.在這里我想安裝最新的php7.3及一些常用的php擴(kuò)展模塊咒劲,命令如下
#remi源安裝php7.3(gd+freetype)+imagick
yum --enablerepo=remi,remi-php73-y install php php-devel php-mysql?php-gd \
php-bcmath php-mbstringphp-mcrypt php-mhash php-pdo php-pecl-imagick php-fpm
從上面的圖中可以看出顷蟆,在安裝的時(shí)候使用了指定的remi源,如果不指定可能會(huì)找不到腐魂。
#查看所安裝模擬
?php –m
三帐偎、安裝php擴(kuò)展
3.1 直接用yum安裝擴(kuò)展(方法一)
安裝php擴(kuò)展最方便的方式就是:
yum --enablerepo=remi,php73 install <php-名字/php-pecl-名字>
你肯定會(huì)問(wèn)什么時(shí)候用“php-名字”什么時(shí)候用“php-pecl-名字”,這得先說(shuō)一下什么是pecl蛔屹?百科解釋:
PECL 的全稱是The PHP Extension Community Library 削樊,是一個(gè)開(kāi)放的并通過(guò) PEAR(PHP Extension and
Application Repository,PHP 擴(kuò)展和應(yīng)用倉(cāng)庫(kù))打包格式來(lái)打包安裝的 PHP 擴(kuò)展庫(kù)倉(cāng)庫(kù)兔毒。通過(guò) PEAR 的Package Manager 的安裝管理方式嫉父,可以對(duì) PECL 模塊進(jìn)行下載和安裝沛硅。與以往的多數(shù) PEAR 包不同的是,PECL 擴(kuò)展包含的是可以編譯進(jìn) PHP Core 的 C 語(yǔ)言代碼绕辖,因此可以將 PECL 擴(kuò)展庫(kù)編譯成為可動(dòng)態(tài)加載的 .so 共享庫(kù)摇肌,或者采用靜態(tài)編譯方式與 PHP 源代碼編譯為一體的方法進(jìn)行擴(kuò)展。PECL 擴(kuò)展庫(kù)包含了對(duì)于 XML 解析仪际,數(shù)據(jù)庫(kù)訪問(wèn)围小,郵件解析,嵌入式的 Perl 以及Python 腳本解釋器等諸多的 PHP 擴(kuò)展模塊树碱,因此從某種意義上來(lái)說(shuō)肯适,在運(yùn)行效率上 PECL 要高于以往諸多的 PEAR 擴(kuò)展庫(kù)。
?? ?就一句話:就是php的擴(kuò)展倉(cāng)庫(kù)成榜,它包含各種php模塊框舔,有它就找php擴(kuò)展就方便,只要按照它的說(shuō)明安裝就好赎婚。pecl官網(wǎng)地址:http://pecl.php.net
? ??從上面來(lái)說(shuō)“php-名字”和“php-pecl-名字”區(qū)別是一個(gè)是在pecl倉(cāng)庫(kù)的刘绣,一個(gè)是不在的一些php自帶的就可以直接用”php-名字”,其它都用”php-pecl”挣输。
如果還是一臉懵纬凤,那就是先用“php-名字”,不行再用“php-pecl-名字”安裝^_^
#如上面少了一個(gè)redis撩嚼,我后面發(fā)現(xiàn)要安裝一個(gè)redis停士,那么就可以直接
yum --enablerepo=remi,remi-php73 install -y php-pecl-redis
#卸載也簡(jiǎn)單
yum remove php-pecl-redis –y
細(xì)心的朋友會(huì)發(fā)現(xiàn)怎么redis版本都會(huì)自動(dòng)匹配的,如果我想安裝其它版本呢完丽?或者我
“yum --enablerepo=remi,remi-php73 install xxx”出不來(lái)php的擴(kuò)展呢恋技。那么得就用phpize安裝pecl擴(kuò)展了。
3.2 用phpize安裝php擴(kuò)展(方法二)
3.2.1 什么是phpize
在使用php的過(guò)程中逻族,我們常常需要去添加一些PHP擴(kuò)展庫(kù)猖任。但是重新對(duì)php進(jìn)行編譯是比較蠻煩的,所以這時(shí)候我們可以使用phpize對(duì)php進(jìn)行添加擴(kuò)展瓷耙。并且phpize編譯的擴(kuò)展庫(kù)可以隨時(shí)啟用或停用,比較靈活刁赖。
3.2.2 phpize使用方法
extention為要掛載的擴(kuò)展包
1) wget extension.tar.gz下載相應(yīng)的擴(kuò)展包并解壓搁痛。
2) cd extension/切換到擴(kuò)展extension的目錄中
3) /php/bin/phpize 運(yùn)行php安裝目錄下的phpize文件,這時(shí)候會(huì)在extension目錄下生成相應(yīng)的configure文件宇弛。
4) ./configure --with-php-config=/php/bin/php-config 運(yùn)行配置鸡典,如果你的服務(wù)器上只是裝了一個(gè)版本的php則不需要添加--with-php-config 。后面的參數(shù)只是為了告訴phpize要建立基于哪個(gè)版本的擴(kuò)展枪芒。
5) make && make install 編譯模塊
6) 編譯好模塊之后彻况,需要讓php啟用它谁尸。在php.ini文件中加入把extension.so開(kāi)啟即可。重啟php服務(wù)纽甘。
其實(shí)phpize是一個(gè)運(yùn)行腳本良蛮,主要作用是檢測(cè)php的環(huán)境還有就是在特定的目錄生成相應(yīng)的configure文件,這樣makeinstall之后,生成的.so文件才會(huì)自動(dòng)加載到php擴(kuò)展目錄下面悍赢。
3.2.3 例子
我們還是以redis為例子决瞳,進(jìn)行操作
#1. 去pecl官網(wǎng)pecl.php.net,去搜索一下redis左权,發(fā)現(xiàn)只有一個(gè)redis皮胡,點(diǎn)擊進(jìn)入redis下載面頁(yè)面,在這里我下載redis4的最新版本
#也可以用wget下載
wget http://pecl.php.net/get/redis-4.3.0.tgz
#2.安裝redis擴(kuò)展
tar -xf redis-4.3.0.tgz
cd redis-4.3.0
phpize
./configure --with-php-config=/usr/bin/php-config
make
make test
make install
cd
通過(guò)上圖知道php的redis模塊所在的位置
ll /usr/lib64/php/modules/redis.so
#3.把模塊配置到php中去
因?yàn)槭莥um安裝的php赏迟,模塊已經(jīng)放在默認(rèn)位置了屡贺,所以直接打這個(gè)功能打開(kāi)就行了
cp /etc/php.ini /etc/php.ini.orig
#在第915行和別的擴(kuò)展一樣,添加extension=redis.so
sed -i '910a\extension=redis.so' /etc/php.ini
grep 'redis.so' /etc/php.ini
#重啟php生效锌杀,因?yàn)槲矣玫氖荓NNP所以重啟php-fpm就行了
systemctl restart php-fpm
php -m|grep redis
四甩栈、小結(jié)
這里介紹了php指定版本的安裝使用的是remi源,并沒(méi)有使用源安裝抛丽,也符合“方便易維護(hù)”的原則谤职。
在使用安裝php擴(kuò)展的時(shí)候我也盡量用yum安裝,不行的話也是用“yum+phpize”安裝方式亿鲜,也是為了方便維護(hù)允蜈。