php5共存php7

PHP7与PHP5共存于CentOS7

原文参考

原理

思路很简单:PHP5是通过yum安装的在/usr/,套接字在/var/run/php-fpm.socket,PHP7自己编译装在/usr/local/php7,套接字在/var/run/php7-fpm.socket,nignx根据应用需要跑的环境指定fastcgi_pass。

或者两个不同的端口,一个使用默认的9000,一个使用9002

编译并安装PHP7

yum安装编译需要的各种依赖包

    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 -y

接着到官网下载最新的PHP源码,解压

    cd ~
    wget http://am1.php.net/distributions/php-7.1.8.tar.gz
    tar xvf  php-7.1.8.tar.gz
    cd php-7.1.8

然后设置编译参数,这里有几个事情要提一下:

  1. 为了减少后续因为权限导致的问题,建议将nginx和php-fpm用相同的用户和用户组即(--with-fpm-user=nginx --with-fpm-group=nginx)
  2. 为了减少多网卡等复杂网络环境造成的问题,在不使用ipv6网络的情况下关闭ipv6的支持(--disable-ipv6)。 根据自己的情况选择
  3. 开启mysql数据库的API扩展(--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd )
  4. 开启opcache扩展(--enable-opcache)

完整的编译参数:

    ./configure     --prefix=/usr/local/php7     --with-config-file-path=/usr/local/php7/etc     --with-config-file-scan-dir=/usr/local/php7/etc/php.d/     --disable-ipv6      --enable-fpm     --with-fpm-user=nginx      --with-fpm-group=nginx     --enable-inline-optimization     --disable-debug     --disable-rpath     --enable-shared      --enable-soap     --with-libxml-dir     --with-xmlrpc     --with-openssl     --with-mcrypt     --with-mhash     --with-pcre-regex     --with-sqlite3     --with-zlib     --enable-bcmath     --with-iconv     --with-bz2     --enable-calendar     --with-curl     --with-cdb     --enable-dom     --enable-exif     --enable-fileinfo     --enable-filter     --with-pcre-dir     --enable-ftp     --with-gd     --with-openssl-dir     --with-jpeg-dir     --with-png-dir     --with-zlib-dir      --with-freetype-dir     --enable-gd-native-ttf     --enable-gd-jis-conv     --with-gettext     --with-gmp     --with-mhash     --enable-json     --enable-mbstring     --enable-mbregex     --enable-mbregex-backtrack     --with-libmbfl     --with-onig     --enable-pdo     --with-mysqli=mysqlnd     --with-pdo-mysql=mysqlnd     --with-zlib-dir     --with-pdo-sqlite     --with-readline     --enable-session     --enable-shmop     --enable-simplexml     --enable-sockets      --enable-sysvmsg     --enable-sysvsem     --enable-sysvshm     --enable-wddx     --with-libxml-dir     --with-xsl     --enable-zip     --enable-mysqlnd-compression-support     --with-pear     --enable-opcache

设置检查通过之后就是喜闻乐见的make和make install了,有兴趣的可以在make install之前make test一下。

PS: make test很耗费时间,但其实跟make install差不多,在make test后,直接make install很快

配置PHP7

    cp php.ini-production /usr/local/php7/etc/php.ini
    cp /usr/local/php7/etc/php-fpm.conf.default /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

修改相应的配置文件(根据需求修改),下面是配置时区

date.timezone ="Asia/Shanghai"

a.centos7版本启动文件的修改

make install无错安装成功之后就开始进行配置,首先将默认配置复制到指定位置

    cp -R ./sapi/fpm/php-fpm.service /usr/lib/systemd/system/php7-fpm.service
/usr/lib/systemd/system/php7-fpm.service

修改相应路径就好了。。。我也没有测试

b.centos6版本启动文件的修改

    cp -R ./sapi/fpm/init.d.php-fpm /etc/init.d/php7-fpm  # 这样启动的时候名字不会冲突
    chmod +x /etc/init.d/php7-fpm

修改启动项名称vi /etc/init.d/php7-fpm

    prefix=/usr/local/php7
    exec_prefix=${prefix}

    php_fpm_BIN=${exec_prefix}/sbin/php7-fpm
    php_fpm_CONF=${prefix}/etc/php7-fpm.conf
    php_fpm_PID=${prefix}/var/run/php7-fpm.pid

添加开机启动,建立软连

chkconfig --add php7-fpm
chkconfig php7-fpm  on  # 这两步根据需要选择
ln -s  /usr/local/php7/bin/php  /usr/bin/php

启动php7-fpm

centos7

    systemctl enable php7-fpm.service
    systemctl start  php7-fpm.service

centos6

    sudo /etc/init.d/php7-fpm restart
编译报错处理
# 找到类似的报错libiconv_open,因为内容找不到了

PHP7 编译安装时碰到 undefined reference to `libiconv_open‘ 问题解决方法  系统环境centos6.7

make install 的时候遇到错误:

ext/gd/libgd/.libs/gdkanji.o: In function `do_convert‘:
/root/src/php-7.1.3/ext/gd/libgd/gdkanji.c:349: undefined reference to `libiconv_open‘
/root/src/php-7.1.3/ext/gd/libgd/gdkanji.c:364: undefined reference to `libiconv‘
/root/src/php-7.1.3/ext/gd/libgd/gdkanji.c:380: undefined reference to `libiconv_close‘
ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_dtor‘:
/root/src/php-7.1.3/ext/iconv/iconv.c:2565: undefined reference to `libiconv_close‘
ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor‘:
/root/src/php-7.1.3/ext/iconv/iconv.c:2591: undefined reference to `libiconv_open‘
ext/iconv/.libs/iconv.o: In function `_php_iconv_strlen‘:
/root/src/php-7.1.3/ext/iconv/iconv.c:754: undefined reference to `libiconv_open‘
/root/src/php-7.1.3/ext/iconv/iconv.c:778: undefined reference to `libiconv‘
/root/src/php-7.1.3/ext/iconv/iconv.c:812: undefined reference to `libiconv_close‘

解决方法:

vim Makefile,添加"-liconv":
结果如下所示:

EXTRA_LIBS = -lcrypt -lresolv -lcrypt -lrt -lpng -lz -lcurl -lz -lrt -lm -ldl -lnsl -lxml2 -lz -lm -ldl -lcurl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lcrypt -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lxml2 -lz -lm -ldl -lcrypt -liconv

再次 make install 通过

安装扩展模块

mysql模块

由于PHP从5.x开始,PHP连接MYSQL无论使用哪种方式都是使用的mysqlnd驱动,且PHP7已经正式移除了mysql扩展,由于新特性的原因,PHP7针对数据库主机地址为localhost和127.0.0.1时分别会采用unix domain socket和TCP/IP两种不同的方式连接MySQL服务。

而采用unix domain socket方式时PHP7会使用默认的/tmp/mysql.sock作为套接字,但是CentOS7默认MySQL服务MariaDB的套接字位置为/var/lib/mysql/mysql.sock,于是即使是所有数据库连接信息都正确的情况下也会出现诸如“mysqli::real_connect(): (HY000/2002): No such file or directory ” 和 “Error establishing a database connection”之类的错误提示。

不过我们公司使用的是--with-pdo-mysql=mysqlnd 所以没有出现mysql连接问题,这里给遇到的同学一个链接php7_mysql扩展模块安装

redis模块

1.git clone:

git clone  https://github.com/phpredis/phpredis.git

官网:https://github.com/phpredis/phpredis

切换分支:

git checkout -b php7 origin/php7

2.检查PHP扩展

/usr/local/php7/bin/phpize  # 根据个人路径来,如果是php5的扩展模块就不是这个结果了

3.建立编译连接、安装

./configure --with-php-config=/usr/local/php7/bin/php-config
make
make test
make install

4.检查so文件

cd /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303
# 这里的家目录不一样,主要是还是最后一级目录名称
ls

5.修改php.ini

vi /usr/local/php7/etc/php.ini
添加:extension="redis.so"

6.检查模块

php7 -m |grep redis
# php -m是检查扩展模块的

如果有redis则表示正常

7.重启php-fpm

sudo /etc/init.d/php7-fpm restart

nginx 配置

对应的php启动不同的端口,或者socket模式,

# fastcgi_pass  unix:/var/run/php7-fpm.socket;
fastcgi_pass fastcgi_pass   127.0.0.1:9002;

原文地址:https://www.cnblogs.com/irockcode/p/9603589.html

时间: 2024-08-08 18:05:59

php5共存php7的相关文章

安装最新版的wampserver,可以兼容php5和php7

本文介绍的wamp是Windows+Apache+MySQL+PHP+phpMyAdmin,主要应用于开发环境[一键安装包,简单好用]. 这是运行在Windows系统下的官方安装包,可以快速的搭建属于自己项目的PHP环境,搭建运行PHP文件的服务器. 1. 下载安装文件wampserver3.0.4_x64_apache2.4.18_mysql5.7.11_php5.6.19-7.0.4.exe[官网或者百度搜索下载即可] 2. 打开安装包,直接现在"OK" 3. 选择"I

笔记10 LAMP架构(MySQL、mariadb、Apache、PHP5、PHP7、)

MySQL安装 MySQL的几个常用安装包:rpm.源码.二进制免编译 把下载的包保存在这个目录里:cd /usr/local/src  所以要先进入这个目录下 第一步,下载源码包: wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 第二步,解压: tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 第三步,把解压的这个目录

11.10-11.13 PHP5和PHP7安装

11.10-11.12 安装PHP5 PHP官网www.php.net 当前主流版本为5.6/7.1 大部分企业都是用5比较多 1 cd #cd /usr/local/src/ 2 下载包 #wget  http://cn2.php.net/distributions/php-5.6.30.tar.bz2 3 解压 # tar jxvf php-5.6.30.tar.bz2 4 进入包进行初始化.编译.安装 #cd php-5.6.30 5 配置参数:(这配置参数是万金油,参数对应功能,一般无特

wamp集成环境php多版本搭建(php5.5,php5.6,php7.0.6)

首先需要搭建的版本可以在php官方(http://windows.php.net/download)下载对应的版本,X86对应的是32位操作系统,X64对应的是64位操作系统. 1:下载之后解压,把解压的压缩包放在wamp安装目录bin目录下的php文件夹下,同时注意把文件夹名称改成符合wamp规范的名称,比如解压过后名称是php-5.6.19-Win32-VC11-x64要改成php5.6.19记住不要有横杆. 2:然后打开wamp自带的php5.5.12版本文件夹,发现比普通官方文件多了两个

LAMP环境搭建三(centos7)PHP5和PHP7安装

php其实是Apache的扩展模块.(需要最后安装) PHP官网www.php.net 当前主流版本为5.6/7.1 cd /usr/local/src/ wget http://cn2.php.net/distributions/php-5.6.30.tar.gz tar zxf php-5.6.30.tar.gz cd php-5.6.30 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/ap

安装php5、php7

安装php5 php用c语言编写的. 1.下载: [[email protected] package]# wget http://cn2.php.net/distributions/php-5.6.30.tar.gz 2.安装: tar zxvf php-5.6.30.tar.gz cd php-5.6.30/ yum install -y libxml2-devel openssl-devel bzip2-devel libjpeg-devel libpng-devel freetype-d

安装PHP5和PHP7

一.PHP5安装 PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写.PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言.官网:www.php.net 1.下载并解压源码安装包 [[email protected] bin]# cd /usr/local/src/ [[email protected] src]# wget http://cn2.php.net/distributions/php-5.6.30.tar.bz2 [

,2018-2-28 10周1次课 PHP5、PHP7的安装

11.10.11.11.1.12 安装PHP5 [[email protected] ~]# cd /usr/local/src [[email protected] src]# wget http://cn2.php.net/distributions/php-5.6.30.tar.bz2 (过程省略) [[email protected] php-5.6.30]# tar jxvf php-5.6.30.tar.bz2 [[email protected] src]# cd php-5.6.

81.LAMP,PHP5和PHP7安装

PHP描述 PHP(外文名:PHP: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域.PHP 独特的语法混合了C.Java.Perl以及PHP自创的语法.它可以比CGI或者Perl更快速地执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记