升级过程我就直接摘录博友,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

升级lamp中php5.6到php7.0过程的更多相关文章

  1. 记 Mac Pro 系统升级后,编译安装 PHP-5.6.28 / PHP-7.0 报错修复过程

    买 Mac Pro 的时候,系统为 OS X 10.11.5,编译 PHP-5.6.21 的时候,也遇到一些坑,安装过程记录如下: Mac Pro 编译安装 PHP 5.6.21 及 问题汇总 后来, ...

  2. php5.3到php7.0.x新特性介绍

    <?php /*php5.3*/ echo '<hr>'; const MYTT = 'aaa'; #print_r(get_defined_constants()); /* 5.4 ...

  3. PHP5.6 和PHP7.0区别

    1. PHP7.0 比PHP5.6性能提升了两倍. 2.PHP7.0全面一致支持64位. 3.PHP7.0之前出现的致命错误,都改成了抛出异常. 4.增加了空结合操作符(??).效果相当于三元运算符. ...

  4. Mac Pro 实现 PHP-5.6 与 PHP-7.0 等多版本切换

    先前参考 如何 实现PHP多版本的 共存 和 切换? 实现了Linux(Ubuntu/CentOS)系统下,PHP多版本的切换,但是在 Mac OS 下,由于用户权限控制的比较严格,文章里提到的脚本运 ...

  5. yum安装php5.5,php5.6和php7.0

    本文主要介绍在CentOS系统下的php多个版本的安装使用 1.清理系统上的旧版本php 1)查询已安装的php软件 rpm -qa|grep php* yum list installed | gr ...

  6. Centos7 配置LAMP+fastcgi(Centos7.2+php7.0+mariadb+httpd)

    环境:阿里云centos7.3 一.安装并配置数据库 1.安装数据库 #yum install mariadb-server  mariadb -y 2.启动服务并设置开机自启 # systemctl ...

  7. Ubuntu14.04下使用PPA安装php5.6,php7

    1.为了使用ppa(Personal Package Archives) 选安装依赖: # apt-get install python-software-properties 2.添加不同版本php ...

  8. Ubuntu --- 【转】安装lamp(php7.0)

    本篇转自:http://www.laozuo.org/8303.html.以防丢失,再次记录 PHP7已经出来有一段时间,根据网友的实践测试比之前的版本效率会高不少,而且应用到网站中打开速度会有明显的 ...

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

        首先需要搭建的版本可以在php官方(http://windows.php.net/download)下载对应的版本,X86对应的是32位操作系统,X64对应的是64位操作系统.    1:下载 ...

随机推荐

  1. mac下快速安装gearman和php扩展

    1.brew install gearman 用brew安装gearman 2.pecl install gearman 用pecl安装php的gearman扩展 3.ln -s /usr/local ...

  2. Print Nodes in Top View of Binary Tree

    Top view of a binary tree is the set of nodes visible when the tree is viewed from the top. Given a ...

  3. UVA11374_Airport Express

    给一个无向图,有的边是特殊边,最多可以取一条特殊边,求最短路,并且输出路径. 这样考虑,加入所有非特殊边,求出每个点到起点和终点的最短路.然后加入特殊边的时候,如果取当前这条特殊边,那么答案会是两点预 ...

  4. MT【134】待定系数

    已知\(a,b>0\)且\(ab(a+b)=4\),求\(2a+b\)的最小值______. 解答:\(\sqrt{3}(2a+b)\ge(\sqrt{3}+1)a+b+(\sqrt{3}-1) ...

  5. std::string 赋值为nullptr引起程序崩溃

    一个错误排查两天,std::string赋初值时最好为"", 如果赋初值为nullptr,因为std::string不能和nullptr作比较,所以后面用的时候会引起崩溃. 佩服我 ...

  6. 【转】64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解

    64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解,开发裸机环境之前需要先搭建其开发环境,毕竟工欲善其事必先利其器嘛.  安装步骤 1.准备工具安装目录 下载 ar ...

  7. 【BZOJ4872】【Shoi2017】分手是祝愿

    Time Limit: 20 Sec Memory Limit: 512 MB Description ​ Zeit und Raum trennen dich und mich. ​ 时空将你我分开 ...

  8. 使用IPMI控制/监控Linux服务器

    1       IPMI简述 IPMI提供了很多丰富功能,我使用的功能,说得大白话一点,就是: 1.获取本设备的硬件信息:包括CPU和主板的温度.电压.风扇转速. 2.在设备A上,通过命令,控制远程设 ...

  9. GridView中网络图片延迟加载导致高度计算失败的问题

    在使用下拉刷新以及加载更多控件的时候,出现了列表上滚不完的现象,经过半天的分析,最后得出结论:由于图片采用了延迟加载,导致列表按照没有加载图片时候的大小进行布局,相关的加载更多控件也就傻逼了. 最终解 ...

  10. Webpack 学习笔记总结

    Webpack安装 Linux系统默认已经安装了node&npm,但版本比较低,而且没法升级,可以重新下载Node然后通过软链接替换系统自带的node和npm; ln -s /path_to/ ...