当你看到这篇文章的时候 YHSPY.COM 服务器上的PHP版本已经从 5.4.27 升级到了 7.0.4,这是一个重大的飞跃。一路升级遇到了很多问题。官方声称PHP7最大的升级就是在语言性能上的提升,最大到达了30%。同时也去掉了很多老版本中Deprecated的函数和方法,语言整体变得更加稳定。

首先声明,此文不适用于使用yum方式安装的PHP环境的升级,只适用于使用PHP源代码编译安装的PHP版本。升级之前首先需要判断服务器上Apache的版本,根据不同的Apache版本来参考不同的官方编译文档。用以下命令来查看当前Apache的版本:

... (详见原文)

由以上命令返回的结果可知,Apache服务器为2.X版本,所以此处应该参考官方给出的PHP编译在Apache版本2.X上的编译参考文档:Apache2.X版本PHP编译文档,对于其他版本的Aapche或者Nginx,可以参考此处:其他版本服务器PHP编译文档。

接下来我们从PHP官方给出的镜像地址来获取PHP源代码,这些源代码将会最后被编译并安装在我们的服务器上。这里按照官方文档的说明,我们使用wget命令来获取源代码的压缩包,并逐层解压,直到生成最后的源代码文件夹。

... (详见原文)

由于我们这里为PHP的版本升级操作,所以需要保持新版本PHP源代码的预编译参数和旧版本PHP源码的预编译参数保持一致。进入到旧版本(当前版本)PHP源码文件夹内,使用 vi/vim命令打开文件夹内的Mkaefile文件,复制其中的 CONFIGURE_COMMAND 参数部分并整理成如下格式(去掉单引号等):

... (详见原文)

其实 CONFIGURE_COMMAND 参数的值本身就是对应我们上一次PHP源码预编译过程的全部编译命令(和子参数),这里顺便说一下其中几个子参数的作用。“--prefix”参数用来指定PHP安装的主要目录位置,“--with-config-file-path”参数主要用来指定php.ini文件的生成路径,对于其他子参数的具体用法和说明,请在PHP源代码文件夹内使用./configure --help命令来查看。

接下来便通过已经整理好的预编译参数来对源码进行预编译操作(即编译前的配置操作):

.. (详见原文)

在这里为了防止出现错误,我们需要分开执行make编译和make install安装两个操作命令,首先执行make命令来编译源代码。

如果在执行过程中遇到“undefined reference to `libiconv'”错误,请尝试为make命令加入ZEND_EXTRA_LIBS参数,如下所示:

.. (详见原文)

最后执行make install命令来安装PHP环境:

.. (详见原文)

在源代码全部编译完成并安装后,便可以用以下命令来重新启动Apache服务器:

.. (详见原文)

至此,PHP7的升级就全部结束了,你可以通过phpinfo()函数来查看新版本PHP的相关配置,包括扩展配置和错误日志等常用设置是否配置正确。

从PHP5.X升级至PHP7.X后,一些PHP在早期版本不推荐使用的函数比如split()等都已经从PHP7移除了,所以在升级时请参考官方的升级文档。并且,PHP7也移除了mysql相关的函数,因此只能使用PDO或其他方式来连接数据库。

写在最后,其实所谓的预编译步骤是对源代码编译之前进行一些环境配置,比如指定编译是否携带某一模块,编译生成的文件夹等。同时在执行./configure时也会同时生成Makefile文件。

lamp架构之升级php版本的更多相关文章

  1. LNMP 与 LAMP 架构的区别及配置解决方案

    2014-12-31 10:33| 发布者: digitser| 查看: 5618| 评论: 0|原作者: liangsheng 摘要: LNMP 与 LAMP 架构的区别及配置解决方案 LNMP 的 ...

  2. Apache web服务器(LAMP架构)(week3_day4)--技术流ken

    apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 3).URL 统一资源定位符 http:/ ...

  3. 末学者笔记--apache编译安装及LAMP架构上线

    apache介绍 一.Apache的三种工作模式 Apache一共有3种稳定的MPM模式(多进程处理模块),它们分别是prefork.worker.event.http-2.2版本的httpd默认的m ...

  4. LAMP架构部署和动态网站环境的配置

    实验环境: 操作系统:centos 7.5 服务器IP:192.168.10.5 运行用户:root 连接工具:xshell工具 web环境:Linux+apache+php+mariadb(LAMP ...

  5. Apache web服务器(LAMP架构)

    Apache web服务器(LAMP架构) apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 ...

  6. LAMP架构上(一)

    第十七课LAMP架构上(一) 目录 一.LAMP架构介绍 二.MySQL.MariaDB介绍 三.MySQL安装 四.MariaDB安装 五.Apache安装 六.安装PHP5 七.安装PHP7 八. ...

  7. rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构

    rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构 2017年10月01日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~准备阶段~~~~~~~~~~~~~ ...

  8. Linux LAMP架构搭建

    一.部署LAMP基本架构 1.L(linux)A(apache)M(mysql)P(php) 2.稳定版本(mysql5.1,php5.3,apache2.2) 3.安装顺序,mysql-->a ...

  9. 部署LAMP架构及其应用

    部署企业LAMP架构 (一)首先安装Apache服务,具体请见另一篇关于Apache的博文. (二)安装MySQL数据库,具体请见另一篇关于LNMP的博文. (三)构建PHP运行环境 1.安装PHP ...

随机推荐

  1. 最近5年133个Java面试问题列表

    Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入. 在我 ...

  2. Java每日一题

    1.(单选题)What will be printed when you execute the following code? class C { C() { System.out.print(&q ...

  3. 前端模板<script type="text/template" id="tmpl">

    前端模板, 比连接字符串好用多了, 还可以使用循环\判断等语句, 减少工作量 <script type="text/template" id="member-tmp ...

  4. 160718、jsoup-1.8.1.jar操作html

    导入jsoup-1.8.1.jarimport java.io.IOException;import org.jsoup.Connection;import org.jsoup.Jsoup;impor ...

  5. Office word中去掉首页的页眉

    1.首先将光标位置移动到第二页的开始,然后点击页面布局命令. 2.页面布局里面找到分隔符,找到下一页的分隔符.(分页符分页) 3.双击第二页的页眉,打开页眉编辑菜单.将连接到前一条页眉的命令去掉. 4 ...

  6. 目标检测系列 --- RCNN: Rich feature hierarchies for accurate object detection and semantic segmentation Tech report

    目标检测系列 --- RCNN: Rich feature hierarchies for accurate object detection and semantic segmentation Te ...

  7. mysql 中用户默认密码加密问题

    问题描述: 在mysql中 user表中新增用户默认密码为123456,但是在数据库中显示不能为明文,而mysql的默认字段不能用函数 解决方法: 用触发器 delimiter | drop trig ...

  8. color depth 色彩深度 像素深度

    Screen.colorDepth - Web APIs | MDN https://developer.mozilla.org/en-US/docs/Web/API/Screen/colorDept ...

  9. 三报文握手而不是三次握手 wireshark 封包详细信息 (Packet Details Pane) wireshark与对应的OSI七层模型 TCP包的具体内容 分析TCP三次握手过程

    总结: 1.tcp报文非数据部分4*6字节 2.RFC 973 <计算机网络> 谢希仁 three way (three message) handshake 只是一次握手 同步位SYN. ...

  10. wget -d --header

    wget -d --header="Host:www.sina.com" http://202.108.33.84 domain differ ip 防止Wget递归下载 假设Ng ...