zoukankan      html  css  js  c++  java
  • 升级lamp中php5.6到php7.0过程

    升级过程我就直接摘录博友,http://www.tangshuang.net/1765.html,几乎问题和解决办法都是参照他的,所以我也就不另外写了。谢谢!!

    周末看了一下php7的一些情况,被其强大的性能吸引住,准备亲手升级一下php,让网站能够在php7下面跑起来,需要将服务器上的php升级到php7.0.0。

    首先,简单的梳理一下,升级php实际上是对linux上的一个软件(类似编译器)的升级。但是和windows不同,linux上的编译安装不会覆盖原来的软件安装,除非完全覆盖原来的文件(覆盖原来的文件可能导致兼容性问题,其他软件在调用该软件时,可能不支持新版本的功能,新版本也可能不提供老版本的接口)。因此,在linux,我们可以并行运行多个版本的软件,我们同时在服务器上保存php5.6和运行php7.0。

    其次,我们写的php程序要运行,只需要用php软件去执行源代码即可。但是apache要执行我们写的php,就必须调用一个模块来启用php软件执行。因此,我们升级php之后,也需要一个apache模块来让apache可以调用php7.0执行php程序。庆幸的是,在编译php7的时候,可以通过配置参数自动生成apache的libphp7.so,我们只需要修改apache的配置文件,就可以让apache从原来的调用php5切换到php7。

    接下来,我们来安装php7。为方便演示,用root用户登陆到服务器。

    下载解压

    php官方下载页面,随便选择一个你的服务器所在国家的镜像,鼠标右键复制链接。

    $ wget http://am1.php.net/get/php-7.0.0.tar.gz/from/this/mirror

    解压下载到的压缩包

    $ tar xf php-7.0.0.tar.gz$cd php-7.0.0

    安装前配置

    解决依赖包

    yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel

    利用linux的make安装方式,我们需要在make之前对软件的编译进行配置。这里需要留意,如果编译之前没有配置对应的选项,会导致不生成某些模块,后面可能会遇到问题。

    ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-config-file-scan-dir=/usr/local/php7/etc/php.d --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt=/usr/include --enable-mysqlnd --with-mysqli --with-pdo-mysql --with-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache

    上面的这段配置,蓝色选项根据你的服务器部署,修改成为你自己的实际路径。

    编译安装

    原本在linux中,在configure之后,只需要make就可以进行编译了,但是由于不同的环境,会出现不同的错误,比如我的服务器上,出现了提示libiconv错误,我在往上还看到libmcrypt错误。所以,在编译的时候,我们可能需要根据编译中出现的情况,安装对应的一些模块或软件环境。如果编译错误后无法继续编译,可以使用make clean再来编译。

    我再编译的时候,出现了libiconv错误,同时,我们的服务器是双核的,所以,我用了下面的命令进行编译:

    $ gmake -j2 ZEND_EXTRA_LIBS='-liconv'

    -j2表示用双核cup去编译,编译速度更快。总之,编译中出现了什么错误,就到网上去查怎么解决。

    完成编译之后,进行安装即可。

    $ make install

    配置apache

    如果上面的编译安装正常,由于我们配置了apxs选项,所以在编译的时候,make会对apache的apxs进行调用操作,结果就是在apache的安装目录下的modules目录下生成libphp7.so,并在apache的配置文件httpd.conf中增加一行

    LoadModule php7_module        modules/libphp7.so

    一看就明白了,就是让apache去加载一个新的libphp7.so模块。但是我们仍然要对httpd.conf进行修改,重新配置apache。找到LoadModule php,你会发现,竟然出现了两行LoadModule,同时加载了php5和php7,如下:

    LoadModule php5_module        modules/libphp5.soLoadModule php7_module        modules/libphp7.so

    我们把第一行给注释掉,而且还要增加一个PHPIniDir的配置项,即修改为如下:

    #LoadModule php5_module        modules/libphp5.soLoadModule php7_module        modules/libphp7.soPHPIniDir   /usr/local/php7/etc

    重启apache,现在可以写一个phpinfo去试试看了。

    php的配置文件

    在php默认安装状态下你可能发现  /usr/local/php7下没有etc目录,也就没有php.ini文件。这是正常的,不过你可以自己创建php.ini,也可以从php源码目录中找到两个php.ini-xxx文件,拷贝一个过去,改名为php.ini即可。

    cd ~/php-7.0.0mkdir /usr/local/php7/etccp php.ini-production /usr/local/php7/etc/php.ini

    如果你的服务器上面还安装了mysql,其实不用再做其他配置,我们在configure的时候,让php7也支持mysql,如果你原来的lamp环境中已经可以正常连接mysql了,那么现在php7其实也可以正常连接mysql,mysql不需要做任何配置修改。

    说明1:需要额外说的一点是,我升级的原因是安装yiicms时,有很多插件要求7.0以上,在前面使用5.6出现各种bug,运行不正常后,决定升级成php7.0.

    说明2:在安装的完成后,phpinfo的结果显示版本号是7.0,但是系统php版本却是5.6,查了下,所以因为存在两个版本的问题,于是找解决办法,如下:

    找到系统路径的php(5.3) 将其改名
    mv /usr/bin/php /usr/bin/php5.3.bak
    
    将phpinfo中的php可执行文件软链到/usr/bin/目录下
    
    ln -s /path/to/php5.6 /usr/bin/php
  • 相关阅读:
    Siege 3.0 正式版发布,压力测试工具
    Pomm 1.1.2 发布,专为 PG 设计的 ORM 框架
    Whonix 0.5.6 发布,匿名通用操作系统
    国内开源 java cms,Jspxcms 2.0 发布
    EZNamespaceExtensions.Net v2013增加对上下文菜单、缩略图、图标、属性表的支持
    GNU Guile 2.0.9 发布,Scheme 实现
    jdao 1.0.4 发布 轻量级的orm工具包
    OpenSearchServer 1.4 RC4 发布
    Percona Server for MySQL 5.5.3030.2
    Samba 4.0.5 发布
  • 原文地址:https://www.cnblogs.com/jiangtian/p/8351857.html
Copyright © 2011-2022 走看看