lamp架构之升级php版本
当你看到这篇文章的时候 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版本的更多相关文章
- LNMP 与 LAMP 架构的区别及配置解决方案
2014-12-31 10:33| 发布者: digitser| 查看: 5618| 评论: 0|原作者: liangsheng 摘要: LNMP 与 LAMP 架构的区别及配置解决方案 LNMP 的 ...
- Apache web服务器(LAMP架构)(week3_day4)--技术流ken
apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 3).URL 统一资源定位符 http:/ ...
- 末学者笔记--apache编译安装及LAMP架构上线
apache介绍 一.Apache的三种工作模式 Apache一共有3种稳定的MPM模式(多进程处理模块),它们分别是prefork.worker.event.http-2.2版本的httpd默认的m ...
- LAMP架构部署和动态网站环境的配置
实验环境: 操作系统:centos 7.5 服务器IP:192.168.10.5 运行用户:root 连接工具:xshell工具 web环境:Linux+apache+php+mariadb(LAMP ...
- Apache web服务器(LAMP架构)
Apache web服务器(LAMP架构) apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 ...
- LAMP架构上(一)
第十七课LAMP架构上(一) 目录 一.LAMP架构介绍 二.MySQL.MariaDB介绍 三.MySQL安装 四.MariaDB安装 五.Apache安装 六.安装PHP5 七.安装PHP7 八. ...
- rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构
rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构 2017年10月01日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~准备阶段~~~~~~~~~~~~~ ...
- Linux LAMP架构搭建
一.部署LAMP基本架构 1.L(linux)A(apache)M(mysql)P(php) 2.稳定版本(mysql5.1,php5.3,apache2.2) 3.安装顺序,mysql-->a ...
- 部署LAMP架构及其应用
部署企业LAMP架构 (一)首先安装Apache服务,具体请见另一篇关于Apache的博文. (二)安装MySQL数据库,具体请见另一篇关于LNMP的博文. (三)构建PHP运行环境 1.安装PHP ...
随机推荐
- Mysql event时间触发器,实现定时修改某些符合某一条件的某一字段
我最近做项目遇到一个问题就是数据库的的订单需要定时检查自己的订单状态,如果到了endtime字段的时间订单状态还是2,就将订单状态修改为4 在网上找到类似的解决方法. 定时的关键是要结合mysql的某 ...
- java动态编译 (java在线执行代码后端实现原理)
需求:要实现一个web网页中输入java代码,然后能知道编译结果以及执行结果 类似于菜鸟java在线工具的效果:https://c.runoob.com/compile/10 刚开始从什么概念都没有到 ...
- 【BZOJ4499】线性函数 线段树
[BZOJ4499]线性函数 Description 小C最近在学习线性函数,线性函数可以表示为:f(x) = kx + b.现在小C面前有n个线性函数fi(x)=kix+bi ,他对这n个线性函数执 ...
- 【转】 JS实现HTML标签转义及反转义
原文地址:http://blog.600km.xyz/2015/12/15/js-encode-html-tags/ 简单说一下业务场景,前台用户通过input输入内容,在离开焦点时,将内容在div中 ...
- 10.php引用(&)详解及注意事项
<?php function &test() { static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; } $a=test();//这条 ...
- datagridview数据导出到excel
/// <summary> /// 导出Excel /// </summary> /// <param name="mydgv">控件 Data ...
- Harbor实现容器镜像仓库的管理和运维
本次分享主要讲述了在开发运维中的管理容器镜像方法.为了便于说明原理,较多地使用Harbor作为例子. 内容主要包括: 开发和生产环境中镜像仓库的权限控制: 镜像远程同步(复制)的原理: 大规模应用镜像 ...
- R中的data.table 快速上手入门
data.table包提供了一个非常简洁的通用格式:DT[i,j,by]. 可以理解为:对于数据集DT,选取子集行i,通过by分组计算j. 对比与dplyr等包,data.table的运行速度更快. ...
- cas添加验证码
cas添加验证码,折腾了好久,终于整理好了,很大部分都是借鉴http://binghejinjun.iteye.com/blog/1255293这个的.但是他的有一个很不好的地方就是不能提升验证码错误 ...
- Python(常用模块)
模块 模块 本质上就是一个.py文件 内置模块(解释器层面) 第三方模块(Python lib文件) 自定义模块(当前路径) 模块调用,包的概念 在计算机程序的开发过程中,随着程序代码越写越多,在一个 ...