centos 7 编译安装 php 7.2.5 多版本php共存

 

系统本来已经安装了php 5.6.34

 

结果发现编译安装的时候发现没有开启php-fpm 找了半天 不知道怎么重启php emmmmmmm

 

 

然后弄了半天决定 在重新编译安装下最新的php

 

php-7.2.5.tar.gz 下载页面

下载目录/usr/src

下载php

[root@izm5e16gjdevwdl8q7q3qoz src]# wget http://hk1.php.net/distributions/php-7.2.5.tar.gz

解压

[root@izm5e16gjdevwdl8q7q3qoz src]# tar zxvf php-7.2.5.tar.gz

 

[root@izm5e16gjdevwdl8q7q3qoz src]# cd php-7.2.5

 

安装依赖

yum install -y gcc gcc-c++ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel sqlite-devel bzip2-devel libXpm-devel libmcrypt libmcrypt-devel libcurl libcurl-devel libicu libicu-devel icu

 

开始编译安装

./configure --prefix=/usr/local/php7 --enable-fpm --with-mysql --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-mbregex --enable-phar --enable-posix --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-zip --enable-inline-optimization --enable-intl --with-icu-dir=/usr --with-gd --with-xpm-dir --with-bz2 --with-gettext --with-iconv --with-mcrypt --with-mhash --with-zlib --with-pcre-regex --with-regex

  

 

./configure --prefix=/usr/local/php7 --enable-fpm --with-mysql --with-mysqli --with-pdo-mysql --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-mbregex --enable-phar --enable-posix --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-zip --enable-inline-optimization --enable-intl --with-icu-dir=/usr --with-gd --with-xpm-dir --with-bz2 --with-gettext --with-iconv --with-mcrypt --with-mhash --with-zlib --with-pcre-regex --with-regex

 

make && make install 

漫长的等待后

默认扩展库:/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718

 

 拷贝php7源码目录 php.ini-production到安装目录下

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# cp php.ini-production /usr/local/php7/php.ini

 

 

编辑php.ini

 

 

php源码目录下的sapi/fpm/init.d.php-fpm 复制到/etc/init.d下 并重命名为php-fpm

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

重命名php-fpm配置文件
[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

重命名www.conf配置文件 

cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

 

添加环境变量

vi /etc/profile.d/php.sh

按I键

添加

export PATH=$PATH:/usr/local/php7/bin/:/usr/local/php7/sbin/

ESC 

:wq

回车退出

生效环境变量

source /etc/profile.d/php.sh

 

查看环境变量(/etc/profile)

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/php7/bin/:/usr/local/php7/sbin  

 

虽然生效了 不过是在后面 被前面的覆盖住了

这时候php -v查询的还是以前的版本

 

 

添加系统组

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# groupadd -r php-fpm

 

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# useradd -r php-fpm

 

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# vi /usr/local/php7/etc/php-fpm.conf

修改系统配置目录下的 `php-fpm` 文件可执行权限

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# chmod +x /etc/init.d/php-fpm

将系统配置目录下的 `php-fpm` 添加到 `系统服务`

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# chkconfig --add php-fpm

设置 `php-fpm` `系统服务` 为开机启动

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# chkconfig php-fpm on

 

检测php-fpm是否启动

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# chkconfig --list | grep php-fpm

 

检测php-fpm配置文件是否正确

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# php-fpm -t

 

启动php服务

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# systemctl start php-fpm.service

查看php服务状态

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# systemctl status php-fpm.service

 

apache 虚拟主机配置文件 设置不同php版本

首先保证httpd.conf配置文件里有

1)

AddType application/x-httpd-php  .php
AddType application/x-httpd-php-source  .phps

2)

 DirectoryIndex  index.php  index.html

3)这两个模块要保证打开了

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

 

 

虚拟主机配置文件添加

//关闭正向代理

ProxyRequests Off

//遇到php用那个处理 加粗的为网站目录路径
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html1/public/$1

不同版本的php注册php-fpm 的不同端口实现 这里默认是9000 后面不同版本就要用9001往后推这种的了

 

ProxyRequests Off:关闭正向代理
ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

 

重启php服务

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# service php-fpm restart

重启httpd

[root@izm5e16gjdevwdl8q7q3qoz php-7.2.5]# systemctl restart httpd

 

 参考资料:

CentOS7.3编译安装php7.1

CentOS 7 和 Nginx 下实现多版本 PHP 的共存

如何在CentOS下PHP多版本共存时指定命令行状态默认使用的PHP版本

 

 

编译安装php 5.6.36

http://www.php.net/downloads.php

下载目录 /usr/src

[root@izm5e16gjdevwdl8q7q3qoz src]# wget http://cn2.php.net/distributions/php-5.6.36.tar.gz

[root@izm5e16gjdevwdl8q7q3qoz src]# tar zxvf php-5.6.36.tar.gz

[root@izm5e16gjdevwdl8q7q3qoz src]# cd php-5.6.36

yum install -y gcc gcc-c++ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel sqlite-devel bzip2-devel libXpm-devel libmcrypt libmcrypt-devel libcurl libcurl-devel libicu libicu-devel icu

[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]# ./configure --prefix=/usr/local/php56 --enable-fpm --with-mysql --with-mysqli --with-pdo-mysql --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-mbregex --enable-phar --enable-posix --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-zip --enable-inline-optimization --enable-intl --with-icu-dir=/usr --with-gd --with-xpm-dir --with-bz2 --with-gettext --with-iconv --with-mcrypt --with-mhash --with-zlib --with-pcre-regex --with-regex

[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]# make && make install

 

[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]# cp php.ini-production /usr/local/php56/php.ini

[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]# vi /usr/local/php56/php.ini

 搜索

date.timezone = PRC

 

[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]#  cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]# cp /usr/local/php56/etc/php-fpm.conf.default /usr/local/php56/etc/php-fpm.conf

这里配置文件改下端口默认9000,这里修改9001

然后文件名改成php-fpm56.conf.其他地方一样改下名称

 

[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]# cp /usr/local/php56/etc/php-fpm.conf.default /usr/local/php56/etc/www.conf

[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]# chmod +x /etc/init.d/php-fpm

[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]# chkconfig --add php-fpm

[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]# chkconfig php-fpm on

[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]# systemctl start php-fpm.service
[root@izm5e16gjdevwdl8q7q3qoz php-5.6.36]# systemctl status php-fpm.service

 

posted @ 2018-05-05 10:40  星耀学园  阅读(1855)  评论(0)    收藏  举报