php发布

PHP7每次更新与发布,都注重性能的优化

我相信很多人都已经知道PHP 7.4 发布了,此版本标志着 PHP 7 系列的第四次特性更新。也有很多人在吐槽,但这些新特性标志着PHP是未来可期的。PHP 7.4.0进行了许多改进,很多估计都看过,那么我将重点讲新增Opcache特性:

Opcache Preloading Opcache 预加载新增 Opcache 预加载支持。预加载是在模块初始化的时候,将库和框架加载到 OPCache 中的过程,如下图所示:

预加载由 php.ini的 opcache.preload 进行控制。这个参数指定在服务器启动时编译和执行的 PHP 脚本。此文件可用于预加载其他文件,或通过 opcache_compile_file() 函数;

在服务器启动的时候,将某些文件永久读取到内存中,之后的请求即可直接从这内存中读取。利用这个功能,能够将框架,或者是类库预加载到内存中,以进一步提高性能,在ZF框架的测试中,开启opcache.preload后性能提升30%到50%。

其实不难发现,过去十年互联网江湖风云变幻。但无论技术如何迭代,互联网界都有一个亘古不变的追求——性能优化、高并发。一些每天划水的程序员,尤其是习惯业务Coder的可能会觉得,自己写出来的代码只要能运行就已经很好,哪里还有精力去追求性能和优化?

但其实,性能优化和高并发对企业而言越来越重要,并已经是每个程序员的必备加分项。

第一,性能和优化是每个技术和管理人员的进阶必备技能想要进阶更高职位,每个互联网从业人员都需要具备这些知识。掌握了这些知识,开发工程师在开发软件时才能写出更高性能的代码;能够帮助企业提升服务效率并降低运营成本。

第二,性能优化和高并发、分布式等技术会帮助延长“职业生命”能够帮助公司提升业务性能和容量效率,增加用户量,节省运营成本。随着业务规模的扩展,公司也越来越需要这样的高级人才。国内也有同样的趋势。但是,做好性能优化和高并发、分布式工作并不容易。这种性能优化和并发编程的工作还需要各种软技能,这种学习和积累如果没有前人引路,只靠自己慢慢摸索,不太可能高效进阶。

那么该如何掌握性能优化、分布式高并发进阶PHP架构师呢?这里小编整理了一份架构学习流程,不管是传统行业还是互联网行业,掌握这些技术都能对自己的技术有一个质的飞跃。希望能帮助到你。

一、框架内核专题要求:1 了解PHP开发规范,项目设计技巧,熟练掌握框架的核心原理2 了解Redis,Memcache的应用场景,了解Mysql数据库架构优化3 熟练使用Linux,并熟悉常见软件编译(如MySQL,NGINX,Apache)和优化4 对OOAOODOOPAOP编程思想有一定理解5 熟悉常见的设计模式,能在项目中熟练运用,阅读框架底层源码必须掌握1 设计模式Factory工厂模式、Single单例模式、注册模式、适配器模式、策略模式、观察者模式、原型模式、装饰器模式、Facade模式、IOC(控制反转)和DI(依赖注入)、Pipeline模式、了解上面这些设计模式的应用场景。2 TP框架ThinkPHP技术架构源码分析,路由底层源码分析,内核源码分析,RPC接口实现,Facade分析等3 Laravel框架必须要掌握Laravel6核心技术架构源码分析,路由原理分析,中间件源码分析,Blade模板源码分析,Service机制源码分析,系统组件与应用组件的分析其他框架也差不多一样,学会研究一个框架底层,其他的都不是问题的,比如Symfony,Yii框架等。

二、性能优化专题要求:1 熟悉负载均衡,安全防御等技术2 熟练主流数据库MySQL osql如Redis,MongoDB,具备优秀的数据库建模能力3 熟悉MySQL数据库设计和优化4 对Http,Restful,RPC等有深入的理解5 有数据结构和算法基础必须掌握1 数据库优化理解MySQL底层BTREE机制,sql执行计划深入详解,MySQL索引优化详解,慢查询分析与sql语句优化,MySQL主从复制及读写分离,MySQL分库分表,数据库中间件MyCAT切分策略。2 Redis高级Redis的特点,Redis工作流程,Redis数据类型与应用,场景分析,Redis操作,优化与内存分配3 Nginx专题NGINX运行机制,参数认识及调优,反向代理与负载均衡实战,集群与负载均衡基准测试4 PHP优化优雅的创建对象,注意对象的通用方法,类的设计陷阱,程序设计通用规范,PHP垃圾回收处理机制,php内核探索

三、微服务专题要求熟悉微服务架构设计,并对其进行微服务改造,熟悉并发编程模型,并且要掌握对Linux系统,ElasticSearch的使用1 swoole掌握swoole基础开发,进程模型,Task异步任务,任务池,service服务器,WebSocket实战,RPC分布式接口开发,要会数据库连接池的使用,协程编程开发以及多进程的使用2 Api接口平台API架构设计与接口实现,文档自动生成与性能的优化3 微服务框架微服务设计模式,路由网关的详解,客服端负载均衡原理,CONSUL服务发现等4 TARS分布式架构TARS环境的部署与配置,技术架构与服务开发

四、工程化专题要求:1 熟悉Linux操作系统与调优2 具备shell脚本编程能力3 了解持续集成,持续部署与防范4 精通Git,SVN等常见版本管理工具并能应对版本冲突1 Linux操作掌握熟练的linux命令,连接,文件,挂载。LNAMP环境编译安装配置,shell监本的编程,shell管道机制与通配符2 ComposserComposer的安装与命名空间,PSE开发规范,Composer自动加载原理分析,更要学会自主开发composer组件3 GIT/SVNGit分布式特点与SVN的区别,GIT与SVN的安装与配置,更要懂得GIT的分支管理,仓库配置与冲突的解决办法4 Docker与单元测试单元测试,Docker构建LNAMP环境,Docker网站组成,路由互联。基于Swarm构建Docker集群。JenKins自动化部署与集成

五、网站架构要求:有较强业务需求建模能力和业务架构设计能力。熟悉UML设计,能为团队引入创新的技术,创新的解决方案,用创新的思路解决问题1 分布式缓存Redis主从复制详解;Redis分布式集群部署;Redis数据同步一致性问题解决方案;Redis读写分离与哨兵机制,Redis分布式锁以及Redis缓存击穿,缓存雪崩防御策略。2 消息中间件ActiveMQ模型原理详解与应用;ActiveMQ与PHP集成Kafka消息处理原理剖析;RabbitMQ消息分发原理等3 高并发分流Nginx优化深入剖析;分布式全局ID生成的方案;Session共享及单点登录解决方案;高并发下的服务降级与限流;分布式定时任务调度。4 亿级云平台架构ElasticSearch的使用,云平台三次架构模式,PAAS应用层实战,底层服务封装5 并发编程IO基本概念要掌握;多协议通信;无锁化编程及并发处理;多协议RPC框架。

以上是本文的全部内容,希望对大家的学习有帮助,也希望大家多多支持 php自学中心

感谢阅读!

展开
收起

Thinkphp发布文章获取第一张图片为缩略图实现方法

张新全

  在我们写cms网站程序或者二次开发的时候,如果你没有上传缩略图,将文章中的第一张作为自己的缩略图,使我们程序员最常用的手段,今天分享给大家如何用Thinkphp框架,将文章获取第一张图片为缩略图实现方法

张新全

  原理:通过正则匹配图片地址获取第一张图片地址

  此为函数在模块或是全局Common文件夹中的function.php中

  /**

  * [getPic description]

  * 获取文本中首张图片地址

  * @param [type] $content [description]

  * @return [type] [description]

  */

  function getPic($content){

  if(preg_match_all("/(src)=([\"|']?)([^ \"'>]+\.(gif|jpg|jpeg|bmp|png))\\2/i", $content, $matches)) {

  $str=$matches[3][0];

  if (preg_match('/\/Uploads\/images/', $str)) {

  return $str1=substr($str,7);

  }

  }

  }

张新全

  用法演示

  $content=I('post.body');//获取富文本编辑器内容

  $info=getPic($content);//使用函数 返回匹配地址 如果不为空则声称缩略图

  if(!$info==null){

  $thumb=$info.'thumb240x160.png';

  $image = new \Think\Image();//实例化图像处理,缩略图功能

  $image->open($info);// 生成一个居中裁剪为240*160的缩略图

  $unlink=$image->thumb(240, 160,\Think\Image::IMAGE_THUMB_CENTER)->save($thumb);

  }else{

  $thumb='';

  }

展开
收起

「漏洞通告」PHP远程代码执行漏洞(CVE-2019-11043)

1.综述

2019年9月14日至18举办的 Real World CTF中,国外安全研究员 Andrew Danau 在解决一道CTF题目时发现,向目标服务器 URL 发送 %0a 符号时,服务返回异常,疑似存在漏洞。

2019年9月26日,PHP官方发布漏洞通告,其中指出:使用 Nginx + php-fpm的服务器,在部分配置下,存在远程代码执行漏洞.且该配置已被广泛使用,危害较大,影响较为广泛。

2019年10月22日,该PHP远程代码执行的漏洞利用POC被公开在github上。

Nginx与 php-fpm 服务器上存在远程代码执行漏洞,由于Nginx的fastcgi_split_path_info模块在处理带%0a的请求时,对换行符 \n 处置不当使得将 PATH_INFO 值置为空,从而导致 php-fpm 在处理 PATH_INFO 时存在漏洞,攻击者通过精心的构造和利用,可以导致远程代码执行。

该漏洞存在于php上。Nginx在0.7.31之后版本才存在fastcgi_split_path_info这个指令。另外经过poc验证,php5.4版本未受影响,php5.6以上版本会造成服务崩溃,php7.0以上版本可以执行远程命令执行。

2.漏洞概述

漏洞类型:远程代码执行漏洞

危险等级:高危

利用条件:nginx配置了fastcgi_split_path_info

受影响系统:PHP 5.6-7.x,Nginx>=0.7.31

3.漏洞编号

CVE-2019-11043 PHP远程代码执行漏洞

4.漏洞描述

Nginx 与 php-fpm 服务器上存在远程代码执行漏洞,由于Nginx的fastcgi_split_path_info模块在处理带 %0a 的请求时,对换行符 \n 处置不当使得将 PATH_INFO 值置为空,从而导致 php-fpm 组件在处理 PATH_INFO 时存在漏洞,攻击者通过精心的构造和利用,可以导致远程代码执行。

5.修复建议

1).补丁包修复方案:

目前官方尚未发布修复漏洞的补丁包,将于当地时间24日进行发布,请随时关注并进行升级。

2).源码修复方案:

https://bugs.php.net/patch-display.php?bug_id=78599&patch=0001-Fix-bug-78599-env_path_info-underflow-can-lead-to-RC.patch&revision=latest

3).临时修复方案:

Nginx 配置文件中location添加如下配置:

try_files $uri =404

6.即时检测

青藤云安全在漏洞爆出的第一时间,已经及时分析响应并支持该漏洞的检测。

具体产品的使用方法:登录青藤主机平台,选择漏洞检测功能进行检查。

参考链接:

https://bugs.php.net/bug.php?id=78599

https://lab.wallarm.com/php-remote-code-execution-0-day-discovered-in-real-world-ctf-exercise/

https://github.com/neex/phuip-fpizdam

展开
收起

PHP 8 发布首个 Alpha 版本

按照发布计划,PHP 8 将于今年 11 月 26 日发布,而原定于 6 月 18 日发布的第一个 Alpha 版本跳票到了今天发布。

PHP 8 是一个新的主要版本,它引入了一些重大变更,以及许多新特性和性能改进,下边简单介绍一些亮点:

JIT,Just-In-Time,即时编译

最重大的特性非 JIT 莫属。该特性的研发历时多年,熬过了 PHP 5 与 7 大版本系列(PHP 6 项目流产),直到去年 3 月份才最终通过投票确认将进入 PHP 8。

JIT 是一种编译器策略,它将代码表述为一种中间状态,在运行时将其转换为依赖于体系结构的机器码,并即时执行。在 PHP 中,这意味着 JIT 将为 Zend VM 生成的指令视为中间表述,并以依赖于体系结构的机器码执行,也就是说托管代码的不再是 Zend VM,而是更为底层的 CPU。

虽然自 PHP 7.0 以来,通过优化核心数据结构 HashTable、强化 Zend VM 中某些操作码与持续改进 OPCache 的 Optimizer 组件等具体措施,PHP 性能得到了显著提升,但是实际上这些优化似乎已经走到极限了。现在 JIT 从底层着手,被认为是目前提升 PHP 性能的最佳出路。

关于引入 JIT 后的性能对比(以及 PHP 8 整体性能),可以参考一下本月 Phoronix 的基准测试(注:用的是 5 月底的源码构建版进行的测试)。

Union Types,联合类型

Union Types 支持接收多个不同类型的值,它是两种或多种类型的集合,使用时可以选择其一。包括 PHP 在内的开源生态的标准库中使用联合类型非常普遍,PHP 支持联合类型,将会允许将更多类型信息从 phpdoc 迁移至函数签名。可以说,泛型之后,联合类型是目前类型声明系统中最大的突破口。

Attributes,注解

这里的 Attributes 也就是其它语言中的 annotations(注解),它提供了一种向类添加元数据的方法,无需解析文档块。

新的 static 返回类型

虽然已经可以返回 self,但是考虑到 PHP 具有动态类型的性质,PHP 8 中支持 static 返回类型将更加高效,对于许多开发者来说应当非常有用。

WeakMap,弱映射

WeakMaps 允许创建从对象到任意值的映射(类似 SplObjectStorage),而不会阻止对用作 key 的对象进行垃圾回收。只要将对象添加到 WeakMap 中,GC 在触发条件时就可以将其占用内存回收。

PHP 7.4 中,实际上已经引入了对 WeakReference(弱引用)的支持。但是,原始的弱引用本身用途有限,而弱映射在实践中更为常用。由于没有提供注册销毁回调的功能,因此无法在 PHP 弱引用之上实现有效的弱映射。弱映射的一般用例是将数据与单个对象实例相关联,而不强迫它们保持活动状态,避免长时间运行的进程无谓地占用内存。

此外还注意到几个处于投票阶段的特性(也就是可能比较快会并入某个版本中的),像 match expression(匹配表达式)与使用 @@ 或 #[] 替代 <<>> 的提案都是比较值得关注的:

需要注意的是,PHP 8 是一个重大更新版本,带了一些重大变更,所以最好查看 UPGRADING 文档的相关事项。不过实际上,其中许多重大变更在之前的 7.* 版本中已经引入,因此,如果你一直保持最新版本,那么升级到 PHP 8 也影响不大。

另外,PHP 8 中 JIT 主要贡献者鸟哥 @Laruence 在此版本发布前也发表了相关文章,讲述 JIT 的研发历程,感兴趣可以瞧瞧:写在PHP8发布之前的话。

展开
收起

快速、稳定、易维护的php框架——CmlPHPV2.8发布

简介

CmlPHP从12年开始开发。从最早追求尽可能轻量,php5.2-的语法。到后面不断总结工作中碰到的实际的问题,加入工程化的一些东西。加入Composer的支持。加入了很多可以减少程序员开发时间的一些特性。现在发布了v2.x。提供了API快速开发的组件或者说基于CmlPHP v2.x的一个项目演示(自动从注释生成接口文档)。不说什么跟xx框架比。比来比去可一点都不好玩,适合就好。这个框架是我到目前总结的尽可能提高自己开发效率的工具集(或者有更好的说法?)。提供给需要它的朋友,希望它可以帮助大家更轻松的完成开发的工作.

v2.x

CmlPHP v2.x 是一个免费的遵循apache协议的全能型php开源框架

CmlPHP v2.x 是基于php5.3+(v2.7+要求php5.4+)版本(已经测试过php7)开发的VC/HMVC/MVSC/HMVSC框架,支持composer、分布式数据库、分布式缓存,支持文件、memcache、redis、apc等缓存,支持多种url模式、URL路由[RESTful],支持多项目集成、第三方扩展、支持插件。

CmlPHP v2.x 在底层数据库查询模块做了缓存集成,开发者无需关注数据缓存的问题,按照相应的API调用即可获得最大性能。从而从根本上避免了新手未使用缓存,或缓存使用不当造成的性能不佳的问题。也杜绝了多人协同开发缓存同步及管理的问题

CmlPHP v2.x 支持根目录、子目录,单入口、多入口部署、支持独立服务器、虚拟主机、VPS等多种环境,绝大部分开发环境可直接运行,无需配置伪静态规则(部分低版本server只要修改框架URL配置即可,框架会自动处理),快速上手开发。线上环境对SEO有要求时再配置伪静态即可。

CmlPHP v2.x 自带强大的安全机制,支持多种缓存并可轻松切换,帮你解决开发中各种安全及性能问题,保证站点稳定、安全、快速运行

CmlPHP v2.x 提供了详细的开发文档,方便新手快速入门

CmlPHP v2.x 拥有灵活的扩展机制,自带了常用的扩展

CmlPHP v2.x 拥有灵活配置规则,开发、线上互不干扰

CmlPHP v2.x 拥有简单高效的插件机制,方便你对系统功能进行扩展

CmlPHP v2.x 提供了简单方便的debug相关工具方便开发调试。线上模式提供了详细的错误log方便排查

CmlPHP v2.x 适用于大、中、小各种类型的Web应用开发。API接口开发

CmlPHP v2.x 支持Session分布式存储

CmlPHP v2.x 支持守护工作进程

CmlPHP v2.x 提供了命令运行支持

从v2.6.0 正式引入MongoDB的支持

更多关于CmlPHP版本的特性与功能去github了解(评论里有github地址)

如果觉得文章还行,可以关注我,你的支持会鼓励我不断分享更多更好的优质文章。

回忆我用的第一个JavaScript 的 MVP 框架——Riot(1KB)

展开
收起

软文发稿新闻文章发布自助推广平台PHP源码

PHP软文发稿新闻文章发布自助推广平台源码

新款软文交易系统源码。重写纯PHP代码,Mysql数据库,安全有保障最新支付宝在线充值API接口前/后台软文发布操作优化等新闻/媒体站群免发布接口定制数据库配置文件/include/db.php

前台截图:

后台截图:

除非注明,否则均为爱游博客原创文章,转载必须以链接形式标明本文链接

展开
收起

ThinkPHP6.0版本正式发布,TP6.0手册5.1号前发布

摘要:tp5.2直接更名为6,原因整个框架架构发生了变化 , 将框架, 做为一个组件集成到项目中, 全面拥抱组件化开发趋势, 与laravel完全一致了。目前官方的6.0手册还在编写中,还没有发布,待发布后php中文网第一时间更新!

以下为官方最新信息:

ThinkPHP5.2版本正式变更为6.0版本

主要考虑到新的架构调整变化较大以及不支持无缝升级这两大原因,官方正式宣布ThinkPHP5.2RC版本的版本号由原来的5.2变更为6.0(这一规划此前在核心成员中曾多次提及),不过PHP版本要求暂时没有变化(依然还是7.1+)。

最新6.0版本中,将会对Swoole及单元测试做出更多的完善支持。App应用架构体系也发生了较大的变化,从原来的单一App职责类拆分为一个App基础类和两个App类的运行时,包括Http类(满足包括WEB服务在内的Http服务)和Console类,并且可以更方便的在两个运行时之间相互调用。当然也可以更方便地扩展更多的App运行时。

只有Http运行时支持路由和多应用机制,在Console运行时中并没有多应用和路由的概念。

官方计划在今年的5月1日之前发布第二个RC版本,届时还将迎来新版的手册,并且大部分扩展也会基本升级完成。

那么问题来了,你是否希望5.1 LTS版本成为5.x版本的最后一个版本呢?欢迎大家留言讨论。

展开
收起

php7.4候选版发布,性能又有了稳定提升

最近,万众期待的php7.4候选版本终于正式发布了。

接下来我们看看php7.4主要有哪些改进,以及在性能上有哪些提升。

首先,php7.4修复了大量的bugs,其中有些是内核的bug。

其次,这次发布的版本是所有新功能的增加的集合,也是锁定版,之后的正式版将不会增加新的功能,只会是修改bug和提升性能。

然后,php7.4的正式版发布日期也确定了下来,不出意外的话,会在2019年11月份发布。

接着,我们来说下php7.4带来了哪些新特性和改进。

新增加了FFI扩展功能,它可以让我们通过php代码,就可以直接访问c语言函数和变量以及结构体。GD库扩展新增加了TGA图片的支持SQLite3支持线上备份OpenSSL版本支持TLS1.3短闭包的支持预加载的支持自定义序列化改进类型差异简化Null合并运算符弃用短标签数组支持展开运算符

amd epyc php benchmarks

最后,我们看下php7.4的性能有怎样的提升。

下面是php7.4, php7.3, php7.2, php7.1, php7.0, php5.6的性能测试比较,测试环境是在debian系统下amd cpu环境下测试的。

php benchphp benchphp bench

从上面的测试结果我们可以看出来,虽然php7.4的性能提升相对来说很小,但是可以看出,在功能增加的情况下,性能依然在稳步提升。这些性能的提升,让我们很期待,也很坚信php8将会有更好的未来。

还有2个月php7.4就会正式发布,让我在接下来的日子来等待属于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以上版本非常有必要。

展开
收起

PHP7.3 正式发布

2018-12-06号,php7.3.0正式发布。

改动列表及新特性:

核心:

改进了PHP GC。重新设计了用PHP编写的旧的ext_skel程序,运行:'php ext_skel.php'获取所有选项。这意味着没有依赖关系,因此它可以在Windows上开箱即用。删除了对BeOS的支持。将PHP_VERSION添加到phpinfo()<title />。添加net_get_interfaces()。根据RFC https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes实现灵活的heredoc和nowdoc语法。根据RFC https://wiki.php.net/rfc/list_reference_assignment,添加了对list()和数组解构中的引用的支持。提高ZEND_SECURE_ZERO对NetBSD和没有本机类似功能的系统的有效性。添加了syslog.facility和syslog.ident INI条目,用于自定义syslog日志记录。修复了错误#75683(ZTS模式下zend_register_functions()中的内存泄漏)。修复了错误#75031(支持临时/内存流中的附加模式)。修正了错误#74860(当error_log设置为“syslog”时,未捕获的异常未正确格式化)。修复了错误#75220(在父级调用is_callable时的Segfault)。修正了错误#69954(分布式ini文件中已损坏的链接和未使用的配置项)。修复了错误#74922(组合类具有重复,相等的const属性的致命错误)。修复了错误#63911(相同的特征方法在编写过程中引发错误)。修复了错误#75677(Clang忽略了对可变参数函数的fastcall调用约定)。修复了错误#54043(删除了内部异常和用户定义异常的不一致)。修复了错误#53033(数学运算将对象转换为整数)。修复了错误#73108(内部类强制转换处理程序使用整数而不是浮点数)。修复了错误#75765(未找到基类时出现致命错误而非错误异常)。修复了错误#76198(措辞:“可迭代”不是标量类型)。修复了错误#76137(config.guess / config.sub无法识别RISC-V)。修复了#76427的错误(zend_objects_store_put中的Segfault)。修复了错误#76422(ftruncate文件> 2GB时失败)。修复了错误#76509(继承的静态属性可以通过ref从其父级取消同步)。修复了错误#76439(在未关闭的HereDoc中更改了行为)。修复了错误#63217(当用作ArrayAccess偏移时,常量数字字符串变为整数)。修复了错误#33502(某些nullary函数不检查参数的数量)。修复了错误#76392(错误重定位sapi / cli / php:不支持的重定位类型37)。不推荐使用不区分大小写的常量的声明和使用。为syslog过滤添加了syslog.filter INI条目。修正了错误#76667(Segfault with divide-assign op和__get + __set)。修复了错误#76030(RE2C_FLAGS很少被尊重)(CristianRodríguez)修复了损坏的zend_read_static_property(Laruence)修正了错误#76773(父类使用的特征会被子类忽略)。修正了错误#76767('asm'操作数在zend_operators.h中有不可能的约束)。修复了错误#76752(ZEND_COALESCE_SPEC_TMP_HANDLER崩溃 - _get_zval_ptr_tmp中的断言失败)。修复了#76820(Z_COPYABLE无效定义)的问题。修复了错误#76510(file_exists()停止为phar://工作)。修复了错误#76869(绕过受保护的方法accessibilty检查错误)。修正了错误#72635(constexpr中类常量使用的未定义类会产生致命错误)。修复了错误#76947(file_put_contents()阻止了文件的目录(__DIR__))。修复了错误#76979(define()错误消息未将资源视为有效值)。修复了错误#76825(未定义的符号___cpuid_count)。修复了#77110(C ++版本中未定义的符号zend_string_equal_val)。修正了#77231(使用convert.quoted-printable-encode过滤器时的Segfault)。bcmath时:

实施FR#67855(无法获得当前使用的规模)。修正了错误#66364(BCMath bcmul忽略了scale参数)。修复了错误#75164(split_bc_num()无意义)。修复了错误#75169(BCMath错误/警告绕过了PHP的错误处理)。CLI:

修复了错误#44217(stdout / stderr关闭后的输出导致立即退出状态为0)。修复了错误#77111(php-win.exe破坏了cli参数中的unicode符号)。BCMath:

将卷曲常数从卷曲7.50暴露到7.61。修复了错误#74125(修复了在支持多种支持的系统上查找CURL)。日期:

实现FR#74668:添加DateTime :: createFromImmutable()方法。修复了错误#75222(DateInterval微秒属性始终为0)。修复了错误#68406(在DateTimeZone对象上调用var_dump修改它)。修复了错误#76131(date_create的不匹配arginfo)。将timelib更新为2018.01RC1以解决几个错误:修复了错误#75577(DateTime :: createFromFormat不接受'v'格式说明符)。修复了错误#75642(微秒的环绕行为无法正常工作)。修正了错误#77097(当实际差异小于1秒时,DateTime :: diff会给出错误的差异)。DBA:

修复了错误#75264(发出编译器警告)。DOM:

修复了错误#76285(DOMDocument :: formatOutput属性有时会被忽略)。Fileinfo的:

修复了错误#77095(7.2 / 7.3中的慢速回归(与7.1相比))。过滤:

添加了'add_slashes'清理模式(FILTER_SANITIZE_ADD_SLASHES)。FPM:

添加了fpm_get_status函数。修复了错误#62596(PHP-FPM缺少getallheaders())。修复了错误#69031(进入stdout / stderr的长消息被错误截断) - 添加了与日志相关的新FPM配置选项:log_limit,log_buffering和decorate_workers_output。FTP:

修复了错误#77151(ftp_close():关机时的SSL_read)。GD:

在imagecreatefromstring()中添加了对WebP的支持。GMP:

导出GMP对象的内部结构和访问者助手。添加了gmp_binomial(n,k)。添加了gmp_lcm(a,b)。添加了gmp_perfect_power(a)。添加了gmp_kronecker(a,b)。的iconv:修复了错误#53891(iconv_mime_encode()无法对UTF-8字符串进行Q编码)。修正了错误#77147(修复60494忽略了ICONV_MIME_DECODE_CONTINUE_ON_ERROR)。IMAP:

修复了错误#77153(imap_open允许通过mailbox参数运行任意shell命令)。修复了错误#77020(imap_mail中的空指针取消引用)。Interbase的:修复了错误#75453(ibase_ [p]连接的反射错误)。修复了错误#76443(php + php_interbase.dll在module_shutdown上崩溃)。国际:

修复了错误#75317(UConverter :: setDestinationEncoding更改源而不是目标)。修复了错误#76829(对idn_to_utf8()函数的域验证不正确)。JSON:

添加了JSON_THROW_ON_ERROR标志。LDAP:

使用dds overlay为EXOP REFRESH操作添加了ldap_exop_refresh助手。添加了对发送和解析ldap控件的完全支持。修复了#49876(修复64位发行版上的LDAP路径查找)的问题。libxml2:

修复了错误#75871(使用pkg-config)。litespeed:

修复了错误#75248(仅构建litespeed SAPI时未创建二进制目录)。修复了错误#75251(缺少程序前缀和后缀)。MBstring:

更新为Oniguruma 6.9.0。修正了错误#65544(mb标题案例转换 - 引文中的第一个单词未大写)。修正了错误#71298(MB_CASE_TITLE行为错误,带有卷曲的撇号/引号)。修复了#73528的错误(zif_mb_send_mail崩溃)。修复了错误#74929(mbstring函数版本7.1.1与Windows上的5.3相比较慢)。修复了错误#76319(mb_strtolower与无效的UTF-8导致分段错误)。修复了错误#76574(使用未声明的标识符INT_MAX和LONG_MAX)。修复了#76594(由于zend_ini.c OnUpdateLong中的未对齐访问导致的总线错误)。修复了错误#76706(mbstring.http_output_conv_mimetypes被忽略)。修复了错误#76958(UTF7-IMAP转换损坏)。修复了#77025错误(mb_strpos抛出未知编码或转换错误)。修复了错误#77165(当给出一个空数组的参数时,mb_check_encoding崩溃)。Mysqlnd:

修复了错误#76386(Prepared Statement formatter截断日期/时间列的小数秒)。ODBC:

删除了对ODBCRouter的支持。删除了对Birdstep的支持。修复了#77079的错误(odbc_fetch_object有不正确的类型签名)。Opcache:

修复了错误#76466(循环变量混乱)。修复了错误#76463(var具有数组键类型但不是值类型)。修正了错误#76446(zend_variables.c:73:zend_string_destroy:断言`!(zval_gc_flags((str) - > gc))。修复了错误#76711(启用了OPcache触发误报“非法字符串偏移”)。修正了错误#77058(opcache中的类型推断会导致副作用)。修复了错误#77092(array_diff_key() - 分段错误)。OpenSSL:

添加了openssl_pkey_derive函数。添加min_proto_version和max_proto_version ssl流选项以及可能的TLS协议值的相关常量。PCRE:

实施https://wiki.php.net/rfc/pcre2-migration。将PCRE2升级到10.32。修正了错误#75355(preg_quote()没有引用#control字符)。修正了错误#76512(\ w不再包含unicode字符)。修复了错误#76514(preg_match中的回归使得它失败并出现PREG_JIT_STACKLIMIT_ERROR)。修复了错误#76909(preg_match在7.3和<7.3之间的差异)。PDO_DBlib:

实现FR#69592(允许自动跳过0列行集)。在\ PDO实例上将TDS版本公开为\ PDO :: DBLIB_ATTR_TDS_VERSION属性。像DATETIME一样处理DATETIME2列。修复了错误#74243(允许locales.conf驱动日期时间格式)。PDO_Firebird:

修复了错误#74462(对于FIREBIRD> = 3.0,布尔值为PDO_Firebird的结果只返回NULL)。PDO_OCI:

修正了错误#74631(PDO_PCO与PHP-FPM:在PHP-FPM设置之前初始化的OCI环境)。PDO SQLite:

添加对其他打开标志的支持pgSQL:

为pg_result_error()添加了新的错误常量:PGSQL_DIAG_SCHEMA_NAME,PGSQL_DIAG_TABLE_NAME,PGSQL_DIAG_COLUMN_NAME,PGSQL_DIAG_DATATYPE_NAME,PGSQL_DIAG_CONSTRAINT_NAME和PGSQL_DIAG_SEVERITY_NONLOCALIZED。修正了错误#77047(pg_convert的'TIME WITHOUT TIMEZONE'数据类型的正则表达式已损坏)。phar:

修复了错误#74991(include_path在某些情况下有4096个char限制)。修正了错误#65414(正确添加文件时处理前导斜杠)。修复了错误#77022(PharData始终使用模式0666创建新文件)。修复了phar_parse_pharfile中的错误#77143(堆缓冲区溢出(READ:4))。readline:

如果链接到libreadline,则为readline_info()添加completion_append_character和completion_suppress_append选项。Session:

修复了错误#74941(发送标头后会话无法启动)。SimpleXML:

修复了错误#54973(SimpleXML错误地转换了整数)。修复了错误#76712(空字符串的赋值创建了无关的文本节点)。插座:修复了错误#67619(在socket_write上验证长度)。肥皂:修复了错误#75464(对SoapClient :: __ setSoapHeaders的错误反映)。修正了错误#70469(即使使用例外= 1,SoapClient也会生成E_ERROR)。修复了错误#50675(SoapClient无法正确处理对象引用)。修复了错误#76348(WSDL_CACHE_MEMORY导致分段错误)。修复了错误#77141(当精度= -1时SOAP中的签名问题)。SPL:

修正了错误#74977(附加AppendIterator会导致段错误)。修复了错误#75173(AppendIterator :: append在foreach循环中的错误行为)。修复了#74372错误(带语法错误的自动加载文件使用下一个自动加载器,可能隐藏解析错误)。修复了错误#75878(RecursiveTreeIterator :: setPostfix有错误的签名)。修正了#74519(AppendIterator的奇怪行为)。修正了错误#76131(splarray构造函数的不匹配arginfo)。SQLite3:

将捆绑的libsqlite更新为3.24.0。Standard:

添加了is_countable()函数。添加了对SameSite cookie指令的支持,包括setcookie(),setrawcookie()和session_set_cookie_params()的替代签名。从inet_ntop()/ inet_pton()中删除多余的警告。修复了错误#75916(DNS_CAA记录结果包含垃圾)。修复了unserialize(),以通过手工制作的字符串禁用不受支持的数据结构的创建。修正了错误#75409(除了ENOSYS之外还接受EFAULT作为缺少getrandom()的指示)。修正了错误#74719(fopen()应该接受NULL作为上下文)。修复了错误#69948(路径/域未在setcookie中清理)。修复了错误#75996(mt_rand标头中的url不正确)。添加了hrtime()函数,以获得高分辨率时间。修复了错误#48016(尽管var_export()使用了stdClass :: __ setState,但未定义它)。修复了错误#76136(stream_socket_get_name应将IPv6括在括号中)。修复了错误#76688(禁止选项数组后的过多参数)。修复了错误#76713(属性损坏导致的分段错误)。修正了错误#76755(setcookie对于过期时间不接受“双重”类型)。修复了错误#76674(改进了array_ *失败消息,揭示了传递的内容而不是数组)。修复了错误#76803(ftruncate更改文件指针)。修复了#76818(内存损坏和段错误)的问题。修复了错误#77081(ftruncate()更改在c模式下搜索指针)。Testing:

实现了FR#62055(make run-tests.php支持--CGI--部分)。Tidy:

支持使用tidyp而不是整洁。修正了错误#74707(Tidy对于整理的函数有不正确的ReflectionFunction参数计数)。修复了tidy :: __ construct()的arginfo。Tokenizer:

修复了错误#76437(带有TOKEN_PARSE标志的token_get_all无法识别关闭标记)。修复了错误#75218(更改了解析为ParseError的剩余无法捕获的致命错误)。修复了错误#76538(带有TOKEN_PARSE标志的token_get_all无法识别带换行符的关闭标记)。修复了错误#76991(多个无效的灵活heredoc字符串的标记错误)。XML:

修复了错误#71592(外部实体处理从未失败)。zlib:

为compress.zlib包装器添加了zlib / level context选项。

展开
收起