一、需求
有些时候我们需要安装不同版本的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”安装方式,也是为了方便维护。
网友评论