PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析

编辑整理:麦子

大家在选择PHP版本时一定很困惑,有这么多版本究竟选那个呢?

问题:

我们现在新买了个服务器,用的是windows server 2008 r2。配置php 5.4的环境。
但我们之前开发的用2003,php是用5.2版本的,移植到新服务器,程序运行会有影响吗?或者我还需要注意那些问题?
API版本

PHP采用大版本向下兼容的升级方式,也就是说5.5兼容5.1-5.4,话虽如此,实际上兼容性并不乐观,大家也不要指望PHP官方会给出什么好的解决办法。现在2013年9月,版本有5.2.17 5.3.27 5.4.17 5.5.3

5.2.17
这一版本可以说是支持最广泛的版本了,现在还有绝大部分开源软件使用该版本,例如Drupal7.23,Joomla2.5,国内绝大多数软件:dedecms5.7,discuzX3等等最新版还在支持5.2,如果没特别要求,安装这一版本是最省心省力的,但长远来看可能终要被抛弃。现在许许多多的主机商为了省人力成本也懒得去升级PHP版本,反正基本上都支持。(这里插一句,现在国内软件为了兼容更多的安装环境,可谓用心良苦,甚至PHP5.1也能支持(discuzX3不支持),最难得的是性能竟然也没落后多少,能做到如些极致真心不容易!)Drupal6建议使用该版本。

5.3.28(推荐)
这个版本虽然名称上是5开头,但很多人认为是PHP6.0版本的开始,性能有所提升,而且因为许多API都发生了变化,对5.2的兼容不太好,虽然有一部分开源软件声称能兼容5.2-5.3,但问题好像也不少,许多索性就放弃5.2了,例如Joomla3只支持5.3以上。而对于Drupal7强烈建议使用该版本,支持相当好。而对于Drupal8也可以使用该版本,支持也相当不错。该版本使用范围非常广,在兼顾性能和兼容性之间做出一个不错的平衡点。

5.4(轻轻推荐)
5.4基本上已经接近完整体了,现时比较完善,稳定性和性能也不错,未来升级的重点版本,Drupal7.X对其支持尚可,但第三方模块还不太完美。如果懒得以后升级,可以一步到位安装该版本。

5.5
从5.3开始,以后版本基本上都是主打性能上的提升,函数什么的都能向后兼容。5.5开始好像有了64位版本,性能更加强劲,我没试过,不敢发表言论。

总结
如果开源软件说建议安装PHP5.3,那你就老老实实用5.3,别用5.5什么的,你可能认为反正都能兼容,性能可能更好,为什么不用新的呢?话是这么说,但你知道开源软件在开发的时候一般都是在特定的环境开发,就算兼容再好也会有想不到的意外(再强大的队伍也不可能对所有函数API进行兼容测试,那是相当可怕的工作量!),它只会在特定的环境下进行测试和优化,而且就算知道兼容有问题,团队也不会去为了兼容更高版本去修改,不是他们死板,而是为了安全和稳定来考虑的。在开源氛围下,我们应该有个意识就是“够用就是最好”,而不是“最新是最好”。举个列子,Joomla3.1在5.4-5.5都运行不良,甚至安装不能成功。但Drupal却在5.5.3下也运行正常(本机),我想是个别案例吧?但好像运行中出现过意料之外的错误,不知道是不是版本的问题,希望不是。

None-thread-safe or thread-safe

Apache 一般选 none-thread-safe,IIS选后者(FAST-CGI),我就不解释了,信哥就没错。

我们小编补充一下: 2003系统中,我们一般用isapi加载,如果是2008及以上系统用fast-cgi方式。

代码如下:

TS指Thread Safety,即线程安全,一般在IIS以ISAPI方式加载的时候选择这个版本。
NTS即None-Thread Safe,一般以fast cgi方式运行的时候选择这个版本,具有更好的性能。

从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是 PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。

为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。

因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。

64位和32位的选择问题

你的系统是64位就选64位,是32位就选32位,不解释,信哥。

我们小编补充:很多情况下我们不能保证我们所有需要iis中加载的软件都是64位的,有些软件还必须用32格式兼容跑。

(0)

相关推荐

  • PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析

    编辑整理:麦子 大家在选择PHP版本时一定很困惑,有这么多版本究竟选那个呢? 问题: 我们现在新买了个服务器,用的是windows server 2008 r2.配置php 5.4的环境. 但我们之前开发的用2003,php是用5.2版本的,移植到新服务器,程序运行会有影响吗?或者我还需要注意那些问题? API版本 PHP采用大版本向下兼容的升级方式,也就是说5.5兼容5.1-5.4,话虽如此,实际上兼容性并不乐观,大家也不要指望PHP官方会给出什么好的解决办法.现在2013年9月,版本有5.2

  • PHP版本如何选择?应该使用哪个版本?

    超过75%的网站使用了PHP作为开发语言,wordpress,phpmyadmin和其他一些开源项目的盛行,带来了一大批的长尾用户.然而,他们一般安装之后却很少升级.下图是目前PHP的使用统计. 惊人的是,此图的左半部分表示已经不被支持的PHP版本.PHP 5.2早在2011年1月已经不再维护.这并不意味着你就不能使用它,但是这意味着某些安全更新,你就无法跟进了.一些发行版将尝试修复一些BUG,但你的PHP版本似乎有点乏善可陈,因为,你正在使用的是2006年的过时技术. 该从哪里开始 已经没有人

  • MySQL5.7.03 更换高版本到MySQL 5.7.17安装过程及发现问题解决方案

    一.如何安装? 1.[运行]->[cmd]打开小黑窗口.定位到MySQL安装目录[我的D:\Program Files\mysql-5.7.9-winx64]的bin目录下,输入[mysqld -install].如下图,表示安装成功 2.打开MySQL安装目录,找到[my-default.ini],配置一些简单的信息. # These are commonly set, remove the # and set as required. basedir = D:\Program Files\m

  • 同时安装Python2 & Python3 cmd下版本自由选择的方法

    系统:win7 python2.7,python3.6同时安装,于是问题来了,python27与python36文件夹下的文件名都是python.exe 这样在cmd下,直接输入python,自动执行python27 搜索了网上的解决方案,大多是将两个python.exe改名,分别改为python2,python3加以区别 但是这样会造成很多问题,比如运行IDLE时,python27会自动重建一个python.exe文件...也就是说之前改了也白改 最后找到一个合理的解决方案:使用python自

  • 详解Spring Boot Mysql 版本驱动连接池方案选择

    国内环境下,用Mysql还是比较多的.这里简单的总结了一下,如有缪误,还请指正. Mysql.connect 引入mysql-connector-java包,协议为GPL2.0,该协议具有传染性,即:一旦使用(调用)GPL的库,你的软件将被感染为GPL的软件(主程序).完全不具有商业友好特性.如果有顾虑,可以使用mariadb-java-client进行替代,见mariadb-connector-j,路径是org.mariadb.jdbc.Driver 引入JDBC驱动程序 <dependenc

  • Windows10下mysql 5.7.17 安装配置方法图文教程

    在此文中,我将详细讲解如何在Windows10平台中安装MySQL数据库的最新版本,即MySQL5.7.17压缩版数据库. 关于MySQL5.7.17数据库压缩版的下载,我就不在此多言了.有人不会,请自己动手,丰衣足食! 解压并安装 由于我们下载的MySQL5.7.17数据库是ZIP Archive版的,也即压缩版,所以只要解压就可以了,和安装版的没什么不同,但就是不需要安装.我们只需找到下载好的mysql-5.7.17-winx64.zip文件,然后右键选择,解压到你想安装的地方,喜欢放C盘的

  • 电影版本含义解析(TS,TC,CAM)

    这里是本人从网上收集而来的有关电影版本方方面面的信息,希望能够对您有所帮助. 1.CAM(枪版)--珍爱生命,远离枪版 CAM通常是用数码摄像机从电影院盗录.有时会使用小三角架,但大多数时候不可能使用,所以摄像机会抖动.因此我们看到画面通常偏暗人物常常会失真,下方的字幕时常会出现倾斜. 由于声音是从摄像机自带的话筒录制,所以经常会录到观众的笑声等声音.因为这些因素,图象和声音质量通常都很差.举例说明:Journey.To.The.Center.Of.The.Earth.CAM.XViD-CAME

  • PHP多个版本的分析解释

    PHP版本主要分三支:PHP4/PHP5/PHP6其中,PHP4由于太古老.对OO支持不力已基本被淘汰,就不在详述.而PHP6由于基本没有生产线上的应用,还基本只是一款概念产品,所以也不详述. PHP5的版本主要分三支:PHP5.2之前的版本.PHP5.2.X和PHP5.3那我们应该如何选择适用自己项目的版本呢?PHP5.2之前的版本不值得考虑,因为某些功能缺陷或者BUG.主流PHP程序对PHP5.2.X的兼容性最好,而每次版本号的升级带来的都是安全性和稳定性的改善,所以宜挑选最新的版本.目前P

  • win2008 R2 下 IIS7.5+PHP5.2.17+Mysql5.5.16+Zend3.3.3

    前言 windows Server 2008 R2 下面IIS7.5已经对fastcgi的支持有了很大改进,还在使用PHP-ISAPi模式的朋友可以试一下. 鉴于目前php5.3.1还不能完美的支持主流php系统,不建议大家使用! windows2008 Server R2下面环境搭建分三种情况,大家可以根据自己的运行需要选择. 1. IIS7.5+PHP+Mysql+Wincache 1.0RC 这个环境组合大家已经看出来了 没有zend. 各个版本分别是: PHP5.2.17–请注意是非线程

  • VMware14.0.0版本虚拟机安装Ubuntu16.04 LTS版本Linux系统图文教程

    VMware14.0.0 版本虚拟机安装Ubuntu16.04 LTS版本Linux系统多图详细步骤:一.前期准备工作 1.成功安装完成VMware14软件: 2.去Ubuntu官网下载Ubuntu16.0.4 LTS 版本的镜像文件. 二.安装步骤 1.打开VMware软件,选择<创建虚拟机>: 2.选择<自定义>,并点击<下一步>: 3.硬件兼容性选择<Workstation14.x>,并点击<下一步>: 4.选择<稍后安装操作系统&g

随机推荐