php最新版本

PHP 7.3声称速度比PHP 5快3倍还多,值得更新了!

作为PHP5的最后一个版本,也是目前使用最广泛的PHP版本,PHP 5.6始于公元2014年(不是1804年,嘿嘿),其第一个测试版PHP 5.6 alpha 1版于2014年1月发布。随机产生了第一个由国人(鸟哥,惠新宸)参与主研的性能大规模提升版本PHPNG(PHP next generation,下一代PHP),2015年基于PHPNG接着就产生PHP 7版本。PHP7带来了革命性的性能提高,其运行速率是5.6的两倍还高以及其他改善,比如64位支持、类型申明、运行时优化等。从2015年开始官方就一直推荐大家尽快升级到php7,虽然当时扩展支持还是很成问题。

根据最新的W3techs统计,目前PHP 7大概占了超过16.6%的PHP份额。 总体上PHP仍然拥有大约83%的网站服务器端开发语言的绝大多数比例。

根据PHP开发支持周期,到今年12月31日后,PHP 5.6不在有官方支持。所以现在只剩下半年时间你升级你的PHP到PHP7。此后PHP5的命运就会终结,而且就虫虫所致目前基本上绝大多数的框架和程序都已经完美的支持PHP7了。

性能测试:PHP 7.3比PHP 7.0快25%

有很多性能测试对比都揭示了PHP 7比PHP 5.6快至少2倍。下面是各大php框架心性能对比图:

下面最新Phoronix基准测试结果则显示了自PHP7发布以来PHP 7的性能对比情况。最新版本的PHP 7.3 Alpha比以初始版本的PHP 7在系能上的改善的也是相当客观的。根据最新数据PHP 7.3是比PHP 5.6快3倍!比PHP 7.0快25%。不说别的光这性能对比图就能给烈日炎炎的夏日带来丝丝凉意。而且这还可以直接体现在费用上,比如升级PHP7后,Badoo大概每年可减少100w美刀。

Badoo公司的数据:

PHP 7兼容行检查

截止目前基本上绝大多数的PHP都可以完美的支持PHP7.0了。但是可能你恰好有一些历史遗留的脚本和程序,那么也好办,社区已经有好多的工具做兼容性检查,甚至给出直接的代码转译,以下是几个值得推荐的工具:

php7cc:一个很不错的工具,不过目前已经不再更新了。(github地址: /sstalle/php7cc)

php7mar:PHP 7迁移助手,虫虫强烈推荐的工具。 (github地址:/Alexia/php7mar)

使用方法:

php mar.php -f="/path/to/project/root/" -r="/path/to/output/"

phan:PHP脚本的静态分析器。 可以做当做php 7的语法检查器。(github地址:/phan/phan)

使用方法:phan --project-root-directory --progress-bar -o phan.out

phpstan - PHP静态分析和兼容性检查工具。(github地址:/phpstan/phpstan)

PHP 7性能设置要点

1. Opcache

首先,确保已经启用了OpCache。可以通过主配置文件php.ini或它独特的配置文件opcache.ini文件(例如/etc/php/7.2/fpm/conf.d/10-opcache.ini)。来进行设置。

zend_extension=opcache.so

opcache.enable=1

opcache.enable_cli=1

可以使用phpinfo()检查,也可以通过终端命令

php -v or php -i | grep opcache.enable

确认PHP OpCache已启用后,很多的ln(a)mp套件都有一个opCache监控脚本,可以对其系能进行实时监控,如下图

2、设置合适的realpath_cache_size

通过设置合宜的realpath_cache_size值可以改善你服务器的并发:

realpath_cache_size = 256k

realpath_cache_ttl = 300

3、禁止mysqlnd.collect_statistics

mysqlnd.collect_statistics = Off

mysqlnd.collect_memory_statistics = Off

线上服务器选择禁止这两个选项,可以减少不必要的数据库访问。如果需要相关统计,可以使用MySQL工具或者监控。

4、使用新的编译器

GCC 4.8编译器下编译时PHP才能开启Global Register for opline and execute_data支持, 这个会带来5%左右的性能提升。

5、开启Transparent HugePage (透传大页)

内存默认是以4KB分页的,而虚拟地址和内存地址需要转换,转化时候需要进行搜索,为了加速转换过程,可以通过内存TLB(Translation Lookaside Buffer)来。所以通过启用大内存页可以增加TLB 缓存命中,从而提高性能。

设置系统支持:

sysctl vm.nr_hugepages=512

php.ini 增加支持

opcache.huge_code_pages=1

关于这个值,很多实践后发现启用透传大页面后会带来系统负载过高,cpu占用过高问题,这时候通过关闭就可以解决。所以这个参数需要实际情况斟酌测试使用。

6、开启PGO

PHP是专门为一个项目服务,比如一个 Wordpress或者drupal站点,就可以使用PGO提高性能。

展开
收起

PHP 庆祝 25 周年,朝着 8.0 版本继续努力

2020 年 6 月 8 日,PHP 迎来了自己的 25 周岁生日。JetBrains 在博客中梳理了该语言自 1995 年诞生以来的种种历程,这种语言最初是用 C 语言编写的一组通用网关接口(Common Gateway Interfac,CGI)二进制文件,第一个 PHP 脚本套件被称为“个人主页工具”或“PHP 工具”。

1998 年发布的 PHP 的第三次迭代是 Andi Gutman 和 Zeev Suraski 重写了 Lerdorf 编写的现有解释器的结果。JetBrains 解释称,此版本的 PHP 3.0 很像现在的 PHP 的第一个版本。 语言的名称改为递归缩写“PHP: Hypertext Preprocessor”。顶峰时,PHP 3 安装在互联网大约 10% 的 Web 服务器上。1999年,Zend 公司成立,直到今天,Zend 仍在继续为 PHP 做出贡献并积极参与其中。

最初没有 PHP 的正式规范,在着这种情况下该语言仍持续发展了 20 年的时间。直到 2014 年,PHP 规范出现。PHP 语言规范在 Facebook 内部开发,然后转移到了公共领域。

而与此同时,除了这个 25 周年纪念日外,PHP 8.0 也有望在今年发布。程序员 Brent Roose 透露了即将在 2020 年 11 月底发布的 PHP 8.0 中即将发布的功能。此版本的第一个 Alpha 版将于 6 月 18 日发布。同时,PHP 8.0 将引入多项重大更改,并引入一些新功能,例如 JIT 编译器、联合类型和属性。

JIT 编译器

Roose 解释称,尽管还没有基准测试,但 JIT 编译器有可能改善 PHP 的性能。不像 C 或 Java 这样的编译语言,PHP 是一种解释性语言,这意味着它会在运行时转换为机器码。JIT 在运行时编译部分代码,以便可以使用代码的编译版本。并表示,将 JIT 编译器添加到 PHP 的原因是,它可能使其能够在 Web 开发上下文之外被视为一种高性能语言,并且可以随着时间的流逝而得到改进。但是,一个很大的缺点是维护起来很复杂。

联合类型

联合类型是两种或多种类型的集合,表示可以使用其中任何一种。而由于 PHP 是一种动态类型的语言,因此联合类型有很多用例。

属性

属性在其他语言中通常称为注解,它提供了一种向类添加元数据的方法,而无需解析文档块。

RFC 中的属性示例:

有关功能和代码示例的完整列表可查看博客。

展开
收起

在运行过时PHP版本的服务器上显示警告

在运行过时PHP版本的服务器上显示警告,WordPress开源内容管理系统(CMS)将在其后台管理面板中显示警告,如果该网站运行在一个过时的PHP版本之上。目前的计划是让使用5.6版本之前的PHP版本的站点出现警告。x分行(< = 5.6)。这些警告将包含一个WordPress支持页面的链接,其中包含网站所有者如何更新其服务器底层PHP版本的信息。在站点所有者在严格控制的web宿主环境上运行WordPress门户的情况下,web宿主可以选择使用指向其支持站点的自定义URL更改此链接。这个警告将会在WordPress 5.1中发布,预计在今年春天早些时候发布。开始显示这个警告的决定是在WordPress 5.0分支发布之后的2018年12月做出的。在WP 5.0发布几天后进行的升级统计显示,85%的WordPress 5.0用户使用的是5.6或更高版本的PHP版本,因此只有一小部分活跃的WordPress社区会首先看到这些警告。

我们说“活跃的WordPress社区”是因为仍然有数百万的网站运行着旧的WordPress版本,其中很多已经被抛弃或遗忘。短期计划是将尽可能多的活跃用户迁移到最新的PHP版本,这样WordPress团队就可以完全放弃对旧PHP版本的支持。WordPress团队希望在2019年4月之前正式将WordPress CMS最低PHP版本要求从PHP 5.2(当前)修改为PHP 5.6。MySQL也计划推出类似的最低要求版本,MySQL 5.5成为新的最低要求。长期计划是到2019年12月PHP 7.0成为运行WordPress站点所需的最低PHP版本。昨天WordPress团队的声明让WordPress社区大吃一惊。运行WordPress站点所需的最低PHP版本已经多年没有修改了。

WordPress团队之所以希望网站所有者更新他们的底层PHP服务器,是因为PHP团队最近放弃了对PHP 5.6安全补丁的支持。x和PHP 7.0。x分支。正如一些安全研究人员去年秋天告诉ZDNet的那样,这些较老的PHP服务器现在很容易受到攻击和大规模利用。据W3Techs统计,大约66.7%的互联网站点运行不受支持的PHP版本。几乎四分之一的互联网站点运行在WordPress CMS之上。WordPress团队是第一个宣布将用户迁移到当前支持的PHP版本的大型CMS项目。WordPress开源CMS团队成员Felix Arntz表示:“PHP通知的门槛将会大大提高,目标是随着时间的推移,能够赶上PHP版本的实际进度。”

展开
收起

PHP 7.1.27/7.2.16/7.3.3发布

IT之家3月8日消息 日前,PHP官方正式发布了PHP 7.1.27、PHP 7.2.16、PHP 7.3.3,这三个版本的PHP已经可以在PHP官网上下载。

根据官方给出的更新日志,PHP 7.2和7.3中主要修复了数据库连接方面的问题,而PHP 7.1则修复了几个空指针、内存溢出以及未初始化问题。

值得注意的是,PHP此前发文提醒还在使用PHP7.1以下的用户尽快升级,因为PHP 7.1以下版本已经在今年一月份停止支持,如果网站继续使用这些老版本的PHP很有可能遭受攻击。

目前,PHP官方支持三个版本,分别是PHP 7.1、PHP 7.2和PHP 7.3,而PHP 7.1也将在2019年12月1日停止支持。所以官方目前推荐用户向PHP 7.2以上版本迁移。

不过,现阶段PHP 7.0以下版本仍然占据了PHP网站的3/4以上,所以对于这部分用户来讲,尽快升级PHP 7.2以上版本非常有必要。

展开
收起

更新WordPress网站PHP7.2新版本的注意事项

很多WordPress老网站,一直没有更新WordPress程序或者还在使用几年前的WordPress主题和插件。

这些WordPress主题和插件非常古老,很多作者已经放弃了更新,比如很有名的推荐VPS主机服务的老左博客的WordPress主题,还有前天推荐前天十年没有更新的Spider Tracker WordPress插件。

很多优秀的WordPress主题和插件只能支持低版本的WordPress程序和PHP版本。要是对WordPress程序进行升级,这对于这些网站的作者而言,那是非常棘手的,费时费力。

WordPress官方在今年早些时候已经宣布WordPress新版本程序不再支持PHP 5.6.2以下版本。

这个时候就面临费时费力和低版本WordPress程序安全性无法保证之间做出抉择。

不管再难,建议升级……今年周围很多做WordPress网站的朋友已经被入侵,教训是惨痛的。

在升级的时候要注意以下几点。

1、求新不求旧,最低版本建议PHP7.2

目前PHP5.6.2非常稳定,而且官方也还在支持。但是由于是WordPress程序最低支持PHP版本。保不齐什么时候就不再支持这个版本。

如果你的WordPress网站,因为所谓的稳定性,支持这个低版本,一旦官方不再支持,你又要对WordPress网站主题、插件还是服务器拓展再做调整,岂不是非常麻烦。

PHP7经过一段时间的优化迭代,PHP7系列版本有更好的执行效率和安全性,目前最新的版本为PHP7.3.5,我自己的英文站speechwiki已经支持到这个版本。PHP7.3.5主要是在安全性上做出了优化。

2、数据最重要,做好备份

在WordPress程序和PHP7.2版本升级之前,全面清查WordPress主题和插件有没有进行兼容性更新,这个可以在插件安装页面进行查看。如果长时间不更新,建议慎用,特别是好几个大版本无更新的,用用还行,长期启用就有安全问题。

WordPress主题长期不更新,函数已经有非常大的调整,PHP升级后,WordPress主题也许会无法正常使用,不过从目前来看这种情况非常少。

3、服务器拓展插件也要兼容性检查

如果你的WordPress网站使用的虚拟主机,需要联系主机商。因为虚拟主机权限是主机商管理。如果主机商的PHP版本比较低且无法升级,建议放弃或者用完后就不要续期了。

VPS服务器如果用的是宝塔面板,直接升级PHP即可。如下图所示:

如果使用的是LNMP/LAMP/Onestacks一键脚本,找各自官方升级方法。(随后找一下各个脚本PHP升级方法,下次更新)

PHP版本升级之后,查看PHP拓展有没有正常工作,还有要检查一下WordPress后台的PHP拓展插件的版本有没有太低、会不会存在兼容性问题,比如Redis的WordPress插件Redis Object Cache版本是否支持你的WordPress网站PHP版本。

WordPress网站程序和PHP版本升级之后,把首页,文章页,还有各个页面都访问一下,没问题的话,就升级成功了。

WordPress程序升级还是非常良心的,就算是这么多年这么频繁的升级,也没有说是摆什么幺蛾子,也有遵循自己一直以来的升级逻辑。

展开
收起

全方位解读php8.0版本优化与改进

除非你一直生活在一块石头下,或者生活在过去,否则你会意识到JIT正在进入PHP 8:投票今天悄然结束,绝大多数人赞成合并到PHP8,所以,这是正式的,本文全方位解读php8.0版本优化与改进。

PHP8 官宣《PHP8首个版本 Alpha1 发布!》

现在,坐下来阅读下面这篇颠覆神话的文章,我们将澄清一些关于JIT是什么、它将带来什么好处的困惑,并深入研究它是如何工作的(但只是一点点,因为我不想让你感到无聊)。

因为我不知道我在和谁说话,所以我会从简单的问题开始,一直到复杂的问题,如果你已经确定你知道标题中问题的答案,你可以跳过那部分。。。

什么是JIT?

PHP实现了一个虚拟机,一种虚拟处理器,我们称之为Zend VM。PHP将人类可读的脚本编译成虚拟机能够理解的指令(我们称之为操作码),这个执行阶段就是我们所说的“编译时”。在执行的“运行时”阶段,虚拟机(Zend VM)执行代码的指令(操作码)。

这一切工作得很好,像APC(过去)和OPCache(现在)这样的工具可以缓存代码的指令(操作码),以便“编译时”只在必须的时候发生。

首先,有一行代码解释了什么是JIT:

Just-in-time 是一种编译器策略,它接受代码的中间表示形式,并在运行时将其转换为依赖于体系结构的机器代码,以便及时执行。

在PHP中,这意味着JIT将为Zend VM生成的指令作为中间表示,并发出依赖于体系结构的机器代码,因此代码的宿主不再是ZendVM,而是CPU。

为什么PHP需要JIT?

在PHP 7.0之前,PHP内部社区关注的焦点是性能,这是由Facebook的HHVM项目带来的良性竞争带来的。PHP 7.0中的大部分核心更改都包含在PHPNG补丁中,这大大改进了PHP在其核心上利用内存和CPU的方式,从那时起,我们每个人都被迫关注性能。

自PHP 7.0以来,已经有了一些性能改进,HashTable (PHP的核心数据结构)的优化,某些操作码的Zend VM的专门化,某些序列的编译器的专门化,以及对OPCache的优化器组件的不断改进。。。除此之外还有很多其他的,太无聊了。

这是一个残酷的事实,这些优化只能带我们到目前为止,我们正在迅速接近,或可能已经遇到了砖墙,在我们的能力,以进一步改善它。

注意:当我们说“我们不能再改进了”时,我们真正的意思是,“我们必须做出取舍,以进一步改进它不再看起来有吸引力”。。。每当我们讨论性能优化时,我们都在讨论权衡。通常,在简单性和性能之间进行权衡。我们都想认为最简单的代码是最快的代码,但在现代的C编程世界中,情况并非如此。最快的代码通常是准备利用依赖于体系结构的内部函数或依赖于平台(编译器)的内部函数的代码。简单并不能保证最好的性能。。。

此时,PHP的JIT功能似乎是从PHP获得更多性能的最佳方法。

JIT会让我的网站更快吗?

很有可能,并不明显。

也许不是您期望的答案:在一般情况下,用PHP编写的应用程序是I/O绑定的,JIT在CPU绑定的代码上工作得最好。

“I/O和CPU绑定”到底是什么意思?

当我们想要描述一段代码或一个应用程序的一般性能特征时,我们使用术语I/O绑定和CPU绑定。

最简单的说法是:

如果我们能够改进(减少、优化)它所做的I/O,那么一段I/O绑定的代码将会运行得更快。如果我们能够改进(减少、优化)CPU正在执行的指令,或者(神奇地)提高CPU的时钟速度,那么一段CPU限制的代码就会运行得更快:)一段代码或一个应用程序可以是I/O绑定、CPU绑定,或者与CPU和I/O同等绑定。一般来说,PHP应用程序往往是I/O绑定的——减慢它们速度的是它们正在执行的I/O——连接、读取和写入数据库、缓存、文件、套接字等等。CPU绑定的PHP是什么样子的?

由于大多数PHP应用程序的性质,许多PHP程序员并不熟悉CPU绑定代码——他们的工作往往是连接到某个数据库,或者可能是一个缓存,做一些轻量级的工作,并输出html/json/xml响应。

您可能会环顾代码库,发现许多与I/O无关的代码,甚至调用与I/O完全断开连接的函数的代码,并且会感到困惑,我似乎是在暗示这并没有使您的应用程序CPU受到限制,即使处理非I/O的代码行数可能比I/O多。

PHP实际上相当快,它是世界上解释速度最快的语言之一。Zend VM调用与I/O无关的函数和在机器代码中进行相同的调用之间没有显著的区别。

这显然是有区别的,但事实是,机器代码有一个调用约定,Zend VM有一个调用约定,机器代码有一个序言,Zend VM有一个序言:在Zend操作码中调用某个c_level_function()还是机器代码对调用应用程序的性能没有显著影响-尽管这似乎对那个电话有很大的影响。

注意:调用约定大致是指在进入另一个函数之前执行的一系列指令,序言是指在进入另一个函数时执行的一系列指令:在这两种情况下,调用约定都将参数推送到堆栈上,序言将它们从堆栈中弹出。

循环、尾调用和X呢?我听说你问过:PHP实际上非常聪明,启用了OPCache的优化器组件,你的代码就好像被魔法转化成了你能编写的最有效的形式。

现在需要注意的是,JIT不会改变Zend函数的调用约定,而不是VM建立的约定-Zend必须能够在任何时候在JIT和VM模式之间切换,因此决定保留VM建立的调用约定。因此,当JIT运行时,随处可见的那些调用并没有明显地加快速度。

如果您想了解CPU绑定的PHP代码是什么样子的,请查看Zend/bench.php文件... 这显然是一个极限的CPU代码示例,但它应该让我们知道JIT真正的亮点是在数学领域。

PHP是否为加快数学速度做出了最终的权衡?

不,我们这样做是为了扩大PHP的范围,而且相当大。

在这个非常偏颇的PHP开发人员看来,如果你在2019年是一名web程序员,你还没有考虑在下一个项目中使用PHP,那么你做的web是错误的。

在PHP中提高更快地执行数学的能力,乍一看,似乎是一个非常狭窄的范围。

然而,这实际上为机器学习、3d渲染、2d(gui)渲染和数据分析(仅举几个例子)打开了大门。

为什么我们不能在PHP 7.4中使用它呢?

我刚刚把JIT称为“最终的权衡”,我认为它是:它可以说是有史以来最复杂的编译器策略之一,也许是最复杂的。引入JIT就是引入相当的复杂性。

如果你问Dmitry(JIT的作者)他是否让PHP变得复杂,他会说“不,我讨厌复杂性”(这是一个直接的引语)。

归根结底,复杂是我们所不了解的,而目前,真正了解JIT实现的内部开发人员(不到几个)很少。

PHP 7.4的发展很快,合并到php7.4中会给我们留下一个PHP版本,只有不到几个人可以调试、修复或改进(在任何实际意义上)。对于那些对合并到PHP 7.4投反对票的人来说,这种情况是不可接受的。

在从现在到PHP 8的这段时间里,我们中的许多人将在业余时间努力理解JIT:

我们仍然有一些要实现的特性和需要为php8重写的工具,首先我们必须理解JIT。我们需要这一次,并非常感谢大多数选民认为适合把它交给我们。

复杂并不是可怕的同义词:

复杂可以是美丽的,就像星云一样,JIT就是那种复杂。原则上,你可以完全理解某件复杂的事情,并且只在表面上的复杂程度上稍微降低一点。换句话说,即使有20个内部开发人员和Dmitry一样熟悉JIT,它也不会真正改变JIT的复杂性。

PHP的开发速度会减慢吗?

没有理由认为会这样。我们有足够的时间可以满怀信心地说,到PHP 8普遍可用时,我们中已经有足够多的人熟悉JIT,至少在修复bug和推动PHP向前发展方面能够像今天一样发挥作用。

当试图将这一点与JIT本质上是复杂的观点联系起来时,请考虑我们花在引入新特性上的大部分时间实际上是花在讨论该特性上的。对于大多数功能,甚至修复,代码可能需要几分钟或几小时的编写时间,而讨论则需要几周或几个月的时间。在极少数情况下,一个特性的代码可能需要几个小时或几天的时间来编写,但在这些极少数情况下,讨论总是需要更长的时间。

展开
收起

最新数据显示PHP网站中有50%使用php7版本以上

昨天(14号),根据Sam Soltano发布有关PHP网站有关PHP版本数据显示,PHP网站中有50%使用php7版本以上,距离其PHP7最初发布已经过去4年时间了。

PHP7的发布使得php网站运行性能提升一倍左右,PHP作为web开发最热门编程语言,一直从专注前端用户的体验效果。我们都应该知道PHP5是PHP发展历史上性能与功能上的一次重要改革,但是随意web开发的更高需要,大型PHP开发项目PHP5表现比较吃力,自从PHP7发布之后,web开发将要打破一切。

从官方说法,性能提升:PHP7比PHP5.6性能提升了两倍,而且全面支持64位,更重要是修改了之前发现的致命错误,支持更多的类扩展,满意开发的需要,所以PHP7的发布将是未来里程碑的发展。

目前新PHP网站已经不再把PHP5版本作为首先开发版本,默认开发版本页是推荐PHP7以上版本,而且有更多的旧网站已经升级到PHP7以上。

虽然PHP7已经发布有四年之久,但是并没有在更短时间内能超过PHP5版本,主要原因是PHP5版本系列已经发布许久,而且是当时最优秀的版本,从PHP6发布开始,PHP5并没有被直接淘汰,PHP6出来之后PHP5.7更加受到开发者珍惜,PHP5.7系列的有PHP所有完整功能,所以PHP7从性能上弥补PHP5的不足。

所以未来PHP7版本将是PHP又一次重要的改革,我相信未来很长一段时间很难改变PHP7的地位。

展开
收起

Php本地多版本安装

引言

lumen和laravel可以使用自带的install进行安装(可参照参考1和参考2),令人发指的是最新的安装器默认采用的是php7.1,本地的环境是7.0,所以得不失礼貌微笑的说一声:干得漂亮!

问题

那么问题来了,我要安装多版本的php了,php7.1

步骤

安装php7.1

brew install php71

修改php-fpm.conf

原因是我有php70,php71,对php70我还是使用之前默认的9000端口,php71更改为9001端口,这样只要在nginx配置站点的时候制定端口就可以使用不同版本的php版本啦!!

php70的php-fpm配置php71的php-fpm配置

启动php-fpm

cd /usr/local/Cellar/php@7.0/7.0.27_19/sbin

./php-fpm -Dcd /usr/local/Cellar/php@7.0/7.1.18/sbin

./php-fpm -D

php启动php-fpm

配置nginx

nginx

1.比如我为了测试方便,需要打印本地的phpinfo,配置了两个一个是localhost localhost9000.com,一个是localhost9001.com,监听不同的端口,指向的是同一个directory,在/usr/local/var/www里面index.php,其实就是echo phpinfo();

2.使用SwitchHost管理本地域名(工作中需要配置各种域名,这个工具棒棒哒),配置了两个

127.0.0.1localhost9000.com

127.0.0.1localhost9001.com

3.浏览器访问:

localhostlocalhost

切换php版本

Q:lumen安装他用的是php的环境变量,也就是说你不能通过参数告诉他我要用哪个版本来创建lumen,你要指定php环境变量指向的php版本,不然还是无法创建应用。

A:由于运行了两个版本的php-fpm,而且在不同的端口(9000,9001)所以web访问的时候制定端口就好了,但是cli模式访问的时候就比较尴尬了,这里推荐php-version这个东东,不过我遇到了问题,就是切换不了,以至于我只能修改环境变量来制定不同的php版本。(待作者给我答复吧,github~~)

安装redis、xdebug、memcached扩展

感兴趣的可以看一下参考5,大致的意思是brew官方改版tap库了,所以你就别指望

brew install php71-redis

方法来安装redis扩展啦,xdebug,memcached等等统统不支持了,是不是瞬间忧伤成狗了???哈哈哈,还有一种方法叫源码安装。(参考4给出了扩展源码地址,下载源码,解压,然后进入目录)

1.确认phpize目录

phpizephpize

2.进去扩展目录(确认好你的php环境变量是你要编译扩展对应的版本~~)

/usr/local/Cellar/php@7.1/7.1.18/bin/phpize

./configure

make

make test

make install

ext

3.引入该扩展(xdebug是zend_extension扩展,redis和memcached是extension扩展)

ext

4.重启php-fpm

备注

原初的目的就是为了装一下lumne5.6,没想到引出了这么多问题。。。。。不过多版本php安装感兴趣的小伙伴可以了解一下~~~

参考

https://lumen.laravel.com/docs/masterhttps://laravel.com/docs/masterhttps://blog.csdn.net/qdujunjie/article/details/38415033http://pecl.php.net/index.phphttps://newsn.net/say/brew-php-redis.html

展开
收起

PHP7版本中有哪些新特性?

PHP7版本中的新特性有哪些?

一点PHP博客分享关于php7.0中的一些新特征,在PHP7中由于修改了底层引擎大部分代码,以及通过各种方式提高PHP的性能,所以在PHP7中也增加了一些新的语法,这些语法的使用也能对提高性能有帮助。

1.标量参数类型声明

现在支持字符串(string)、整型(int)、浮点数(float)、及布尔型(bool)参数声明,以前只支持类名、接口、数组及Callable两种风格:强制转换模式(默认)与严格模式

2.返回类型声明

3.??运算符

?? 用于替代需要isset的场合,这是一个语法糖。

4.<=> 比较运算符

就是看两个表达式值的大小,三种关系: = 返回0、< 返回-1、 > 返回 1

5.define支持定义数组类型的值

php 5.6已经支持CONST 语法定义数组类的常量,PHP7中支持define语法。

6.匿名类

7.增加了整除函数 intdiv

小结:

新特性

性能提升:PHP 7要比PHP 5.6快两倍,具体如何让PHP7中的性能达到最大化,可以看之前博主发的一篇文章。

全面一致的64位支持

移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展

新增了空接合操作符(??)

如果觉得对你有帮助,请点点关注,也是对我的一种支持和鼓励,关注后查看更多内容。

不忘初心,继续编程。

展开
收起

php版本升级?php哪个版本好?

嗯哼,刚开始也不懂php是什么鬼。后来懂了,原来是一种环境语言,服务器和虚拟主机都需要它,必然是需要的。而本人一直以来心中有个疑惑,PHP版本是不是越高越稳定,越高就越好呢?在一般情况下,版本越新越好,就拿wordpress来说在PHP7.0环境下比之前的版本速度提升在3倍左右,3倍,3倍,3倍哦!飞起来了!

目前,PHP最高版本是7.2.x.x,然而我们一般使用的还是php5.5.x或者是Php5.6.x,甚至还有相当一部分使用的PHP5.3.X,PHP5.4.X版本。主要还是很多程序都不支持新的PHP版本,特别是一些很久没有更新的程序,只支持PHP5.2.X系列版本,到底选择什么版本,还得取决于您使用的什么程序以及相应的模板,而不是盲目的追求过高的版本。如果要兼容更多的程序,建议使用PHP5.5.X版,如果要追求更高的性能,推荐PHP5.6.X甚至PHP7.0系列。

目前wordpress程序很够非常完美的支持php7.0,然而部分没有更新的模板在7.0下有很多的问题,因此建议使用wordpress程序的伙伴在选择PHP7.0版本的时候特别要注意自己使用的模板以及插件是否兼容哦,如果是商业模板建议咨询作者,不要盲目的进行升级与替换。

目前本人使用的是bt系统,里面PHP版本可以自行下载各个版本,自行组合,由于模板等方面因素使用的是PHP5.6,和PHP7.0。所以在这里提醒各位不要盲目的追求过高的版本,根据自己程序最佳的PHP环境进行配置与选择哦,越新的版本,刚开始的BUG也是比较多,稳定性方面也可能打折扣的哦,老版本,毕竟经过了长时间的检验哦。

展开
收起