zoukankan      html  css  js  c++  java
  • 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文件。

  • 相关阅读:
    Stars in Your Window POJ
    Adding New Machine ZOJ
    洛谷 P3400 仓鼠窝
    django启动时报错:Apps aren't loaded yet.
    netstat命令简单使用
    iostat命令简单使用
    linux下查找指定时间内修改过的或新建的文件
    nginx学习之压缩解压篇(七)
    nginx学习之反向代理篇(六)
    nginx学习之静态内容篇(五)
  • 原文地址:https://www.cnblogs.com/qiuqiuqiu/p/6444919.html
Copyright © 2011-2022 走看看