centos 安装PHP7并且与其他版本共存

wget -c -Ophp-7.1.5.tar.gz http://cn2.php.net/get/php-7.1.5.tar.gz/from/this/mirror
tar -xvf php-7.1.5.tar.gz
cd php-7.1.5


在安装之前首先要搞定一些依赖,不过有一些依赖我在安装PHP5.6.30的时候都安装过了,还有少数部分依赖没有安装,那么我也给出全新的依赖谁让我们是伸手党,安装过了重新安装也没啥

yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

上面的依赖安装好后,那么就是配置一下PHP7 要安装的路径与开启的模块等, 这里要说一下与mysqlq链接的配置,默认的一个配置的路径是 --with-mysql-sock=/tmp/mysql.sock

这是默认路径,在确保mysql启动的状态下看看 这个mysql.sock在不,如果不存在,使用下面命令找一下

find / -name mysql.sock


应该会显示具体的路径,然后把地址替换了上面的配置的地址,如果是阿里云主机有RDS数据库或有专用的数据库服务器,那个参数就可以直接干掉,当然你创建一个软链接也是可以的。

 

./configure \
--prefix=/usr/local/php7 \
--exec-prefix=/usr/local/php7 \
--bindir=/usr/local/php7/bin \
--sbindir=/usr/local/php7/sbin \
--includedir=/usr/local/php7/include \
--libdir=/usr/local/php7/lib/php \
--mandir=/usr/local/php7/php/man \
--with-config-file-path=/usr/local/php7/etc \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-mcrypt=/usr/include \
--with-mhash \
--with-openssl \
--with-mysqli=shared,mysqlnd \
--with-pdo-mysql=shared,mysqlnd \
--with-gd \
--with-iconv \
--with-zlib \
--enable-zip \
--enable-inline-optimization \
--enable-sockets \
--enable-soap \
--enable-session \
--with-curl \
--enable-opcache \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
make && make install



安装好后,来设置PHP7的配置文件:php.ini php-fpm.conf和php-fpm启动脚本

cp ./php.ini-production /usr/local/php7/etc/php.ini
cp ./sapi/fpm/php-fpm.conf /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm
chmod 755 /etc/init.d/php7-fpm


上面的命令执行后,来修改一下/usr/local/php7/etc/php-fpm.d目录下的www.conf里的 listen = 127.0.0.1:9000为listen = 127.0.0.1:9001

 

如果有老版本的php-fpm使用了9000端口,那么PHP7的fpm端口要修改成9001,具体你自己定

 

把php7-fpm加入开机启动

chkconfig --add php7-fpm
chkconfig php7-fpm on


启动php7-fpm

service php7-fpm start
service php7-fpm stop
service php7-fpm restart
service php7-fpm reload


start,启动PHP的FastCGI进程

stop,强制终止PHP的FastCGI进程

quit,平滑终止PHP的FastCGI进程

restart, 重启PHP的FastCGI进程

reload, 重新加载PHP的php.ini

logrotate, 重新启用log文件

 

 

PHP7-fpm重动完成后,来配置一个nginx可以使用PHP7

fastcgi_pass  127.0.0.1:9001;




PHP7安装redis


phpredis在php7、php5下都有不同的版本,装岔了可能会编译报错,所以在安装之前请先看下自己的PHP是啥版本。

我的Redis装的是redis3.2.3版本。

用phpinfo()查看安装的php信息。

确认是php7后开始安装。

下载地址: git clone https://github.com/phpredis/phpredis.git  (现已支持PHP7)

然后进入文件的目录,开始重新编译phpize:

cd phpredis
/usr/local/php7/bin/phpize
./configure --with-php-config=/usr/local/php7/bin/php-config

     注意这个php-config文件有的版本是在/usr/local/php/bin下,装的时候多找找

make && make install

最后在/usr/local/php7/etc/php.ini 里面加入:extension=redis.so   php.ini文件也是藏匿在lib、etc、bin这仨之一,装的时候多找找

重启HTTP应用程序如:nginx

这时候再次打开phpinfo()页面,搜索redis看能不能找到

大功告成


[附加说明:如果是php7.2以上 mcrypt扩展默认被移除,需要自动安装]

如果以上方法不行,参考下面步骤处理

从 mcrypt库地址 下载适用版本,然后解压

wget http://pecl.php.net/get/mcrypt-1.0.1.tgz 
tar zxvf mcrypt-1.1.1.tgz


cd mcrypt-xxx

/usr/local/php7.2.10/bin/phpize   #此处的phpize是php7.2以上安装目录地址

./configure --with-php-config=/usr/local/php7.2.10/bin/php-config

make && make install

最后配置php.ini

最后配置php的扩展配置,添加extension=mcrypt.so就可以了