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 ...
随机推荐
- java必备——经典的Hibernate
在编程开发中,我们有非常多框架,他们有些非常方便,也非常有用,今天我们一起来认识一个java经典的框架Hibernate,Hibernate英文名称为"冬眠".这是个非常有意思的技 ...
- ios APP 在 waiting for review时重新上传程序
今天上传程序后发现了一个挺大的bug,想重新上传app,于是搜了一下,现记录一下: 点击details进入后在link点击binary details,进入之后点击右上角reject this bin ...
- Rnqoj (未出现的子串)
题目链接:传送门 题目大意:略: 题目思路:DP思想 读入数据后,从后向前遍历,假如我们是要找一个长度为n的以1开头的数字串的所有序列,那么可以将它表示为1+(任意数开头的长度为n-1的序列) 然后我 ...
- iOS 程序切换后台
1. -(void)animationFinished:(NSString*)animationid finished:(NSNumber*)finished context:(void*)conte ...
- mysql数据库如何设置表名大小写不敏感?
转自:https://blog.csdn.net/iefreer/article/details/8313839 在跨平台的程序设计中要注意到mysql的一些系统变量在windows和linux上的缺 ...
- H5页面在微信中禁止下拉露出网页
H5页面在微信中禁止默认事件的执行,js添加代码 $(function () { /************微信h5页面禁止下拉露出网页来**************/ $('body').on('t ...
- 转载别人的DLL DEll研究
昨日,编了个DLL和EXE来进行了下测试,exe通过lib静态联编dll,来调用它的导出类,当改变DLL中导出类的结构(eg.成员变量的顺序等),从新发布DLL而不从新联结编译EXE,就会造成错误的执 ...
- Elasticsearch集群 管理
第7章 深入Elasticsearch集群 启动一个Elasticsearch节点时,该节点会开始寻找具有相同集群名字并且可见的主节点.如 果找到主节点,该节点加入一个已经组成了的集群:如果没有找到, ...
- Java 集合框架之泛型
JDK 1.5 以后出现的安全机制,提高了编译时期的安全性. 泛型出现的好处: 将运行时期的问题 ClassCastException 转到了编译时期 避免了强制转换的麻烦 泛型出现的原因: publ ...
- LinkedList基本用法
https://blog.csdn.net/i_lovefish/article/details/8042883