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
参考资料:
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


浙公网安备 33010602011771号