0基礎自學linux運維-2.13-centos 7 yum安裝php各種版本及模塊安裝方法

一、需求

?? 有些時候我們需要安裝不同版本的php,目前php版本的php5.4、php5.5、php5.6、php7.0已經沒有下載地址了,只有php7.1、php7.2、php7.3,那么如何安裝其中一個版本呢?安裝版本后發現插件少了一個需要安裝怎搞?

1.安裝任意一個版本可以用remi源安裝,默認的源只有php5.5

2.如果要安裝插件可以直接yum install插件名或者用phpize進行安裝


二、指定安裝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. 指定源

#指定源我們會用到yum的一個參數

--enablerepo=[repo]?? 啟用一個或多個軟件源(支持通配符)

如:我這里用的是remi源,所以格式為

yum --enablerepo=remi <參數> <name>

#還可以多個,如我指定php73的,可以寫成

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擴展模塊,命令如下

#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

從上面的圖中可以看出,在安裝的時候使用了指定的remi源,如果不指定可能會找不到。

#查看所安裝模擬

?php –m


三、安裝php擴展

3.1 直接用yum安裝擴展(方法一)

安裝php擴展最方便的方式就是:

yum --enablerepo=remi,php73 install <php-名字/php-pecl-名字>

你肯定會問什么時候用“php-名字”什么時候用“php-pecl-名字”,這得先說一下什么是pecl?百科解釋:

PECL 的全稱是The PHP Extension Community Library ,是一個開放的并通過 PEAR(PHP Extension and

Application Repository,PHP 擴展和應用倉庫)打包格式來打包安裝的 PHP 擴展庫倉庫。通過 PEAR 的Package Manager 的安裝管理方式,可以對 PECL 模塊進行下載和安裝。與以往的多數 PEAR 包不同的是,PECL 擴展包含的是可以編譯進 PHP Core 的 C 語言代碼,因此可以將 PECL 擴展庫編譯成為可動態加載的 .so 共享庫,或者采用靜態編譯方式與 PHP 源代碼編譯為一體的方法進行擴展。PECL 擴展庫包含了對于 XML 解析,數據庫訪問,郵件解析,嵌入式的 Perl 以及Python 腳本解釋器等諸多的 PHP 擴展模塊,因此從某種意義上來說,在運行效率上 PECL 要高于以往諸多的 PEAR 擴展庫。

?? ?就一句話:就是php的擴展倉庫,它包含各種php模塊,有它就找php擴展就方便,只要按照它的說明安裝就好。pecl官網地址:http://pecl.php.net

? ??從上面來說“php-名字”和“php-pecl-名字”區別是一個是在pecl倉庫的,一個是不在的一些php自帶的就可以直接用”php-名字”,其它都用”php-pecl”。

如果還是一臉懵,那就是先用“php-名字”,不行再用“php-pecl-名字”安裝^_^


#如上面少了一個redis,我后面發現要安裝一個redis,那么就可以直接

yum --enablerepo=remi,remi-php73 install -y php-pecl-redis

#卸載也簡單

yum remove php-pecl-redis –y

細心的朋友會發現怎么redis版本都會自動匹配的,如果我想安裝其它版本呢?或者我

“yum --enablerepo=remi,remi-php73 install xxx”出不來php的擴展呢。那么得就用phpize安裝pecl擴展了。


3.2 用phpize安裝php擴展(方法二)

3.2.1 什么是phpize

在使用php的過程中,我們常常需要去添加一些PHP擴展庫。但是重新對php進行編譯是比較蠻煩的,所以這時候我們可以使用phpize對php進行添加擴展。并且phpize編譯的擴展庫可以隨時啟用或停用,比較靈活。

3.2.2 phpize使用方法

extention為要掛載的擴展包

1) wget extension.tar.gz下載相應的擴展包并解壓。

2) cd extension/切換到擴展extension的目錄中

3) /php/bin/phpize 運行php安裝目錄下的phpize文件,這時候會在extension目錄下生成相應的configure文件。

4) ./configure --with-php-config=/php/bin/php-config 運行配置,如果你的服務器上只是裝了一個版本的php則不需要添加--with-php-config 。后面的參數只是為了告訴phpize要建立基于哪個版本的擴展。

5) make && make install 編譯模塊

6) 編譯好模塊之后,需要讓php啟用它。在php.ini文件中加入把extension.so開啟即可。重啟php服務。

其實phpize是一個運行腳本,主要作用是檢測php的環境還有就是在特定的目錄生成相應的configure文件,這樣makeinstall之后,生成的.so文件才會自動加載到php擴展目錄下面。

3.2.3 例子

我們還是以redis為例子,進行操作

#1. 去pecl官網pecl.php.net,去搜索一下redis,發現只有一個redis,點擊進入redis下載面頁面,在這里我下載redis4的最新版本

#也可以用wget下載

wget http://pecl.php.net/get/redis-4.3.0.tgz

#2.安裝redis擴展

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

通過上圖知道php的redis模塊所在的位置

ll /usr/lib64/php/modules/redis.so

#3.把模塊配置到php中去

因為是yum安裝的php,模塊已經放在默認位置了,所以直接打這個功能打開就行了

cp /etc/php.ini /etc/php.ini.orig

#在第915行和別的擴展一樣,添加extension=redis.so

sed -i '910a\extension=redis.so' /etc/php.ini

grep 'redis.so' /etc/php.ini

#重啟php生效,因為我用的是LNNP所以重啟php-fpm就行了

systemctl restart php-fpm

php -m|grep redis


四、小結

這里介紹了php指定版本的安裝使用的是remi源,并沒有使用源安裝,也符合“方便易維護”的原則。

在使用安裝php擴展的時候我也盡量用yum安裝,不行的話也是用“yum+phpize”安裝方式,也是為了方便維護。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容