2018-12-06号,php7.3.0正式发布。
改动列表及新特性:
核心:
改进了PHP GC。重新设计了用PHP编写的旧的ext_skel程序,运行:'php ext_skel.php'获取所有选项。这意味着没有依赖关系,因此它可以在Windows上开箱即用。删除了对BeOS的支持。将PHP_VERSION添加到phpinfo()
。添加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选项。