PHP 大会日本 2024

PHP 8 更新日志

8.4 | 8.3 | 8.2 | 8.1 | 8.0

版本 8.4.1

  • BcMath
    • [RFC] 向 BCMath 添加 bcfloor、bcceil 和 bcround。
    • 提高性能。
    • 调整 bcround() 的 $mode 参数,使其仅接受 RoundingMode 枚举。
    • 修复 BCMath 扩展中的 LONG_MAX。
    • 修复 bcdiv() 除以 1 的错误。
    • [RFC] 在 BCMath 中支持对象类型。
    • bcpow() 性能改进。
    • ext/bcmath:检查比例溢出。
    • [RFC] ext/bcmath:添加 bcdivmod。
    • 修复 GH-15968(避免在运算符计算中将对象转换为字符串)。
    • 修复错误 GH-16265(在结果为 0 时添加了提前返回情况)(高町咲)。
    • 修复错误 GH-16262(修复了 size_t 下溢的错误)(高町咲)。
    • 修复 GH-16236(修复了 BcMath\Number::pow() 和 bcpow() 在对 0 的负次幂求幂时的错误)(高町咲)。
  • 核心
    • 为 NetBSD、DragonFlyBSD、Solaris 和 Haiku 添加了 zend_call_stack_get 实现。
    • 从 12.x 版本开始在 FreeBSD 上启用 ifunc 检查。
    • 将 PHP_DEBUG 和 PHP_ZTS 常量的类型更改为 bool。
    • 修复错误 GH-13142(包含 \0 时,未定义的变量名会被缩短)。
    • 修复错误 GH-13178(将打包数组转换为散列时,迭代器位置不正确)。
    • 修复了 solaris 默认模式(32 位)下的 zend 纤程构建。
    • 修复了 macOs/arm64 的 zend 调用堆栈大小。
    • 添加了对 FreeBSD 上的 Zend 最大执行时间的支持。
    • 确保纤程堆栈不受 THP 支持。
    • 实现 GH-13609(在 WeakReference 类中转储包装对象)。
    • 添加了 sparc64 架构汇编对 zend 纤程的支持。
    • 修复 GH-13581 NetBSD 上没有可用的 TLS 空间。
    • 添加了纤程 Sys-V loongarch64 支持。
    • 调整闭包名称以包含父函数的名称。
    • 提高上传文件名和 tempnam() 创建的文件的随机性。
    • 向 zend_mm 自定义处理程序添加了 gc 和关闭回调。
    • 修复错误 GH-14650(在分配内存之前计算页面大小)。
    • 修复错误 GH-11928(--enable-re2c-cgoto 不会添加 -g 标志)。
    • 添加了 #[\Deprecated] 属性。
    • 修复 GH-11389(允许在析构函数中挂起纤程)。
    • 修复错误 GH-14801(修复 armv7 的构建)。
    • 实现属性钩子 RFC。
    • 修复 GH-14978(xmlreader 扩展 phpize 构建)。
    • 在比较期间遇到递归时抛出 Error 异常,而不是致命错误。
    • 为 C++ 构建添加了缺失的 cstddef 包含。
    • 将构建系统脚本 config.guess 更新到 2024-07-27,并将 config.sub 更新到 2024-05-27。
    • 修复错误 GH-15240(特性钩子中的无限递归)。
    • 修复错误 GH-15140(缺少具有非对称类型的抽象集的方差检查)。
    • 修复错误 GH-15181(已禁用的输出处理程序再次刷新)。
    • 将 E_USER_ERROR 传递给 trigger_error() 现已弃用。
    • 修复错误 GH-15292(MSVC 的动态 AVX 检测已损坏)。
    • 使用 "_" 作为类名现已弃用。
    • 退出命名空间现在会清除已看到的符号。
    • exit(和 die)语言结构现在行为更像函数。它们可以像可调用对象一样传递,受 strict_types 声明语句的影响,并且现在执行通常的类型强制转换,而不是将任何非整数值转换为字符串。因此,将无效类型传递给 exit/die 现在可能会导致抛出 TypeError 异常。
    • 修复错误 GH-15438(构造函数提升属性上没有可见性的钩子被忽略)。
    • 修复错误 GH-15419(缺少只读+钩子不兼容性检查以用于只读类)。
    • 修复错误 GH-15187(各种钩子对象迭代器问题)。
    • 修复错误 GH-15456(在虚拟属性上 get_class_vars() 崩溃)。
    • 修复错误 GH-15501(Windows HAVE_<header>_H 宏定义为 1 或未定义)。
    • 实现属性的非对称可见性。
    • 修复错误 GH-15644(非对称可见性不适用于钩子)。
    • 实现延迟对象 RFC。
    • 修复错误 GH-15686(使用外部 iconv 库构建共享 iconv)。
    • 修复向单边虚拟属性添加非对称可见性时缺少的错误。
    • 修复错误 GH-15693(main.c 中不必要的包含会使二进制文件膨胀)。
    • 修复错误 GH-15731(AllowDynamicProperties 验证应该在枚举上出错)。
    • 修复错误 GH-16040(在钩子中释放的对象的 use-after-free)。
    • 修复错误 GH-16026(在关闭期间重新使用 dtor 纤程)。
    • 修复错误 GH-15999(zend_std_write_property() 断言失败,带有延迟对象)。
    • 修复错误 GH-15960(带有延迟对象的 Foreach 边缘情况)。
    • 修复错误 GH-16185(各种钩子对象迭代器问题)。
    • 修复 OSS-Fuzz #371445205(attr_free 中的 Heap-use-after-free)。
    • 修复向静态属性添加非对称可见性时缺少的错误。
    • 修复错误 OSS-Fuzz #71407(zend_lazy_object_clone 中的 Null-dereference WRITE)。
    • 修复错误 GH-16574(不正确的错误“未定义方法”消息)。
    • 修复错误 GH-16577(EG(strtod_state).freelist 泄漏,带有 opcache.preload)。
    • 修复错误 GH-16615(zend_std_read_property 中的断言失败)。
    • 修复错误 GH-16342(添加了 ReflectionProperty::isLazy())。
    • 修复错误 GH-16725(钩子对象迭代器中未钩子属性的不正确的访问检查)。
  • Curl
    • 弃用 CURLOPT_BINARYTRANSFER 常量。
    • 将所需的 libcurl 版本提升到 7.61.0。
    • 向 curl_version() 返回值添加了 feature_list 键。
    • 添加了常量 CURL_HTTP_VERSION_3(libcurl 7.66)和 CURL_HTTP_VERSION_3ONLY(libcurl 7.88)作为 CURLOPT_HTTP_VERSION 的选项(Ayesh Karunaratne)
    • 添加了 CURLOPT_TCP_KEEPCNT 以设置在断开连接之前发送的探测次数。
    • 添加了 CURLOPT_PREREQFUNCTION Curl 选项,用于在建立连接后但在执行请求之前设置自定义回调。
    • 添加了 CURLOPT_SERVER_RESPONSE_TIMEOUT,它以前称为 CURLOPT_FTP_RESPONSE_TIMEOUT。
    • CURLOPT_DNS_USE_GLOBAL_CACHE 选项现在被静默忽略。
    • 添加了 CURLOPT_DEBUGFUNCTION 作为 Curl 选项。
    • 修复错误 GH-16359(在没有空回调的情况下使用 curl_setopt* CURLOPT_WRITEFUNCTION 崩溃)。
    • 修复错误 GH-16723(CURLMOPT_PUSHFUNCTION 问题)。
  • 日期
    • 添加 DateTime[Immutable]::createFromTimestamp。
    • 添加 DateTime[Immutable]::[get|set]Microsecond。
    • 常量 SUNFUNCS_RET_TIMESTAMP、SUNFUNCS_RET_STRING 和 SUNFUNCS_RET_DOUBLE 现已弃用。
    • 修复错误 GH-13773(DatePeriod 未考虑结束日期的微秒)。
  • DBA
    • 将 null 或 false 传递给 dba_key_split() 已弃用。
  • 调试
    • 修复错误 GH-15923(GDB:Python 异常 <class 'TypeError'>:异常必须派生自 BaseException)。
  • DOM
    • 添加 DOMNode::compareDocumentPosition()。
    • 实现 #53655(提高 DOMNode::C14N() 在大型 XML 文档上的速度)。
    • 修复克隆具有命名空间的属性导致命名空间消失。
    • 实现 DOM HTML5 解析和序列化 RFC。
    • 修复 DOMElement->prefix 使用空字符串创建虚假前缀。
    • 更一致地处理 OOM。
    • 实现“改进 ext/dom 和 ext/xsl 中的回调”RFC。
    • 添加 DOMXPath::quote() 静态方法。
    • 实现 opt-in ext/dom 规范合规性 RFC。
    • 修复错误 #79701(getElementById 在重复定义时不能正常工作)。
    • 实现“PHP 8.4 中新的 ext-dom 特性”RFC。
    • 修复 GH-14698(DOM 节点取消引用时的段错误)。
    • 改进对模板元素的支持。
    • 修复 xpath 可调用对象中的弹跳板泄漏。
    • 在 (DOM)ParentNode 和 (DOM)ChildNode 中创建过长的文本节点时抛出异常,而不是静默失败。
    • 修复错误 GH-15192(dom 扩展(html5_serializer)中的段错误)。
    • 弃用 DOM_PHP_ERR 常量。
    • 删除 DOMImplementation::getFeature()。

    • 修复了错误 GH-15331(Element::$substitutedNodeValue 测试失败)。
    • 修复了错误 GH-15570(ext/dom/html5_serializer.c 中出现段错误(访问空指针))。
    • 修复了错误 GH-13988(在 PHP 8.1 中存储 DOMElement 消耗的内存是 PHP 8.0 的 4 倍)。
    • 修复 XML 序列化错误:应允许 xmlns="" 序列化。
    • 修复了错误 GH-15910(ext/dom/element.c 中出现断言失败)。
    • 修复取消设置 DOM 属性的问题。
    • 修复了错误 GH-16190(使用反射调用 Dom\Node::__construct 会导致断言失败)。
    • 修复 DOM 解析解码中的边缘情况。
    • 修复了错误 GH-16465(DOMNode->getElementByTagName 中出现堆缓冲区溢出)。
    • 修复了错误 GH-16594(DOM->before 中出现断言失败)。
  • Fileinfo
    • 更新到 libmagic 5.45。
    • 修复了错误 #65106(PHP 无法编译 ext/fileinfo)。
  • FPM
    • 实现了 GH-12385(在调用 flush() 时刷新标头而不刷新主体)。
    • 将 DragonFlyBSD 系统添加到设置 FPM_BACKLOG_DEFAULT 为 SOMAXCONN 的系统列表中。
    • 已停用 Solaris/Illumos 设置的 /dev/poll 事件机制。
    • 在记分板/状态页面中添加了内存峰值。
  • FTP
    • 删除了已弃用的 inet_ntoa 调用支持。
    • 修复了错误 #63937(使用 PHP 上传速度降低了 10 倍)。
  • GD
    • 修复 imagecolorset() 的参数数量和缺少的 alpha 检查。
    • imagepng/imagejpeg/imagewep/imageavif 现在在质量参数无效时抛出异常。
    • 检查 imagescale/imagefilter 的溢出/下溢。
    • 将 gdImageClone 添加到捆绑的 libgd 中。
  • Gettext
    • bind_textdomain_codeset、textdomain 和 d(*)gettext 函数现在在域为空时抛出异常。
  • GMP
    • GMP 类现在是 final 的,不能再扩展了。
    • RFC:更改 GMP 布尔转换行为。
  • Hash
    • 将 hash_update() 的返回类型更改为 true。
    • 添加了 HashContext::__debugInfo()。
    • 弃用向 ext/hash 函数传递不正确的选项数据类型。
    • 添加了 SHA-256 的 SSE2 和 SHA-NI 实现。
    • 修复 GH-15384(在 Alpine/Musl 上为 amd64 构建失败)。
    • 修复了错误 GH-15742(php_hash_sha.h 与 C++ 不兼容)。
  • IMAP
    • 迁移到 PECL。
  • Intl
    • 添加了 IntlDateFormatter::PATTERN 常量。
    • 修复了区域设置无效时 Numberformatter::__construct 的问题,现在会抛出异常。
    • 添加了 NumberFormatter::ROUND_TOWARD_ZERO 和 ::ROUND_AWAY_FROM_ZERO 作为 ::ROUND_DOWN 和 ::ROUND_UP 的别名。
    • 添加了 NumberFormatter::ROUND_HALFODD。
    • 添加了 PROPERTY_IDS_UNARY_OPERATOR、PROPERTY_ID_COMPAT_MATH_START 和 PROPERTY_ID_COMPAT_MATH_CONTINUE 常量。
    • 添加了 IntlDateFormatter::getIanaID/intltz_get_iana_id 方法/函数。
    • 对于 icu 74 及更高版本,设置为 C++17 标准。
    • resourcebundle_get()、ResourceBundle::get() 和访问 ResourceBundle 对象上的偏移量现在会抛出:- TypeError 用于无效的偏移量类型- ValueError 用于空字符串- ValueError 如果整数索引不适合有符号 32 位整数
    • ResourceBundle::get() 现在具有 ResourceBundle|array|string|int|null 的暂定返回类型。
    • 添加了新的 Grapheme 函数 grapheme_str_split。
    • 添加了 IntlDateFormatter::parseToCalendar。
    • 添加了 SpoofChecker::setAllowedChars 以设置 Unicode 字符范围。
  • LDAP
    • 添加了 LDAP_OPT_X_TLS_PROTOCOL_MAX/LDAP_OPT_X_TLS_PROTOCOL_TLS1_3 常量。
  • LibXML
    • 添加了 LIBXML_RECOVER 常量。
    • libxml_set_streams_context() 现在会在上下文无效时立即抛出异常,而不是在使用位置抛出。
    • 添加了 LIBXML_NO_XXE 常量。
  • MBString
    • 添加了 mb_trim、mb_ltrim 和 mb_rtrim。
    • 添加了 mb_ucfirst 和 mb_lcfirst。
    • 将 Unicode 数据表更新到 Unicode 15.1。
    • 修复了错误 GH-15824(mb_detect_encoding(): 参数 $encodings 包含无效编码“UTF8”)。
    • 将 Unicode 数据表更新到 Unicode 16.0。
  • Mysqli
    • mysqli_ping() 函数和 mysqli::ping() 方法现已弃用,因为 PHP 8.2 中已删除重新连接功能。
    • mysqli_kill() 函数和 mysqli::kill() 方法现已弃用。如果需要此功能,可以使用 SQL“KILL”命令代替。
    • mysqli_refresh() 函数和 mysqli::refresh() 方法现已弃用。如果需要此功能,可以使用 SQL“FLUSH”命令代替。
    • 显式传递 $mode 参数到 mysqli_store_result() 已弃用。由于 MYSQLI_STORE_RESULT_COPY_DATA 常量仅与此函数结合使用,因此它也已弃用。
  • MySQLnd
    • 修复了错误 GH-13440(PDO 引用瓶颈)。
    • 修复了错误 GH-10599(在 Windows 上使用具有活动 mysqli 连接的类内的自引用匿名函数时,Apache 崩溃)。
  • Opcache
    • 为 FreeBSD 添加了大型共享段支持。
    • 如果启用了 JIT,PHP 现在会在 JIT 启动初始化问题的情况下在启动时以致命错误退出。
    • 在 64 位架构上将 opcache.interned_strings_buffer 的最大值增加到 32767。
    • 修复了错误 GH-13834(在 zend_jit.c 中将非零偏移量 36 应用于空指针)。
    • 修复了错误 GH-14361(zend_cfg.c 中的深度递归导致段错误)。
    • 修复了错误 GH-14873(PHP 8.4 min 函数在类型化整数上失败)。
    • 修复了错误 GH-15490(调用图的构建修改了预加载的符号)。
    • 修复了错误 GH-15178(在挂钩上跟踪 JIT 中的断言)。
    • 修复了错误 GH-15657(dasm_x86.h 中出现段错误)。
    • 添加了 opcache_jit_blacklist() 函数。
    • 修复了错误 GH-16009(无帧函数和未定义 CV 导致段错误)。
    • 修复了错误 GH-16186(Zend/zend_operators.c 中出现断言失败)。
    • 修复了错误 GH-16572(在低触发 JIT 中反射结果不正确)。
    • 修复了 GH-16839(在为 Windows ARM64 构建 Opcache JIT 时出错)。
  • OpenSSL
    • 修复了错误 #80269(OpenSSL 使用 extraattribs 参数设置错误的主题)。
    • 实现了请求 #48520(openssl_csr_new - 允许 DN 中的多个值)。
    • 为 openssl_csr_sign 引入了新的 serial_hex 参数。
    • 添加了 X509_PURPOSE_OCSP_HELPER 和 X509_PURPOSE_TIMESTAMP_SIGN 常量。
    • 将最低所需的 OpenSSL 版本提升到 1.1.1。
    • 添加了编译时选项 --with-openssl-legacy-provider 以启用旧版提供程序。
    • 添加了对基于 Curve25519 + Curve448 的密钥的支持。
    • 修复了错误 GH-13343(openssl_x509_parse 不应允许在 UTCTimes 中省略秒)。
    • 将最低所需的 OpenSSL 版本提升到 1.1.0。
    • 实现了 GH-13514 OpenSSL 3.2 中的 PASSWORD_ARGON2。
  • Output
    • 在处理程序初始化期间清除输出处理程序状态标志。
    • 修复了 url_rewriter.hosts 未被 output_add_rewrite_var() 使用的错误。
  • PCNTL
    • 为 Linux 添加了 pcntl_setns。
    • 添加了 pcntl_getcpuaffinity/pcntl_setcpuaffinity。
    • 更新了 pcntl_get_signal_handler 信号 ID 上限,使其更符合平台限制。
    • 为 Linux/FreeBSD/Solaris/Illumos 添加了 pcntl_getcpu。
    • 为 macOs 添加了 pcntl_getqos_class/pcntl_setqos_class。
    • 为 DragonFlyBSD 添加了 SIGCKPT/SIGCKPTEXIT 常量。
    • 将 FreeBSD 的 SIGTRAP 处理添加到 pcntl_siginfo_to_zval 中。
    • 添加了 POSIX pcntl_waitid。
    • 修复了错误 GH-16769:(pcntl_sigwaitinfo 在信号值作为引用时中止)。
  • PCRE
    • 将捆绑的 pcre2lib 升级到 10.43 版本。
    • 添加 "/r" 修饰符。
    • 将捆绑的 pcre2lib 升级到 10.44 版本。
    • 修复了 GH-16189(偏移量参数下溢)。
    • 修复请求关闭后 PCRE 的 UAF 问题。
  • PDO
    • 修复了 setAttribute 和 getAttribute。
    • 实现了 PDO 驱动程序特定子类 RFC。
    • 添加了对 PDO 驱动程序特定 SQL 解析器的支持。
    • 修复了错误 GH-14792(pdo_* 扩展编译失败)。
    • mysqlnd:支持 ER_CLIENT_INTERACTION_TIMEOUT。
    • 不再安装内部头文件 php_pdo_int.h;PDO 驱动程序不应使用它。
    • 修复了错误 GH-16167(防止将 PDO 子类与不同的 DSN 混合使用)。
    • 修复了错误 GH-16314(打开持久连接时“Pdo\Mysql 对象未初始化”)。
  • PDO_DBLIB
    • 修复了 setAttribute 和 getAttribute。
    • 添加了类 Pdo\DbLib。
  • PDO_Firebird
    • 修复了 setAttribute 和 getAttribute。
    • 功能:将事务隔离级别和模式设置添加到 pdo_firebird。
    • 添加了类 Pdo\Firebird。
    • 添加了 Pdo\Firebird::ATTR_API_VERSION。
    • 添加了 getApiVersion() 并从 getAttribute() 中删除。
    • 支持 Firebird 4.0 数据类型。
    • 支持时区类型的正确格式化。
    • 修复了 GH-15604(始终使输入参数可为空)。
  • PDO_MYSQL
    • 修复了 setAttribute 和 getAttribute。
    • 添加了类 Pdo\Mysql。
    • 添加了自定义 SQL 解析器。
    • 修复了 GH-15949(PDO_MySQL 未正确引用 PDO_PARAM_LOB 二进制数据)。
  • PDO_ODBC
    • 添加了类 Pdo\Odbc。
  • PDO_PGSQL
    • 修复了 GH-12423,DSN 凭据优先于用户/密码 PDO 构造函数参数。
    • 修复了 pdo_pgsql 查询结果的原生浮点数支持。
    • 添加了类 Pdo\Pgsql。
    • 检索查询结果资源的内存使用情况。
    • 添加了 Pdo\Pgsql::setNoticeCallBack 方法以接收数据库通知。
    • 添加了自定义 SQL 解析器。
    • 修复了 GH-15986(由于 Pdo\Pgsql::setNoticeCallback() 导致的双重释放)。
    • 修复了 GH-12940(在可用时使用 PQclosePrepared 而不是 DEALLOCATE 命令来释放语句资源)。
    • 删除 PGSQL_ATTR_RESULT_MEMORY_SIZE 常量,因为它由新的 PDO 子类作为 Pdo\Pgsql::ATTR_RESULT_MEMORY_SIZE 提供。
  • PDO_SQLITE
    • 添加了类 Pdo\Sqlite。
    • 修复了错误 #81227(PDO::inTransaction 在事务中报告 false)。
    • 添加了自定义 SQL 解析器。
  • PHPDBG
    • 处理 Windows 上段错误处理程序的数组越界和堆栈溢出。
    • 修复了错误 GH-16041(在 phpdbg 中支持堆栈限制)。
  • PGSQL
    • 添加了对 pg_select 没有条件的可能性。
    • 持久连接支持 PGSQL_CONNECT_FORCE_RENEW 标志。
    • 添加了 pg_result_memory_size 用于获取查询结果内存使用情况。
    • 添加了 pg_change_password 用于修改用户的密码。
    • 添加了 pg_put_copy_data/pg_put_copy_end 用于发送 COPY 命令并指示 COPY 的结束。
    • 添加了 pg_socket_poll 用于轮询连接。
    • 添加了 pg_jit 用于获取服务器 JIT 支持的信息。
    • 添加了 pg_set_chunked_rows_size 用于按块获取结果。
    • pg_convert/pg_insert/pg_update/pg_delete;正则表达式现在被缓存。
  • Phar
    • 修复了 bug GH-12532(从 zip 创建的 PharData 时间戳不正确)。
  • POSIX
    • 添加了 POSIX_SC_CHILD_MAX 和 POSIX_SC_CLK_TCK 常量。
    • 更新了 posix_isatty 以在文件描述符上设置错误号。
  • PSpell
    • 迁移到 PECL。
  • Random
    • 修复了 bug GH-15094(php_random_default_engine() 不符合 C++ 标准)。
    • lcg_value() 现已弃用。
  • Readline
    • 修复了 readline_info、rl_line_buffer_length/rl_len 全局变量在更新时的行为。
    • 修复了 bug #51558(共享 readline 构建失败)。
    • 修复了 readline_info() 的 UAF 问题。
  • Reflection
    • 实现了 GH-12908(在 ReflectionAttribute 转储中显示属性名称/类)。
    • 使 ReflectionGenerator::getFunction() 在生成器终止后合法。
    • 添加了 ReflectionGenerator::isClosed()。
    • 修复了 bug GH-15718(在动态属性上调用 ReflectionProperty::get{Hook,Hooks}() 时发生段错误)。
    • 修复了 bug GH-15694(对于挂钩属性,ReflectionProperty::isInitialized() 不正确)。
    • 添加了缺少的 ReflectionProperty::hasHook[s]() 方法。
    • 添加了缺少的 ReflectionProperty::isFinal() 方法。
    • 修复了 bug GH-16122(对于闭包,ReflectionFunction::getNamespaceName() 和 ReflectionFunction::inNamespace() 的返回值不正确)。
    • 修复了 bug GH-16162(缺少 ReflectionProperty::IS_VIRTUAL)(DanielEScherzer)
    • 修复了 ReflectionClass::resetAsLazyGhost() 的第二个参数的名称。
  • Session
    • INI 设置 session.sid_length 和 session.sid_bits_per_character 现已弃用。
    • 对于 session.gc_divisor 的非正值和 session.gc_probability 的负值发出警告。
    • 修复了 bug GH-16590(session_encode() 中的 UAF)。
  • SimpleXML
    • 修复了 simplexml_import_dom() 的签名。
  • SNMP
    • 删除了已弃用的 inet_ntoa 调用支持。
  • SOAP
    • 添加了对类映射中命名空间的 clark 表示法的支持。
    • 缓解了 #51561(使用扩展类和会话的 SoapServer 丢失了 setPersistence())。
    • 修复了 bug #49278(如果 wsdl 操作没有输出,SoapClient::__getLastResponseHeaders 返回 NULL)。
    • 修复了 bug #44383(PHP DateTime 未转换为 xsd:datetime)。
    • 修复了 bug GH-11941(当“session”构建为共享对象时,带会话持久性的 soap 会静默失败)。
    • 将 int 传递给 SoapServer::addFunction() 现已弃用。如果需要提供所有 PHP 函数,请展平 get_defined_functions() 返回的数组。
    • SOAP_FUNCTIONS_ALL 常量现已弃用。
    • 修复了 bug #61525(SOAP 函数需要在 HTTP 标头冒号后至少有一个空格)。
    • 实现了请求 #47317(SoapServer::__getLastResponse())。
  • Sockets
    • 删除了已弃用的 inet_ntoa 调用支持。
    • 添加了 SO_EXECLUSIVEADDRUSE windows 常量。
    • 添加了 SOCK_CONN_DGRAM/SOCK_DCCP netbsd 常量。
    • 添加了 FreeBSD 上 ipv4 的多播组支持。
    • 添加了 Linux 的 TCP_SYNCNT 常量,用于设置客户端发送 SYN 数据包的尝试次数。
    • 添加了 illumos/solaris 上的 SO_EXCLBIND 常量,用于独占套接字绑定。
    • 将 socket_create_listen backlog 参数的默认值更新为 SOMAXCONN。
    • 添加了 SO_NOSIGPIPE 常量,用于控制 macOS 和 FreeBSD 上 SIGPIPE 的生成。
    • 添加了 macOS 的 SO_LINGER_SEC,与其他平台上的 SO_LINGER 等效。
    • 在 unix 上使用 socket_accept 创建的套接字上添加 close-on-exec。
    • 添加了 BSD 系统的 IP_PORTRANGE* 常量,用于控制短暂端口范围。
    • 添加了 socket_create 和 socket_create_pair 的 SOCK_NONBLOCK/SOCK_CLOEXEC 常量,以将 O_NONBLOCK/O_CLOEXEC 标志应用于新创建的套接字。
    • 添加了 SO_BINDTOIFINDEX 用于将套接字绑定到接口索引。
  • Sodium
    • 添加了对 AEGIS-128L 和 AEGIS-256 的支持。
    • 使用 ARM 加密扩展在 aarch64 上启用 AES-GCM。
  • SPL
    • 为 SplObjectStorage 实现了 SeekableIterator。
    • SplFixedArray::__wakeup() 方法已弃用,因为它实现了 __serialize() 和 __unserialize(),需要覆盖它们。
    • 以下函数的 $escape 参数传递非空字符串现已弃用: - SplFileObject::setCsvControl() - SplFileObject::fputcsv() - SplFileObject::fgetcsv()
  • Standard
    • 实现了 GH-12188(在 phpinfo() 中指示 int 大小)。
    • 部分修复了 GH-12143(0.49999999999999994 的 round() 结果不正确)。
    • 修复了 GH-12252(round():验证舍入模式)。
    • 将默认的 BCrypt 成本增加到 12。
    • 修复了 bug GH-12592(strcspn() 在使用空字节和空掩码时的奇怪行为)。
    • 删除了已弃用的 inet_ntoa 调用支持。
    • 在 number_format 中将范围在 int 内的大浮点数转换为 int,以便不会丢失精度。
    • 添加了对 round() 函数 4 种新的舍入模式的支持。
    • debug_zval_dump() 现在指示数组是否已打包。
    • 修复了 GH-12143(优化 round)。
    • 将 long2ip 的返回类型从 string|false 更改为 string。
    • 修复了 GH-12143(将 round 可以处理的最大精度扩展一位)。
    • 添加了 http_get_last_response_headers() 和 http_clear_last_response_headers(),允许检索与魔术变量 $http_response_header 相同的内容。
    • 添加了 php_base64_encode_ex() API。
    • 实现了“将零提升到负数的幂”RFC。
    • 添加了 array_find()、array_find_key()、array_all() 和 array_any()。
    • 将 highlight_string() 和 print_r() 的返回类型更改为 string|true。
    • 修复了 request_parse_body() 选项数组中的引用。
    • 添加了 RoundingMode 枚举。
    • 反序列化大写“S”标签现已弃用。
    • 在 OpenBSD 上启用 crc32 辅助检测。
    • 以下函数的 $escape 参数传递非空字符串现已弃用: - fputcsv() - fgetcsv() - str_getcsv()
    • 当 $separator 和 $enclosure 参数不是一个字节长,或者 $escape 不是一个字节长或空字符串时,str_getcsv() 函数现在会抛出 ValueError。这使行为与 fputcsv() 和 fgetcsv() 相同。
    • php_uname() 现在在无效输入时抛出 ValueError。
    • 如果 unserialize() 的“allowed_classes”选项不是类名称数组,则现在会抛出 TypeError 和 ValueError。
    • 实现了 GH-15685(改进 Windows 上 proc_open 的错误报告)。
    • 添加了对 http_build_query() 中的后备枚举的支持。
    • 修复了 bug GH-15982(当涉及引用时,array_find 出现断言失败)。
    • 修复了 fpow() 的参数名称,使其与 pow() 相同。
  • Streams
    • 实现了 GH-15155(当自定义流包装器被过滤时,流上下文会丢失)。
  • Tidy
    • 构造函数中的失败现在抛出异常,而不是发出警告并导致对象损坏。
    • 添加了 tidyNode::getNextSibling() 和 tidyNode::getPreviousSibling()。
  • Windows
    • 更新了 Windows 可执行文件的图标,例如 php.exe。
    • 修复了 bug GH-16199(GREP_HEADER() 已损坏)。
  • XML
    • 添加了 XML_OPTION_PARSE_HUGE 解析器选项。
    • 修复了 bug #81481(在 64 位构建上,xml_get_current_byte_index 限制为 32 位数字)。
    • xml_set_object() 函数已弃用。
    • 将不可调用的字符串传递给 xml_set_*_handler() 函数现已弃用。
  • XMLReader
    • 声明类常量类型。
    • 添加了 XMLReader::fromStream()、XMLReader::fromUri()、XMLReader::fromString()。
    • 修复了 bug GH-15123(var_dump 实际上不适用于 XMLReader)。
  • XMLWriter
    • 添加了 XMLWriter::toStream()、XMLWriter::toUri()、XMLWriter::toMemory()。
  • XSL
    • 实现了请求 #64137(XSLTProcessor::setParameter() 应该允许使用两种引号)。
    • 实现“改进 ext/dom 和 ext/xsl 中的回调”RFC。
    • 添加了 XSLTProcessor::$maxTemplateDepth 和 XSLTProcessor::$maxTemplateVars。
    • 修复 xpath 可调用对象中的弹跳板泄漏。
  • Zip
    • 添加了 libzip 1.11 中添加的 ZipArchive::ER_TRUNCATED_ZIP。

版本 8.3.14

  • CLI
    • 修复了 bug GH-16373(通过 shebang 启动的 cli-server 中,不会跳过路由脚本的 shebang)。
    • 修复了 bug GHSA-4w77-75f9-2c8w(CLI SAPI 接口中 sapi_read_post_data 处理中的 Use-After-Free)。
  • COM
    • 修复了对 SafeArray 数据的越界写入。
  • 核心
    • 修复了 bug GH-16168(使用 macOS 15 上 Xcode 16 clang 编译时,php 8.1 及更早版本立即崩溃)。
    • 修复了 bug GH-16371(Zend/zend_weakrefs.c:646 中的断言失败)。
    • 修复了 bug GH-16515(对于调用 trampoline,ZEND_ACC_RETURN_REFERENCE 的传播不正确)。
    • 修复了 bug GH-16509(函数重新声明错误中的行号不正确)。
    • 修复了 bug GH-16508(延迟早期绑定类的继承错误中的行号不正确)。
    • 修复了 bug GH-16648(数组排序期间出现 Use-after-free)。
  • Curl
    • 修复了 bug GH-16302(如果 curl_multi_add_handle 失败,CurlMultiHandle 会持有对 CurlHandle 的引用)。
  • 日期
    • 修复了 bug GH-16454(date_sunset() 在使用很小的 $utcOffset 时出现未处理的 INF)。
    • 修复了 bug GH-14732(date_sun_info() 对于非有限值失败)。
  • DBA
    • 修复了 bug GH-16390(dba_open() 对于“无路径”流可能导致段错误)。
  • DOM
    • 修复了 bug GH-16316(DOMXPath 在未正确初始化时会中断)。
    • 添加了缺少的层次结构检查以替换 replaceChild。
    • 修复了 bug GH-16336(属性内部文档管理不善)。
    • 修复了 bug GH-16338(ext/dom/node.c 中的空指针解除引用)。
    • 修复了 bug GH-16473(dom_import_simplexml 存根不正确)。
    • 修复了 bug GH-16533(向不是元素的父级添加属性时发生段错误)。
    • 修复了 bug GH-16535(使用文档作为子级时的 UAF)。
    • 修复了 bug GH-16593(DOM->replaceChild 中的断言失败)。
    • 修复了 bug GH-16595(DOM -> cloneNode 中的另一个 UAF)。
  • EXIF
    • 修复了 bug GH-16409(当不处理真实文件时,exif_thumbnail 发生段错误)。
  • FFI
    • 修复了 bug GH-16397(比较 FFI 对象时发生段错误)。
  • Filter
    • 修复了 bug GH-16523(FILTER_FLAG_HOSTNAME 接受结尾的连字符)。
  • FPM
    • 修复了 bug GH-16628(FPM 日志由于此日志语句而损坏)。
  • GD
    • 修复了 bug GH-16334(imageaffine 在矩阵元素上溢出)。
    • 修复了 bug GH-16427(未检查 libavif 返回值)。
    • 修复了 bug GH-16559(ext/gd/libgd/gd_interpolation.c:1007 中的 UBSan 中断)。
  • GMP
    • 修复了使用大型指数值时 gmp_pow 出现的浮点异常错误。(David Carlier)。
    • 修复了 bug GH-16411(gmp_export() 可能会导致溢出)。
    • 修复了 bug GH-16501(gmp_random_bits() 可能会导致溢出)。
    • 修复了 gmp_pow() 在使用大型底数/指数时的溢出错误。
    • 修复了与 GMP 对象运算符重载相关的段错误和其他问题。
  • LDAP
  • MBstring
    • 修复了 bug GH-16361(mb_substr 在 start/length 参数上溢出)。
  • MySQLnd
    • 修复了 bug GHSA-h35g-vwh6-m678(通过堆缓冲区过读泄漏堆的部分内容)。(CVE-2024-8929)
  • Opcache
    • 修复了 bug GH-16408(优化器中发出的数组到字符串转换警告)。
  • OpenSSL
    • 修复了 bug GH-16357(openssl 可能会修改证书数组的成员类型)。

    • 修复了 bug GH-16433(openssl_csr_sign() 函数中 $days 参数的大值溢出)。
    • 修复了 openssl_x509_parse() 函数在错误条件下出现的多个内存泄漏。
  • PDO DBLIB
    • 修复了 bug GHSA-5hqh-c84r-qjcv(dblib 引号器中的整数溢出导致越界写入)。(CVE-2024-11236)
  • PDO Firebird
    • 修复了 bug GHSA-5hqh-c84r-qjcv(firebird 引号器中的整数溢出导致越界写入)。(CVE-2024-11236)
  • PDO ODBC
    • 修复了 bug GH-16450(PDO_ODBC 可能会将垃圾数据注入字段值)。
  • Phar
    • 修复了 bug GH-16406(ext/phar/phar.c:2808 中的断言失败)。
  • PHPDBG
    • 修复了 bug GH-16174(空字符串是 ev 的无效表达式)。
  • Reflection
    • 修复了 bug GH-16601(Reflection 构造函数中的内存泄漏)。
  • Session
    • 修复了 bug GH-16385(session_set_cookie_params 返回意外的 null)。
    • 修复了 bug GH-16290(cookie_lifetime ini 值溢出)。
  • SOAP
    • 修复了 bug GH-16318(递归数组导致 soap 编码段错误)。
    • 修复了 bug GH-16429(SoapClient 中访问空指针导致段错误)。
  • Sockets
    • 修复了 socket_recvfrom 函数中 $length 参数溢出的 bug。
  • SPL
    • 修复了 bug GH-16337(SplHeap 中的释放后使用)。
    • 修复了 bug GH-16464(SplDoublyLinkedList::offsetSet() 中的释放后使用)。
    • 修复了 bug GH-16479(SplObjectStorage::setInfo() 中的释放后使用)。
    • 修复了 bug GH-16478(SplFixedArray::unset() 中的释放后使用)。
    • 修复了 bug GH-16588(Observer->serialize 中的释放后使用)。
    • 修复了 GH-16477(在 SplFileObject::__constructor 失败后调用 __debugInfo() 导致段错误)。
    • 修复了 bug GH-16589(SplDoublyLinked->serialize() 中的释放后使用)。
    • 修复了 bug GH-14687(在 SplObjectIterator 实例上发生段错误)。
    • 修复了 bug GH-16604(SPL 构造函数中的内存泄漏)。
    • 修复了 bug GH-16646(ArrayObject::unset() 和 ArrayObject::exchangeArray() 中的释放后使用)。
  • Standard
    • 修复了 bug GH-16293(在启用 bail 的情况下,在 assert() 回调中抛出异常时断言失败)。
  • Streams
    • 修复了 bug GHSA-c5f2-jwm7-mmq2(在流上下文中配置代理可能允许在 URI 中进行 CRLF 注入)。(CVE-2024-11234)
    • 修复了 bug GHSA-r977-prxv-hc43(使用 convert.quoted-printable-decode 过滤器时发生单字节过读)。(CVE-2024-11233)
  • SysVMsg
    • 修复了 bug GH-16592(当类型未正确序列化时,msg_send() 崩溃)。
  • SysVShm
    • 修复了 bug GH-16591(shm_put_var 中的断言错误)。
  • XMLReader
    • 修复了 bug GH-16292(ext/xmlreader/php_xmlreader.c 中的段错误)。
  • Zlib
    • 修复了 bug GH-16326(对于错误的字典,内存管理已损坏)。(cmb)

版本 8.3.13

  • 日历
    • 修复了 GH-16240:jdtounix 函数在参数值上溢出。
    • 修复了 GH-16241:easter_days/easter_date 函数在年份参数上溢出。
    • 修复了 GH-16263:jddayofweek 函数溢出。
    • 修复了 GH-16234:jewishtojd 函数溢出。
  • CLI
    • 修复了 bug GH-16137:客户端多次设置时出现重复的 http 头。
  • 核心
    • 修复了 bug GH-16054(在添加时调整哈希表迭代器列表大小时发生段错误)。
    • 修复了 bug GH-15905(TRACK_VARS_SERVER 的断言失败)。
    • 修复了 bug GH-15907(将 Serialize 弃用提升为异常时断言失败)。
    • 修复了 bug GH-15851(在嵌套生成器帧清理期间打印回溯时发生段错误)。
    • 修复了 bug GH-15866(Zend/zend_generators.c 中核心转储)。
    • 修复了 bug GH-16188(Zend/zend_exceptions.c 中的断言失败)。
    • 修复了 bug GH-16233(通过蹦床在内部函数中调用用户函数时,Observer 发生段错误)。
  • DOM
    • 修复了 bug GH-16039(ext/dom/parentnode/tree.c 中的段错误(访问空指针))。
    • 修复了 bug GH-16149(DOMElement->getAttributeNames() 中的空指针解除引用)。
    • 修复了 bug GH-16151(ext/dom/parentnode/tree.c 中的断言失败)。
    • 修复了 bug GH-16150(php_dom.c 中的释放后使用)。
    • 修复了 bug GH-16152(DOMProcessingInstruction/DOMDocument 中的内存泄漏)。
  • JSON
    • 修复了 bug GH-15168(json_encode() 中的堆栈溢出)。
  • GD
    • 修复了 bug GH-16232(wbmp 文件内容读取时的位移溢出/修复来自上游的回退)。
    • 修复了 bug GH-12264(imagerotate 函数 degrees 参数的溢出/下溢)。(David Carlier)
    • 修复了 bug GH-16274(imagescale 函数在 RBG 通道上的下溢/修复来自上游的回退)。
  • LDAP
    • 修复了 bug GH-16032(ldap_modify_batch() 中的各种空指针解除引用)。
    • 修复了 bug GH-16101(当 LDAPs 数组不是列表时,ldap_list()、ldap_read() 和 ldap_search() 函数发生段错误)。
    • 修复了 GH-16132(php_ldap_do_modify() 尝试释放未由 ZMM 分配的指针)。
    • 修复了 GH-16136(当条目不是正确的字典时,php_ldap_do_modify() 中的内存泄漏)。
  • MBString
    • 修复了 bug GH-16261(mb_convert_variables() 中的引用不变性被破坏)。
  • OpenSSL
    • 修复了 openssl_csr_new 函数的存根。
  • PCRE
    • 修复了 bug GH-16189(偏移量参数下溢)。
    • 修复了 bug GH-16184(ext/pcre/php_pcre.c 中的 UBSan 地址溢出)。
  • PHPDBG
    • 修复了 bug GH-15901(phpdbg:在 i 函数上断言失败)。
    • 修复了 bug GH-16181(phpdbg:异常处理程序中的退出报告致命错误)。
  • Reflection
    • 修复了 bug GH-16187(ext/reflection/php_reflection.c 中的断言失败)。
  • SAPI
    • 修复了 bug GH-15395(php-fpm:使用 cgi-fcgi 请求时 zend_mm_heap 损坏)。
  • SimpleXML
    • 修复了 bug GH-15837(ext/simplexml/simplexml.c 中的段错误)。
  • Sockets
    • 修复了 bug GH-16267(socket_strerror 函数在 errno 参数上溢出)。
  • SOAP
    • 修复了 bug #73182(PHP SOAPClient 不支持以数组形式表示的流上下文 HTTP 头)。
    • 修复了 bug #62900(xsd 导入错误消息的命名空间错误)。
    • 修复了 bug GH-15711(SoapClient 无法将 BackedEnum 转换为标量值)。
    • 修复了 bug GH-16237(克隆 SoapServer 时发生段错误)。
    • 修复了 Soap 在错误时泄漏 http_msg 的问题。
    • 修复了 bug GH-16256(ext/soap/php_encoding.c:460 中的断言失败)。
    • 修复了 bug GH-16259(当类映射实例化失败时,Soap 发生段错误)。
  • SPL
    • 修复了 bug GH-15918(ext/spl/spl_fixedarray.c 中的断言失败)。
  • Standard
    • 修复了 bug GH-16053(Zend/zend_hash.c 中的断言失败)。
    • 修复了 bug GH-15169(ext/standard/var 中变量序列化时的堆栈溢出)。
  • Streams
    • 修复了 bug GH-15908GH-15026(streams.c 中的泄漏/断言失败)。
    • 修复了 bug GH-15980(main/streams/streams.c 中的有符号整数溢出)。
  • TSRM
    • 防止关闭无关的句柄。
  • Windows
    • 修复了 Windows 的最低版本。

版本 8.3.12

  • CGI
    • 修复了 bug GHSA-p99j-rfp4-xqvq(绕过 CVE-2024-4577,参数注入漏洞)。(CVE-2024-8926)
    • 修复了 bug GHSA-94p6-54jq-9mwp(由于环境变量冲突,cgi.force_redirect 配置可被绕过)。(CVE-2024-8927)
  • 核心
    • 修复了 bug GH-15408(MSan 在 zend_max_execution_timer 上的误报)。
    • 修复了 bug GH-15515(配置错误 grep 非法选项 q)。
    • 修复了 bug GH-15514(配置错误:genif.sh:语法错误)。
    • 修复了 bug GH-15565(编译期间使用 --disable-ipv6 会产生错误 EAI_SYSTEM 未找到)。
    • 修复了 bug GH-15587(arm 32 位上的 CRC32 API 构建错误)。
    • 修复了 bug GH-15330(不要扫描生成器帧超过一次)。
    • 修复了内部枚举的常量 AST 中未初始化的 lineno。
  • Curl
    • 修复了 bug GH-15547(curl_multi_select 函数在 timeout 参数上溢出)。
  • DOM
    • 修复了 bug GH-15551(ext/dom/xml_common.h 中的段错误(访问空指针))。
    • 修复了 bug GH-15654(ext/dom/nodelist.c 中的有符号整数溢出)。
  • Fileinfo
    • 修复了 bug GH-15752(对于空文件名参数,finfo_file 函数的错误消息不正确)。
  • FPM
  • MySQLnd
    • 修复了 bug GH-15432(查询向量时堆损坏)。
  • Opcache
    • 修复了 bug GH-15661(Zend/Optimizer/zend_inference.c 中访问空指针)。
    • 修复了 bug GH-15658(Zend/zend_vm_execute.h 中的段错误)。
  • SAPI
    • 修复了 bug GHSA-9pqp-7h25-4f32(多部分表单数据的错误解析)。(CVE-2024-8925)
  • Standard
    • 修复了 bug GH-15552(ext/standard/scanf.c 中的有符号整数溢出)。
  • Streams
    • 修复了 bug GH-15628(php_stream_memory_get_buffer() 未以零结尾)。

版本 8.3.11

  • 核心
    • 修复了 bug GH-15020(Zend/Optimizer/escape_analysis.c 中的内存泄漏)。

    • 修复了错误 GH-15023(Zend/zend_ini.c 中的内存泄漏)。
    • 修复了错误 GH-13330(有条件地追加 -Wno-implicit-fallthrough 标志)。
    • 修复了 network.c 中的未初始化内存问题。
    • 修复了错误 GH-15108(在关闭期间销毁生成器时发生段错误)。
    • 修复了错误 GH-15275(在挂起的生成器委托的 GC 期间崩溃)。
  • Curl
    • 修复了 curl_error 返回空字符串的情况。
  • DOM
    • 修复了在移除文档类型并使用 foreach 迭代时出现的 UAF 问题。
  • FFI
    • 修复了错误 GH-14286(ffi 枚举类型(当枚举没有名称时)导致内存泄漏)。
  • Hash
    • 修复了在 xxh3 中为 shm 中的数组转换数组数据时发生的崩溃问题。
  • Intl
    • 修复了错误 GH-15087(IntlChar::foldCase() 的 $option 不是可选的)。
  • Opcache
    • 修复了错误 GH-13817(第 4 步之后启用观察者时发生段错误)。
    • 修复了错误 GH-13775(可能与 opcache SHM 布局相关的内存泄漏)。
  • Output
    • 修复了错误 GH-15179(ext/standard/url_scanner_ex.re 中的段错误(空指针取消引用))。
  • PDO_Firebird
    • 修复了 firebird_handle_get_attribute() 中错误的贯穿路径。
  • PHPDBG
    • 修复了错误 GH-13199(在使用 libedit/readline 的 phpdbg 本地控制台模式下,EOF 发出冗余提示)。
    • 修复了错误 GH-15268(phpdbg 中的堆缓冲区溢出(zend_hash_num_elements() Zend/zend_hash.h))。
    • 修复了错误 GH-15210 监视点分配上的使用后释放问题。
  • Soap
    • 修复了错误 #55639(摘要身份验证不起作用)。
    • 修复了 SoapFault 属性销毁问题。
    • 修复了错误 GH-15252(在使用 classmap 构造函数选项时,PHP 8.3.9 之后的 SOAP XML 损坏)。
  • Standard
    • 修复了在流函数中传递非有限超时值的问题。
    • 修复了 GH-14780 p(f)sockopen 超时溢出问题。
  • Streams
    • 修复了错误 GH-15028(ext/phar/stream.c 中的内存泄漏)。
    • 修复了错误 GH-15034(对于大于 2GB 的文件,stream_notification_callback byte_max 参数出现整数溢出)。
    • 回退了 GH-14930 的修复(自定义流包装器 dir_readdir 输出截断为 255 个字符)。
  • Tidy
    • 修复了 ext/tidy 基目录限制代码中的内存泄漏。

版本 8.3.10

  • 核心
    • 修复了错误 GH-13922(修复了对 sysconf(_SC_GETPW_R_SIZE_MAX) == -1 的系统的支持)。
    • 修复了错误 GH-14626(修复了大型块的 is_zend_ptr())。
    • 修复了错误 GH-14590(FPM 测试 gh13563-conf-bool-env.phpt 中的内存泄漏)。
    • 修复了 OSS-Fuzz #69765。
    • 修复了错误 GH-14741(Zend/zend_types.h 中的段错误)。
    • 修复了错误 GH-14969(使用 __toString() 进行属性强制转换时的使用后释放)。
  • Dom
    • 修复了错误 GH-14702(DOMDocument::xinclude() 崩溃)。
  • Fileinfo
    • 修复了错误 GH-14888(README.REDIST.BINS 引用了不存在的许可证)。
  • Gd
    • ext/gd/tests/gh10614.phpt:如果未提供 PNG 支持,则跳过。
    • 恢复了警告而不是致命错误。
  • LibXML
    • 修复了错误 GH-14563(使用 libxml2 v2.13.0 构建失败)。
  • Opcache
    • 修复了错误 GH-14550(启用 Zend DTrace 时,没有关于 opcache.jit 被隐式禁用的警告消息)。
  • Output
    • 修复了错误 GH-14808(使用空输出缓冲区时,Zend/zend_string.h 中出现意外的空指针)。
  • PDO
    • 修复了错误 GH-14712(使用 PDORow 访问空属性时崩溃)。
  • Phar
    • 修复了错误 GH-14603(zip 条目中的空字符串)。
  • PHPDBG
    • 修复了错误 GH-14596(使用 ASAN 和 ZEND_RC_DEBUG=1 时崩溃)。
    • 修复了错误 GH-14553(echo 输出在空字节处被截断)。
  • Shmop
    • 修复了错误 GH-14537(shmop Windows 11 使进程崩溃)。
  • SPL
    • 修复了错误 GH-14639(ext/spl/spl_observer.c 中空指针内的成员访问)。
  • Standard
    • 修复了错误 GH-14775(使用负步长参数时,range 函数溢出)。
    • 修复了 32 位 wordwrap 测试失败问题。
    • 修复了错误 GH-14774(time_sleep_until 溢出)。
  • Streams
    • 修复了错误 GH-14930(在 PHP 8.3 中,自定义流包装器 dir_readdir 输出截断为 255 个字符)。
  • Tidy
    • 修复了 tidy_repair_file() 中的内存泄漏。
  • 全项目
    • 修复了与 libxml2 2.13.2 的兼容性。
  • XML
    • 迁移远离即将弃用的 libxml 字段。
    • 修复了错误 GH-14834(使用 --with-pear 安装 PHP 时出错)。

版本 8.3.9

  • 核心
    • 修复了错误 GH-14315(不兼容的指针类型警告)。
    • 修复了错误 GH-12814(在 Apple Silicon 上运行时,MacOS 14 上过早达到 max_execution_time)。
    • 修复了错误 GH-14387(在 Generator->throw() 期间,在生成的值的析构函数中进行堆栈回溯时崩溃)。
    • 修复了错误 GH-14456(尝试使用私有构造函数初始化类会调用析构函数)。
    • 修复了错误 GH-14510(由于缺少 pthread_attr_destroy() 调用导致的内存泄漏)。
    • 修复了错误 GH-14549(fclose 的不兼容函数指针类型)。
  • BCMatch
    • 修复了错误(bcpowmod() 当 mod = -1 时返回 1,而应该返回 0)。
  • Curl
    • 修复了错误 GH-14307(使用 curl 8.8.0 时,测试 curl_basic_024 失败)。
  • DOM
    • 修复了错误 GH-14343(xml 和 dom 中的内存泄漏)。
  • FPM
    • 修复了错误 GH-14037(PHP-FPM ping.path 和 ping.response 配置变量在状态池中被忽略)。
  • GD
    • 修复了 imagecolorset() 的参数数量。
  • Intl
    • 修复了 SpoofChecker 中的引用处理。
  • MySQLnd
    • 部分修复了错误 GH-10599(在类中使用自引用匿名函数以及活动的 mysqli 连接时,Apache 在 Windows 上崩溃)。
  • Opcache
    • 修复了错误 GH-14267(opcache.jit=off 不允许在运行时启用 JIT)。
    • 修复了 FreeBSD/amd64 上 JIT 中的 TLS 访问问题。
    • 修复了错误 GH-11188(在 ARM64 中构建 TSRM 时出错)。
  • PDO ODBC
    • 修复了错误 GH-14367(SDWORD 类型与 iODBC 不兼容)。
  • PHPDBG
    • 修复了错误 GH-13681(在监视点添加失败时发生段错误)。
  • Soap
    • 修复了错误 #47925(PHPClient 无法解压缩响应)。
    • 修复了缺少的错误恢复代码。
    • 修复了如果两次调用 SoapServer::setObject() 则出现的内存泄漏。
    • 修复了如果两次调用 SoapServer::setClass() 则出现的内存泄漏。
    • 修复了在 ext-soap 中读取 zlib ini 设置的问题。
    • 修复了使用字符串函数名称查找时出现的内存泄漏。
    • 修复了错误 #69280(SoapClient classmap 不支持完全限定的类名)。
    • 修复了错误 #76232(SoapClient Cookie 标头分号)。
    • 修复了在两次调用 SoapFault::__construct() 时出现的内存泄漏。
  • Sodium
    • 修复了 ext/sodium 中某些函数失败时的内存泄漏。
  • SPL
    • 修复了错误 GH-14290(扩展 spl 中空指针内的成员访问)。
  • Standard
    • 修复了错误 GH-14483(修复了检查抽象命名空间 Unix 套接字长度时的越界错误)。
  • Streams
    • 修复了错误 GH-11078(PHP 致命错误触发指针被释放但未分配以及 malloc: ptr 错误的双重释放)。

版本 8.3.8

  • CGI
    • 修复了 Windows 上的缓冲区限制,用 _read 替换了 read 调用的使用。
    • 修复了错误 GHSA-3qgc-jrrr-25jv(绕过 CVE-2012-1823,PHP-CGI 中的参数注入)。(CVE-2024-4577)
  • CLI
    • 修复了错误 GH-14189(PHP 交互式 Shell 输入状态错误地处理带引号的 heredoc 字面量)。
  • 核心
    • 修复了错误 GH-13970(对于非编译时表达式,#[Attribute] 标志类型的验证不正确)。
  • DOM
    • 修复了在实体声明被移除但仍然存在实体引用的情况下发生的崩溃问题。
    • 修复了 C14N 中未正确处理引用的问题。
    • 修复了在迭代器耗尽时调用 childNodes next() 导致的崩溃问题。
    • 修复了在处理包含文本节点的片段时,ParentNode::append() 中的崩溃问题。
  • Filter
    • 修复了错误 GHSA-w8qr-v226-r27w(filter_var FILTER_VALIDATE_URL 中的过滤器绕过)。(CVE-2024-5458)
  • FPM
    • 修复了错误 GH-14175(在 systemd 状态中显示十进制数字而不是科学计数法)。
  • Hash
    • ext/hash:交换 `__has_builtin` 和 `__GNUC__` 的检查顺序(高町咲)。
  • Intl
    • 修复了在没有 C++17 编译器的系统上的构建回归。
  • MySQLnd
    • 修复了错误 GH-14255(mysqli_fetch_assoc 报告嵌套查询的错误)。
  • Opcache
    • 修复了错误 GH-14109(修复了在 shm 中意外持久化内部类常量的问题)。
  • OpenSSL
    • 当使用 PKCS1 填充(OPENSSL_PKCS1_PADDING,这是默认值)时,PHP 中的 openssl_private_decrypt 函数容易受到 Marvin 攻击,除非它与包含此拉取请求更改的 OpenSSL 版本一起使用:https://github.com/openssl/openssl/pull/13817 (rsa_pkcs1_implicit_rejection)。这些更改是 OpenSSL 3.2 的一部分,并且也已反向移植到各种 Linux 发行版的稳定版本,以及从上一个版本开始为 Windows 提供的 PHP 构建中。所有分发者和构建者都应确保使用此版本,以防止 PHP 受到攻击。
  • Standard
    • 修复了错误 GHSA-9fcc-425m-g385(绕过 CVE-2024-1874)。(CVE-2024-5585)
  • XML
    • 修复了错误 GH-14124(在特定内存限制下,使用 XML 扩展时发生段错误)。
  • XMLReader
    • 修复了错误 GH-14183(XMLReader::open() 无法被重写)。

版本 8.3.7

  • 核心
    • 修复了在没有线程支持的 Linux/uclibc-ng 上的 zend_call_stack 构建。
    • 修复了错误 GH-13772(启用 JIT 时,观察者 fcall 处理程序中的无效 execute_data->opline 指针)。
    • 修复了错误 GH-13931(在 Zend/zend_opcode.c 中对空指针应用零偏移量)。

    • 修复了错误 GH-13942(使 zend-max-execution-timers 的行为与其他超时实现保持一致)。
    • 修复了错误 GH-14003(使用可调用转换参数时,未完成调用的清理出现问题)。
    • 修复了错误 GH-14013(configure 中错误地附加了 dnl)。
    • 修复了错误 GH-10232(如果在常量解析期间发生自动加载,则文件名和行号识别错误)。
    • 修复了错误 GH-13727(缺少 void 关键字)。
  • 纤程
    • 修复了错误 GH-13903(执行 copy() 时 ASAN 出现下溢假阳性)。
  • Fileinfo
    • 修复了错误 GH-13795(在 big-endian PPC 上,ext/fileinfo/tests/bug78987.phpt 中的测试失败)。
  • FPM
    • 修复了错误 GH-13563(在 FPM 配置中通过 env 设置布尔值失败)。
  • Intl
    • 修复了 icu 74 及更高版本的构建。
  • MySQLnd
    • 修复了 32 位非快速路径平台上的越界移位问题。
  • Opcache
    • 修复了错误 GH-13433(使用 opcache.preload 时,zend_class_init_statics 中出现段错误)。
    • 修复了跨编译单元的静态调用中不正确的假设。
  • OpenSSL
    • 修复了错误 GH-10495(OpenSSL 流上的 feof 无限期挂起)。
  • PDO SQLite
    • 修复了 GH-13984(现在在 memcmp 之前检查缓冲区大小)。
    • 修复了 GH-13998(正确管理 agg_context->val 的引用计数)。
  • Phar
    • 修复了错误 GH-13836(将 Phar 中的文件重命名为已存在的文件名会导致空指针解引用)。
    • 修复了错误 GH-13833(在 zend_hash.c 中将零偏移量应用于空指针)。
    • 修复了在调用 EVP_SignInit 之前可能出现的空指针解引用。
  • PHPDBG
    • 修复了错误 GH-13827(phpdbg_frame 中对类型为 'zval' 的空指针进行访问)。
  • Posix
    • 修复了 ext/posix 中可重入函数的使用。
  • Session
    • 修复了错误 GH-13856(ext/session/mod_files.c 中对类型为 'ps_files' 的空指针进行成员访问)。
    • 修复了错误 GH-13891(使用 session.trans_sid_hosts 与 ini_set 时出现内存泄漏和段错误)。
    • 修复了 Windows 上文件模式的缓冲区 _read/_write 大小限制。
  • Streams
    • 修复了 Windows 上 file_get_contents() 失败并显示“errno=22 无效参数”的问题。
    • 修复了错误 GH-13264(第一部分 - 流过滤器失败时的内存泄漏)。
    • 修复了错误 GH-13860(ext/openssl/xp_ssl.c 中不正确的 PHP_STREAM_OPTION_CHECK_LIVENESS case - 导致使用已失效的套接字)。
    • 修复了 musl 1.2.4 上的构建错误 - lfs64。
  • 全项目
    • 修复了 gcc-14 的 Wcalloc-transposed-args 警告。

版本 8.3.6

  • 核心
    • 修复了 GH-13569(扫描 WeakMaps 时,GC 缓冲区不必要地增长到 GC_MAX_BUF_SIZE)。
    • 修复了错误 GH-13612(使用弱引用时,析构函数中的内存损坏)。
    • 修复了错误 GH-13446(在异常处理程序完成之后恢复它)。
    • 修复了错误 GH-13784(AX_GCC_FUNC_ATTRIBUTE 失败)。
    • 修复了错误 GH-13670(GC 在析构函数中创建大量对象时扩展性不佳)。
  • DOM
    • 添加了一些缺失的 ZPP 检查。
    • 修复了 XPath 评估结果中潜在的内存泄漏。
  • FPM
    • 修复了 GH-11086(FPM:在守护进程模式下,配置测试运行两次)。
    • 修复了 fpm_shm_free() 中不正确的检查。
  • GD
    • 修复了错误 GH-12019(在特性测试中添加 GDLIB_CFLAGS)。
  • Gettext
    • 修复了使用 gettext 0.22.5 且类别设置为 LC_ALL 时,dcgettext/dcngettext 调用引发的 sigabrt。
  • MySQLnd
    • 修复了 GH-13452(修复了握手响应 [mysqlnd])。
    • 修复了 check_mb_eucjpms() 中不正确的字符集长度。
  • Opcache
    • 修复了 GH-13508(当 op1 为 null 时,JITed QM_ASSIGN 可能会被优化掉)。
    • 修复了 GH-13712(当加载 opcache 时,调用内部特性的特性的方法时,已启用的观察者出现段错误)。
  • Random
    • 修复了错误 GH-13544(PHP 8.2 之前的版本与 mt_srand 的未知模式兼容)。
    • 修复了错误 GH-13690(使用 MT_RAND_PHP 时,全局 Mt19937 在请求之间没有正确重置)。
  • Session
    • 修复了错误 GH-13680(session_decode 出现段错误和编译错误)。
  • SPL
    • 修复了错误 GH-13685(zend_string.h 中出现意外的空指针)。
  • Standard
    • 修复了错误 GH-11808(测试修改了实时文件系统)。
    • 修复了 GH-13402(添加了 mail() 的 $additional_headers 中 '\n' 的验证)。
    • 修复了错误 GH-13203(Windows 上 file_put_contents 在超过 4GB 的字符串上失败)。
    • 修复了错误 GHSA-pc52-254m-w9w7(通过 proc_open 的类似数组的 $command 参数进行命令注入)。(CVE-2024-1874)
    • 修复了错误 GHSA-wpj3-hf5j-x4v4(由于部分 CVE-2022-31629 修复导致的 __Host-/__Secure- cookie 绕过)。(CVE-2024-2756)
    • 修复了错误 GHSA-h746-cjrr-wfmr(password_verify 可能错误地返回 true,从而导致 ATO 风险)。(CVE-2024-3096)
    • 修复了错误 GHSA-fjp9-9hwx-59fq(mb_encode_mimeheader 对某些输入无限循环)。(CVE-2024-2757)
    • 修复了错误 GH-13932(尝试修复 Windows 构建上的 mbstring)(msvc)。

版本 8.3.4

  • 核心
    • 修复了关闭时 ZTS 持久资源崩溃的问题。
  • Curl
    • 修复了由于 libcurl 8.6.0 中字符串更改导致的测试失败。
  • DOM
    • 修复了在具有极深树的命名空间删除的情况下不太可能发生的内存泄漏。
    • 修复了 DOMNodeList 和 DOMNodeMap 的维度中的引用访问。
  • Fileinfo
    • 修复了错误 GH-13344(finfo::buffer(): 无法识别数据 0:(null),回退)。
  • FPM
    • 修复了错误 #75712(php-fpm 中的 getenv 不应读取 $_ENV、$_SERVER)。
  • GD
    • 修复了错误 GH-12019(系统 gd 库中图像格式的检测)。
  • MySQLnd
    • 修复了错误 GH-11950([mysqlnd] 修复了如果已设置 CR_SERVER_GONE_ERROR,则不将 CR_MALFORMED_PACKET 设置为错误的问题)。
  • PDO
    • 修复了各种 PDORow 错误。
  • PGSQL
    • 修复了错误 GH-13354(pg_execute/pg_send_query_params/pg_send_execute 传递引用时使用空值)。
  • SPL
    • 修复了错误 GH-13531(PHP 8.2.15 中反序列化后无法调整 SplfixedArray 的大小)。
  • Standard
    • 修复了错误 GH-13279(uksort 中就地修改期间数组不稳定)。
    • 修复了作为哈希到字符串(不区分大小写)比较的数组键的第二个操作数缓冲区大小的类型错误(尽管目前未使用)。
  • XML
    • 修复了错误 GH-13517(使用 --with-expat 构建时出现多个测试失败)。

版本 8.3.3

  • 核心
    • 修复了 zend-max-execution-timers 构建中的计时器泄漏。
    • 修复了错误 GH-12349(ARM 上使用 mold 链接失败)。
    • 修复了错误 GH-13097(trigger_error/抛出的异常中的匿名类引用)。
    • 修复了错误 GH-13177(PHP 8.3.2:在特性中使用时不允许使用最终私有构造函数)。
    • 修复了错误 GH-13215(GCC 14 构建失败)。
  • Curl
    • 修复了 curl_multi_init() 中缺少的错误检查。
  • FPM
    • 修复了错误 GH-12996(路径中存在加号时,Apache ProxyPassMatch 的 SCRIPT_NAME 不正确)。
  • GD
    • 修复了错误 GH-10344(imagettfbbox(): 无法找到/打开字体 UNC 路径)。
    • 修复了错误 GH-10614(旋转 90 度时,imagerotate 会使图片全部变黑)。
  • LibXML
    • 修复了实体引用和预定义实体的崩溃问题。
  • MySQLnd
    • 修复了错误 GH-12107(两次运行存储过程(返回结果集)时,PHP 会崩溃)。
  • Opcache
    • 修复了错误 GH-13145(strtok() 不是编译时)。
    • 修复了 range() 的类型推断。
    • 修复了错误 GH-13232(关闭 JIT 但仍开启 JIT_debug 时会报告段错误)。
  • OpenSSL
    • 修复了未设置 OPENSSL_NO_ENGINE 时 LibreSSL 的未定义引用。(David Carlier)。
  • PDO_Firebird
    • 修复了 GH-13119(更改为使用 `H` 格式将浮点型和双精度型值转换为字符串)。
  • Phar
    • 修复了错误 #71465(PHAR 不知道 litespeed)。
    • 修复了错误 GH-13037(PharData 错误地解压 zip 文件)。
  • Random
    • 修复了错误 GH-13138(Randomizer::pickArrayKeys() 无法检测到损坏的引擎)。
  • Session
    • 修复了错误 GH-12504(自动加载器出现致命错误时,写入损坏的会话)。
  • Standard
    • 修复了错误 GH-13094(range(9.9, '0') 导致段错误)。
  • Streams
    • 修复了错误 GH-13071(使用可映射源流复制大文件可能会耗尽可用内存并失败)。

版本 8.3.2

  • 核心
    • 修复了错误 GH-12953(加载包含超过 11k 个元素的 composer 类映射时,SSA 完整性验证出现假阳性失败)。
    • 修复了错误 GH-12999(不支持 strnlen 时 zend_strnlen 构建)。
    • 修复了错误 GH-12966(缺少交叉编译的第 3 个参数,因此 Autoconf 不会发出警告)。
    • 修复了错误 GH-12854(8.3 - 作为最终特性使用的方法在 Reflection 中没有正确报告可见性)。
  • Cli
    • 修复了使用路由器脚本和 max_input_time 时内置 Web 服务器中的不正确超时。
  • DOM
    • 修复了错误 GH-12870(创建 xmlns 属性会导致 DOMException)。
    • 修复了在没有文档的情况下使用 toggleAttribute() 时发生的崩溃。
    • 修复了 adoptNode 中带有属性引用的崩溃。
    • 修复了错误 GH-13012(当属性顺序不同时,DOMNode::isEqualNode() 不正确)。
  • FFI
    • 修复了错误 GH-9698(stream_wrapper_register 与 FFI\CData 发生冲突)。
    • 修复了错误 GH-12905(FFI::new 与观察者发生冲突)。
  • Intl
    • 修复了 GH-12943(IntlDateFormatter::__construct 接受 'C' 作为有效的语言环境)。
  • Hash
    • 修复了错误 GH-12936(如果对超过 4GiB 的字符串使用 sha512,则 hash() 函数会无限期挂起)。
  • ODBC
    • 修复了 Apache 关闭时带有持久连接的崩溃。
  • Opcache
    • 修复了 oss-fuzz #64727(当 DIM 与结果相同时,JIT 未定义数组键警告可能会覆盖 DIM 为 NULL)。
    • 添加了对 SELinux mprotect execheap 问题的解决方法。请参阅 https://bugzilla.kernel.org/show_bug.cgi?id=218258。
  • OpenSSL
    • 修复了错误 GH-12987(openssl_csr_sign 可能会在错误时泄漏新证书)。
  • PDO
    • 修复了 GH-12969(修复了 PDO::getAttribute() 以获取 PDO::ATTR_STRINGIFY_FETCHES)。
  • PDO_ODBC
    • 修复了错误 GH-12767(无法使用 setAttribute() 打开自动提交模式)。
  • PGSQL
    • 修复了 auto_reset_persistent 处理和 allow_persistent 类型。
    • 修复了错误 GH-12974(使用 pg_pconnect() 时 Apache 在关闭时崩溃)。
  • Phar
    • 修复了错误 #77432(包含 phar 文件时出现分段错误)。
  • PHPDBG
    • 修复了错误 GH-12962(在 phpdbg_prompt.c 中对 init_file 进行双重释放)。
  • SimpleXML
    • 修复了获取 SimpleXMLElement 未初始化属性的地址导致崩溃的问题。
    • 修复了错误 GH-12929(使用 stream_wrapper_register 的 SimpleXMLElement 可能会导致段错误)。
  • Tidy
    • 修复了错误 GH-12980(tidynode.props.attribute 缺少“布尔属性”和空属性)。

版本 8.3.1

  • 核心
    • 修复了错误 GH-12758 / GH-12768(ZEND_FUNC_GET_ARGS 和 ZEND_BIND_STATIC 内的 OOM 处理程序中的无效操作码)。
    • 修复了各种缺少的 NULL 检查。
    • 修复了错误 GH-12835(内部 __call 上 call->extra_named_params 的泄漏)。
    • 修复了错误 GH-12826(嵌套循环中奇怪的指针问题)。
  • FPM
    • 修复了错误 GH-12705(fpm_status_export_to_zval 中出现分段错误)。
  • FTP
    • 修复了错误 GH-9348(FTP 和 SSL 会话重用)。
  • LibXML
    • 修复了 libxml2 2.12.0 的测试失败。
  • MySQLnd
    • 避免使用未初始化的结构体。
    • 修复了错误 GH-12791(MySQLnd 调试代码中可能存在对 NULL 的解引用)。
  • Opcache
    • 修复了 JIT 错误(函数 JIT 在发出无效偏移量错误的同时也发出“未初始化的字符串偏移量”警告)。
    • 修复了 JIT 错误(JIT 在抛出错误的同时也发出“尝试为非对象分配属性”警告)。
  • PDO PGSQL
    • 修复了 PDO::pgsqlGetNotify() 中 $fetchMode 的默认值 (kocsismate)
  • SOAP
    • 修复了错误 GH-12838([SOAP] 未删除临时 WSDL 缓存文件)。
  • Standard
    • 修复了 GH-12745(http_build_query() 的默认空参数 $arg_separator 隐式转换为字符串)。

版本 8.3.0

  • Bcmath
    • 修复了 GH-11761(从数字中删除尾随零)(jorgsowa)
  • CLI
    • 向内置服务器添加了 pdeathsig,以便在主进程被杀死时终止工作进程。
    • 修复了错误 GH-11104(如果没有脚本,CLI 则无法使用 STDIN/STDOUT/STDERR)。
    • 实现了 GH-10024(使用 php -l 支持一次性 lint 多个文件)。
  • 核心
    • 修复了 GH-11388(从 trait 导入方法时允许使用“final”修饰符)。
    • 修复了错误 GH-11406(解包和魔术方法闭包导致段错误)。
    • 修复了错误 GH-9388(改进 unset 属性和 __get 类型不兼容错误消息)。
    • 现在为信号处理程序设置了 SA_ONSTACK,以便更友好地与其他进程内代码(例如 Go 的 cgo)交互。
    • 禁用信号时,现在会设置 SA_ONSTACK。
    • 修复了 GH-9649:当在 TSRM 未管理的线程上执行时,信号处理程序现在执行无操作,而不是崩溃。
    • 为纤程添加了影子堆栈支持。
    • 修复了错误 GH-9965(修复了意外缓存带有副作用的默认参数的问题)。
    • 实现了 GH-10217(使用 strlen() 确定 class_name 的长度)。
    • 修复了错误 GH-8821(改进常量表达式中错误的行号)。
    • 修复了错误 GH-10083(允许在 & 和参数之间使用注释)。
    • 现在默认情况下为 Linux 上的 ZTS 构建启用 Zend 最大执行时间。
    • 修复了错误 GH-10469(在运行时设置的 open_basedir 路径中不允许使用 ..)。
    • 修复了错误 GH-10168GH-10582(析构函数和 VM 返回值导致各种段错误)。
    • 修复了错误 GH-10935(如果类从其父类继承了静态属性,则使用 trait 不会重新声明该属性)。
    • 修复了错误 GH-11154(空数组上的负索引不会影响下一个选择的索引)。
    • 修复了错误 GH-8846(为没有父类的类实现延迟早期绑定)。
    • 修复了错误 #79836(concat_function 中出现段错误)。
    • 修复了错误 #81705(使用连接操作的 set_error_handler 出现类型混淆/UAF)。
    • 修复了 GH-11348(从魔术方法创建的闭包不接受命名参数)。
    • 修复了 GH-11388(从 trait 导入方法时允许使用“final”修饰符)。
    • 修复了错误 GH-11406(解包和魔术方法闭包导致段错误)。
    • 修复了错误 GH-11507(8.3 中字符串连接性能下降)。
    • 修复了 GH-11488(联合空类型上缺少“必需参数之前的可选参数”弃用警告)。
    • 实现了 #[\Override] 属性 RFC。
    • 修复了错误 GH-11601(不正确的展开和优雅退出异常处理)。
    • 为 OpenBSD 添加了 zend_call_stack_get 实现。
    • 在 zend_eval_const_expr() 中添加了堆栈限制检查。
    • 公开了 gc_status() 中收集循环花费的时间。
    • 删除其键仅可通过条目值访问的 WeakMap 条目。
    • 在 INI 更新时解析 open_basedir 路径。
    • 修复了 oss-fuzz #60741(open_basedir 中的泄漏)。
    • 修复了由于 OOM 错误导致释放一些未完全初始化的对象(PDO、SPL、XSL)时的段错误。
    • 引入了 Zend 保护递归以修复 __debugInfo 问题。
    • 修复了 oss-fuzz #61712(在二元运算期间使用错误处理程序时出现断言失败)。
    • 修复了 GH-11847(启用 DTrace 的构建已损坏)。
    • 修复了 OSS Fuzz #61865(在错误处理程序中未设置已声明属性的 ++/-- 中的未定义变量)。
    • 修复了检查用户流是否可强制转换时发出的警告。
    • 修复了错误 GH-12123(在使用 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX 时,MacOS 上的 C++ 扩展出现编译错误)。
    • 修复了错误 GH-12189(trait 中的 #[Override] 属性不检查父类的实现)。
    • 修复了 OSS Fuzz #62294(在字符串变量警告上 ++/-- 后取消设置变量)。
    • 修复了编译记忆表达式时的缓冲区下溢。
    • 修复了 oss-fuzz #63802(后增/后减的错误路径中的 OP1 泄漏)。
  • Curl
    • 添加了 Curl 选项和常量,直到(包括)版本 7.87。
  • 日期
    • 实现了更合适的日期/时间异常 RFC。
  • DOM
    • 修复了错误 GH-8388(DOMAttr 解码字符引用)。
    • 修复了错误 GH-11308(getElementsByTagName() 为 O(N^2))。
    • 修复了 #79700(错误地使用 libxml oldNs 会导致性能问题)。
    • 修复了 #77894(即使在规范化之后,DOMNode::C14N() 在生成的 DOMDocuments 上也非常慢)。
    • 恢复对 DOMAttr::$value 和 DOMAttr::$nodeValue 展开所做的更改。
    • 修复了错误 GH-11500(createElementNS() 中的命名空间重用生成错误的输出)。
    • 实现了 DOMDocument::adoptNode()。以前,这始终会抛出“尚未实现”异常。
    • 修复了错误 GH-9628(隐式从 \DOMDocument 中删除节点会破坏现有引用)。
    • 添加了 DOMNode::contains() 和 DOMNameSpaceNode::contains()。
    • 添加了 DOMElement::getAttributeNames()。
    • 添加了 DOMNode::getRootNode()。
    • 添加了 DOMElement::className 和 DOMElement::id。
    • 添加了 DOMParentNode::replaceChildren()。
    • 添加了 DOMNode::isConnected 和 DOMNameSpaceNode::isConnected。
    • 添加了 DOMNode::parentElement 和 DOMNameSpaceNode::parentElement。
    • 添加了 DOMNode::isEqualNode()。
    • 添加了 DOMElement::insertAdjacentElement() 和 DOMElement::insertAdjacentText()。
    • 添加了 DOMElement::toggleAttribute()。
    • 修复了错误 GH-11792(LIBXML_NOXMLDECL 未实现或已损坏)。
    • adoptNode 现在尊重严格错误检查属性。
    • 将 DOMChildNode 父级检查与规范对齐。
    • 修复了错误 #80927(在创建属性节点后删除 documentElement:可能出现使用后释放)。
    • 修复了各种命名空间前缀冲突解决错误。
    • 修复了在没有前缀的情况下调用 createAttributeNS() 会导致元素的默认命名空间发生更改的问题。
    • 修复了 GH-11952(通过 libxml_set_external_entity_loader 阻止实体加载时出现令人困惑的警告)。
    • 修复了已释放和重新分配的文档节点导致缓存失效的问题。
    • 修复了在 C++ 中包含 php_libxml.h 头文件时的编译错误。
    • 修复了错误 #47531(无法删除冗余的 xmlns: 声明)。
  • Exif
    • 删除了 exif_process_TIFF_in_JPEG() 中不需要的代码路径。
  • FFI
    • 实现了 GH-11934(允许将 CData 传递到结构体和/或联合体字段)。
  • Fileinfo
    • 将捆绑的 libmagic 升级到 5.43。
    • 修复了 GH-11408(无法构建 PHP 8.3.0 alpha 1 / fileinfo 扩展)。
  • FPM
    • status.listen 共享池现在使用与其共享的池相同的 php_values(包括 expose_php)和 php_admin_value。
    • 在 fpm 套接字未在预期路径上注册时,向日志添加警告。
    • 修复了错误 #76067(system() 函数调用泄漏 php-fpm 侦听套接字)。
    • 修复了 GH-12077(PHP 8.3.0RC1 破坏了 socket-close-on-exec.phpt)。
  • GD
    • 删除了 imagerotate 的“ignore_transparent”参数,因为它没有效果。
  • Intl
    • 为 numfmt_set_pattern 添加了模式格式错误信息。
    • 为 Spoofchecker 类添加了 MIXED_NUMBERS 和 HIDDEN_OVERLAY 常量。
    • 更新了 datefmt_set_timezone/IntlDateformatter::setTimezone 返回类型。(David Carlier)。
    • 更新了 IntlBreakInterator::setText 返回类型。
    • 更新了 IntlChar::enumCharNames 返回类型。
    • 删除了 IntlDateFormatter::construct 上的 BC 中断,该中断在使用无效语言环境时会抛出异常。
  • JSON
    • 添加了 json_validate()。
  • LDAP
    • 弃用使用单独的主机名和端口调用 ldap_connect()。
  • LibXML
    • 修复了 -Werror=incompatible-function-pointer-types 和旧版 libxml2 时的编译错误。
  • MBString
    • mb_detect_encoding 能够更好地识别土耳其语文本的正确编码。

    • mb_detect_encoding 的“非严格”模式现在按文档描述的行为。以前,如果输入字符串的相同字节(例如,第一个字节)在所有候选编码中都无效,它将返回 false。更一般地说,当看到无效字节时,它会将候选编码从考虑范围中排除,如果相同的输入字节排除了所有仍在考虑的剩余编码,它将返回 false。另一方面,如果所有候选编码都除一个之外都被排除在考虑范围之外,它将返回最后一个剩余的编码,而不管在字符串后面可能遇到多少编码错误。这与文档中描述的行为不同,文档中说:“如果将 strict 设置为 false,则将返回最匹配的编码。”(Alex Dowad)
    • mb_strtolower、mb_strtotitle 和 mb_convert_case 实现了希腊字母 sigma 的条件大小写规则。对于 mb_convert_case,条件大小写仅适用于 MB_CASE_LOWER 和 MB_CASE_TITLE 模式,不适用于 MB_CASE_LOWER_SIMPLE 和 MB_CASE_TITLE_SIMPLE。
    • mb_detect_encoding 能够更好地识别带有字节顺序标记的 UTF-8 和 UTF-16 字符串。
    • mb_decode_mimeheader 会根据 RFC 2047 的要求解释 QPrint 编码的 MIME 编码词中的下划线;它们将转换为空格。此类 MIME 编码词中的下划线必须编码为“=5F”。
    • mb_encode_mimeheader 在使用 QPrint 编码输入字符串时不再丢弃 NUL(零)字节。这之前会导致某些文本编码(尤其是 UTF-16 和 UTF-32)中的字符串被 mb_encode_mimeheader 破坏。
    • 实现 mb_str_pad() RFC。
    • 修复了 bug GH-11514(启用 --enable-mbstring 时 PHP 8.3 构建失败)。
    • 修复了 mb_list_encodings() 返回值的释放后使用错误。
    • 修复了 bug GH-11992(utf_encodings.phpt 在 Windows 32 位上失败)。
  • mysqli
    • mysqli_fetch_object 抛出 ValueError 而不是 Exception。
  • Opcache
    • 在 opcache 的 phpinfo 部分添加了启动、重启和强制重启时间。
    • 修复 GH-9139:当 opcache.preload_user=root 时,允许在 opcache.preload 中使用 FFI。
    • 使 opcache.preload_user 在 cli 和 phpdbg SAPI 中始终可选。
    • 尽管存在系统设置,但在 FreeBSD 上的页面创建时也允许使用 W/X 位。
    • 在 Linux 上添加了 memfd api 使用,用于 zend_shared_alloc_create_lock() 创建一个用于 opcache 锁的抽象匿名文件。
    • 避免从多个进程/线程重置 JIT 计数器处理程序。
    • 修复了引用的 COPY_TMP 类型推断。
  • OpenSSL
    • 添加了 OPENSSL_CMS_OLDMIMETYPE 和 PKCS7_NOOLDMIMETYPE 常量以在 mime 内容类型之间切换。
    • 修复了 GH-11054:使用 PEM 公钥时重置 OpenSSL 错误。
    • 添加了对 openssl_pkey_new 中其他 EC 参数的支持。
  • PCNTL
    • 现在为 pcntl_signal 设置了 SA_ONSTACK。
    • 添加了 SIGINFO 常量。
  • PCRE
    • 将捆绑的 libpcre2 更新到 10.42。
  • PGSQL
    • pg_fetch_object 抛出 ValueError 而不是 Exception。
    • pg_cancel 使用线程安全的 PQcancel api 代替。
    • pg_trace 新的 PGSQL_TRACE_SUPPRESS_TIMESTAMPS/PGSQL_TRACE_REGRESS_MODE 常量支持。
    • pg_set_error_verbosity 添加了 PGSQL_ERRORS_STATE 常量。
    • pg_convert/pg_insert 类型错误的 E_WARNING 已转换为 ValueError/TypeError 异常。
    • 添加了 pg_set_error_context_visibility 以设置错误消息中上下文的可见性。
  • Phar
    • 修复了 phar_rename_archive() 中的内存泄漏。
  • POSIX
    • 添加了 posix_sysconf。
    • 添加了 posix_pathconf。
    • 添加了 posix_fpathconf。
    • 修复了 zend_parse_arg_long 的布尔指针参数赋值。
    • 添加了 posix_eaccess。
  • Random
    • 添加了 Randomizer::getBytesFromString()。
    • 添加了 Randomizer::nextFloat()、::getFloat() 和 IntervalBoundary。
    • 为 NetBSD(从 10.x 开始)启用 getrandom()。
    • 弃用 MT_RAND_PHP。
    • 修复了 Randomizer::getFloat() 在某些情况下返回不正确结果的问题。
  • Reflection
    • 修复了 GH-9470(ReflectionMethod 构造函数不应查找私有父方法)。
    • 修复了 GH-10259(ReflectionClass::getStaticProperties 不需要 null 返回类型)。
  • SAPI
    • 修复了 GH-11141(无法打开输入文件:应发送到 stderr)。
  • Session
    • 修复了 bug GH-11529(处理 Apache 请求后崩溃)。
  • SimpleXML
    • 修复了 bug GH-12192(在 foreach 内部调用 getName() 时,SimpleXML 出现无限循环)。
    • 修复了 bug GH-12208(在 foreach 内部使用强制转换时,SimpleXML 出现无限循环)。
    • 修复了 bug #55098(SimpleXML 迭代产生无限循环)。
  • Sockets
    • 添加了 SO_ATTACH_REUSEPORT_CBPF 套接字选项,以便更严格地控制套接字绑定到 CPU 内核。
    • 为 cbpf 过滤器添加了 SKF_AD_QUEUE。
    • 如果 send/recv 需要使用 MSG_OOB,则添加 socket_atmark。
    • 添加了 TCP_QUICKACK 常量,以更严格地控制 ACK 延迟。
    • 添加了 DONTFRAGMENT 支持,用于路径 MTU 发现目的。
    • 添加了 AF_DIVERT 以用于转发端口的原始套接字。
    • 添加了 SOL_UPDLITE、UDPLITE_RECV_CSCOV 和 UDPLITE_SEND_CSCOV 以支持 updlite 协议。
    • 添加了 netbsd 和 openbsd 常量 SO_RERROR、SO_ZEROIZE 和 SO_SPLICE。
    • 添加了 TCP_REPAIR 以静默关闭连接。
    • 添加了 freebsd 常量 SO_REUSEPORT_LB。
    • 添加了 IP_BIND_ADDRESS_NO_PORT。
  • SPL
    • 修复了 GH-11573(RecursiveDirectoryIterator::hasChildren 速度很慢)。
  • Standard
    • 由 unserialize() 发出的 E_NOTICEs 已提升为 E_WARNING。
    • 如果输入包含未使用的字节,unserialize() 现在会发出新的 E_WARNING。
    • 使 array_pad 的 $length 警告不那么令人困惑。
    • 当开始标记化时未提供两个参数时,strtok 发出的 E_WARNING。
    • password_hash() 现在将在盐生成失败时将原始 RandomException 连接到 ValueError。
    • 修复了 GH-10239(proc_get_status 之后 proc_close 始终返回 -1)。
    • 改进了 unpack() 在未提供足够值时发出的警告消息。
    • 修复了 GH-11010(parse_ini_string() 现在在指定 INI_SCANNER_TYPED 标志时保留以数字开头的未加引号字符串的格式)。
    • 修复了 GH-10742(已发送标头时,http_response_code 不发出错误)。
    • 添加了对 number_format() 中舍入负数位数的支持。
    • 防止在 number_format() 中格式化十进制整数时精度丢失。
    • 在操作系统支持时,添加了 proc_open 使用 posix_spawn 的功能。
    • 添加了 strrchr() 的 $before_needle 参数。
    • 修复了 GH-11982(str_getcsv 为未终止的封闭返回空字节)。
    • 修复了 "1" 上的 str_decrement()。
  • Streams
    • 修复了 bug #51056:即使数据可用,阻塞 fread() 也会阻塞。
    • 添加了用于存储用于打开 xport 流的原始路径的功能。
    • 实现了 GH-8641(通过 HTTP 的 STREAM_NOTIFY_COMPLETED 从未发出)。
    • 修复了 bug GH-10406(在 PHP 8.3 上,redis 套接字连接上的 fgets 失败)。
    • 实现了 GH-11242(_php_stream_copy_to_mem:允许指定最大长度,而无需分配该大小的缓冲区)。
    • 修复了 bug #52335(内存流上的 fseek() 行为与文件不同)。
    • 修复了 bug #76857(可以读取“不存在”的文件)。
  • XSLTProcessor
    • 修复了 bug #69168(DomNode::getNodePath() 返回无效路径)。
  • ZIP
    • libzip 1.10.0 的 zip 扩展版本 1.22.0。
    • 添加新的错误宏(ER_DATA_LENGTH 和 ER_NOT_ALLOWED)。
    • 添加新的存档全局标志(ER_AFL_*)。
    • 添加 ZipArchive::setArchiveFlag 和 ZipArchive::getArchiveFlag 方法。

版本 8.2.26

  • CLI
    • 修复了 bug GH-16373(通过 shebang 启动的 cli-server 中,不会跳过路由脚本的 shebang)。
    • 修复了 bug GHSA-4w77-75f9-2c8w(CLI SAPI 接口中 sapi_read_post_data 处理中的 Use-After-Free)。
  • COM
    • 修复了对 SafeArray 数据的越界写入。
  • 核心
    • 修复了 bug GH-16168(使用 macOS 15 上 Xcode 16 clang 编译时,php 8.1 及更早版本立即崩溃)。
    • 修复了 bug GH-16371(Zend/zend_weakrefs.c:646 中的断言失败)。
    • 修复了 bug GH-16515(对于调用 trampoline,ZEND_ACC_RETURN_REFERENCE 的传播不正确)。
    • 修复了 bug GH-16509(函数重新声明错误中的行号不正确)。
    • 修复了 bug GH-16508(延迟早期绑定类的继承错误中的行号不正确)。
    • 修复了 bug GH-16648(数组排序期间出现 Use-after-free)。
  • Curl
    • 修复了 bug GH-16302(如果 curl_multi_add_handle 失败,CurlMultiHandle 会持有对 CurlHandle 的引用)。
  • 日期
    • 修复了 bug GH-16454(date_sunset() 在使用很小的 $utcOffset 时出现未处理的 INF)。
    • 修复了 bug GH-16037(ext/date/php_date.c 中的断言失败)。
    • 修复了 bug GH-14732(date_sun_info() 对于非有限值失败)。
  • DBA
    • 修复了 bug GH-16390(dba_open() 对于“无路径”流可能导致段错误)。
  • DOM
    • 修复了 bug GH-16316(DOMXPath 在未正确初始化时会中断)。
    • 修复了 bug GH-16473(dom_import_simplexml 存根不正确)。
    • 修复了 bug GH-16533(向不是元素的父级添加属性时发生段错误)。
    • 修复了 bug GH-16535(使用文档作为子级时的 UAF)。
    • 修复了 bug GH-16593(DOM->replaceChild 中的断言失败)。
    • 修复了 bug GH-16595(DOM -> cloneNode 中的另一个 UAF)。
  • EXIF
    • 修复了 bug GH-16409(当不处理真实文件时,exif_thumbnail 发生段错误)。
  • FFI
    • 修复了 bug GH-16397(比较 FFI 对象时发生段错误)。
  • Filter
    • 修复了 bug GH-16523(FILTER_FLAG_HOSTNAME 接受结尾的连字符)。
  • FPM
    • 修复了 bug GH-16628(FPM 日志由于此日志语句而损坏)。
  • GD
    • 修复了 bug GH-16334(imageaffine 在矩阵元素上溢出)。
    • 修复了 bug GH-16427(未检查 libavif 返回值)。
    • 修复了 bug GH-16559(ext/gd/libgd/gd_interpolation.c:1007 中的 UBSan 中断)。
  • GMP
    • 修复了使用大型指数值时 gmp_pow 出现的浮点异常错误。(David Carlier)。
    • 修复了 bug GH-16411(gmp_export() 可能会导致溢出)。
    • 修复了 bug GH-16501(gmp_random_bits() 可能会导致溢出)。
    • 修复了 gmp_pow() 在使用大型底数/指数时的溢出错误。
    • 修复了与 GMP 对象运算符重载相关的段错误和其他问题。
  • LDAP
  • MBstring
    • 修复了 bug GH-16361(mb_substr 在 start/length 参数上溢出)。
  • MySQLnd
    • 修复了 bug GHSA-h35g-vwh6-m678(通过堆缓冲区过读泄漏堆的部分内容)。(CVE-2024-8929)
  • OpenSSL
    • 修复了 bug GH-16357(openssl 可能会修改证书数组的成员类型)。

    • 修复了 bug GH-16433(openssl_csr_sign() 函数中 $days 参数的大值溢出)。
    • 修复了 openssl_x509_parse() 函数在错误条件下出现的多个内存泄漏。
  • PDO DBLIB
    • 修复了 bug GHSA-5hqh-c84r-qjcv(dblib 引号器中的整数溢出导致越界写入)。(CVE-2024-11236)
  • PDO Firebird
    • 修复了 bug GHSA-5hqh-c84r-qjcv(firebird 引号器中的整数溢出导致越界写入)。(CVE-2024-11236)
  • PDO ODBC
    • 修复了 bug GH-16450(PDO_ODBC 可能会将垃圾数据注入字段值)。
  • Phar
    • 修复了 bug GH-16406(ext/phar/phar.c:2808 中的断言失败)。
  • PHPDBG
    • 修复了 bug GH-16174(空字符串是 ev 的无效表达式)。
  • Reflection
    • 修复了 bug GH-16601(Reflection 构造函数中的内存泄漏)。
  • Session
    • 修复了 bug GH-16385(session_set_cookie_params 返回意外的 null)。
    • 修复了 bug GH-16290(cookie_lifetime ini 值溢出)。
  • SOAP
    • 修复了 bug GH-16429(SoapClient 中访问空指针导致段错误)。
  • Sockets
    • 修复了 socket_recvfrom 函数中 $length 参数溢出的 bug。
  • SPL
    • 修复了 bug GH-16337(SplHeap 中的释放后使用)。
    • 修复了 bug GH-16464(SplDoublyLinkedList::offsetSet() 中的释放后使用)。
    • 修复了 bug GH-16479(SplObjectStorage::setInfo() 中的释放后使用)。
    • 修复了 bug GH-16478(SplFixedArray::unset() 中的释放后使用)。
    • 修复了 bug GH-16588(Observer->serialize 中的释放后使用)。
    • 修复了 GH-16477(在 SplFileObject::__constructor 失败后调用 __debugInfo() 导致段错误)。
    • 修复了 bug GH-16589(SplDoublyLinked->serialize() 中的释放后使用)。
    • 修复了 bug GH-14687(在 SplObjectIterator 实例上发生段错误)。
    • 修复了 bug GH-16604(SPL 构造函数中的内存泄漏)。
    • 修复了 bug GH-16646(ArrayObject::unset() 和 ArrayObject::exchangeArray() 中的释放后使用)。
  • Standard
    • 修复了 bug GH-16293(在启用 bail 的情况下,在 assert() 回调中抛出异常时断言失败)。
  • Streams
    • 修复了 bug GHSA-c5f2-jwm7-mmq2(在流上下文中配置代理可能允许在 URI 中进行 CRLF 注入)。(CVE-2024-11234)
    • 修复了 bug GHSA-r977-prxv-hc43(使用 convert.quoted-printable-decode 过滤器时发生单字节过读)。(CVE-2024-11233)
  • SysVMsg
    • 修复了 bug GH-16592(当类型未正确序列化时,msg_send() 崩溃)。
  • SysVShm
    • 修复了 bug GH-16591(shm_put_var 中的断言错误)。
  • XMLReader
    • 修复了 bug GH-16292(ext/xmlreader/php_xmlreader.c 中的段错误)。
  • Zlib
    • 修复了 bug GH-16326(对于错误的字典,内存管理已损坏)。(cmb)

版本 8.2.25

  • 日历
    • 修复了 GH-16240:jdtounix 函数在参数值上溢出。
    • 修复了 GH-16241:easter_days/easter_date 函数在年份参数上溢出。
    • 修复了 GH-16263:jddayofweek 函数溢出。
    • 修复了 GH-16234:jewishtojd 函数溢出。
  • CLI
    • 修复了 bug GH-16137:客户端多次设置时出现重复的 http 头。
  • 核心
    • 修复了 bug GH-15712:设置大型值时,zend_strtod 在精度 INI 上溢出。
    • 修复了 bug GH-15905(TRACK_VARS_SERVER 的断言失败)。
    • 修复了 bug GH-15907(将 Serialize 弃用提升为异常时断言失败)。
    • 修复了 bug GH-15851(在嵌套生成器帧清理期间打印回溯时发生段错误)。
    • 修复了 bug GH-15866(Zend/zend_generators.c 中核心转储)。
    • 修复了 bug GH-16188(Zend/zend_exceptions.c 中的断言失败)。
    • 修复了 bug GH-16233(通过蹦床在内部函数中调用用户函数时,Observer 发生段错误)。
  • 日期
    • 修复了 bug GH-15582:在不调用 DateTimeZone 的父构造函数时崩溃。
    • 修复了在解析带符号整数时忽略第一个符号之后的符号的回归问题,使用 DateTimeInterface::modify() 函数。
  • DOM
    • 修复了 bug GH-16039(ext/dom/parentnode/tree.c 中的段错误(访问空指针))。
    • 修复了 bug GH-16151(ext/dom/parentnode/tree.c 中的断言失败)。
  • GD
    • 修复了 bug GH-16232(wbmp 文件内容读取时的位移溢出/修复来自上游的回退)。
    • 修复了 bug GH-12264(imagerotate 函数 degrees 参数的溢出/下溢)。(David Carlier)
    • 修复了 bug GH-16274(imagescale 函数在 RBG 通道上的下溢/修复来自上游的回退)。
  • LDAP
    • 修复了 bug GH-16032(ldap_modify_batch() 中的各种空指针解除引用)。
    • 修复了 bug GH-16101(当 LDAPs 数组不是列表时,ldap_list()、ldap_read() 和 ldap_search() 函数发生段错误)。
    • 修复了 GH-16132(php_ldap_do_modify() 尝试释放未由 ZMM 分配的指针)。
    • 修复了 GH-16136(当条目不是正确的字典时,php_ldap_do_modify() 中的内存泄漏)。
  • MBString
    • 修复了 bug GH-16261(mb_convert_variables() 中的引用不变性被破坏)。
  • OpenSSL
    • 修复了 openssl_csr_new 函数的存根。
  • PCRE
    • 修复了 bug GH-16189(偏移量参数下溢)。
    • 修复了 bug GH-16184(ext/pcre/php_pcre.c 中的 UBSan 地址溢出)。
  • PHPDBG
    • 修复了 bug GH-15901(phpdbg:在 i 函数上断言失败)。
    • 修复了 bug GH-16181(phpdbg:异常处理程序中的退出报告致命错误)。
  • Reflection
    • 修复了 bug GH-16187(ext/reflection/php_reflection.c 中的断言失败)。
  • SAPI
    • 修复了 bug GH-15395(php-fpm:使用 cgi-fcgi 请求时 zend_mm_heap 损坏)。
  • SimpleXML
    • 修复了 bug GH-15837(ext/simplexml/simplexml.c 中的段错误)。
  • Sockets
    • 修复了 bug GH-16267(socket_strerror 函数在 errno 参数上溢出)。
  • SOAP
    • 修复了 bug #62900(xsd 导入错误消息的命名空间错误)。
    • 修复了 bug GH-16237(克隆 SoapServer 时发生段错误)。
    • 修复了 Soap 在错误时泄漏 http_msg 的问题。
    • 修复了 bug GH-16256(ext/soap/php_encoding.c:460 中的断言失败)。
    • 修复了 bug GH-16259(当类映射实例化失败时,Soap 发生段错误)。
  • Standard
    • 修复了 bug GH-15613(在 unpack 调用十六进制字符串重复时溢出)。
    • 修复了 bug GH-15937(在流超时选项值上溢出)。
    • 修复了 bug GH-16053(Zend/zend_hash.c 中的断言失败)。
  • Streams
    • 修复了 bug GH-15908GH-15026(streams.c 中的泄漏/断言失败)。
    • 修复了 bug GH-15980(main/streams/streams.c 中的有符号整数溢出)。
  • TSRM
    • 防止关闭无关的句柄。
  • XML
    • 修复了 bug GH-15868(异常后 xml_parse_into_struct 中的断言失败)。

版本 8.2.24

  • CGI
    • 修复了 bug GHSA-p99j-rfp4-xqvq(绕过 CVE-2024-4577,参数注入漏洞)。(CVE-2024-8926)
    • 修复了 bug GHSA-94p6-54jq-9mwp(由于环境变量冲突,cgi.force_redirect 配置可绕过)。(CVE-2024-8927)
  • 核心
    • 修复了 bug GH-15408(MSan 在 zend_max_execution_timer 上的误报)。
    • 修复了 bug GH-15515(配置错误 grep 非法选项 q)。
    • 修复了 bug GH-15514(配置错误:genif.sh:语法错误)。
    • 修复了 bug GH-15565(编译期间使用 --disable-ipv6 会产生错误 EAI_SYSTEM 未找到)。
    • 修复了 bug GH-15587(arm 32 位上的 CRC32 API 构建错误)。
    • 修复了 bug GH-15330(不要扫描生成器帧超过一次)。
    • 修复了内部枚举的常量 AST 中未初始化的 lineno。
  • Curl
    • 修复了 bug GH-15547(curl_multi_select 函数在 timeout 参数上溢出)。
  • DOM
    • 修复了 bug GH-15551(ext/dom/xml_common.h 中的段错误(访问空指针))。
  • Fileinfo
    • 修复了 bug GH-15752(对于空文件名参数,finfo_file 函数的错误消息不正确)。
  • FPM
    • 修复了 bug GHSA-865w-9rf3-2wh5(子进程的日志可能被更改)。(CVE-2024-9026)
  • MySQLnd
    • 修复了 bug GH-15432(查询向量时堆损坏)。
  • Opcache
    • 修复了 bug GH-15661(Zend/Optimizer/zend_inference.c 中访问空指针)。
    • 修复了 bug GH-15658(Zend/zend_vm_execute.h 中的段错误)。
  • SAPI
    • 修复了 bug GHSA-9pqp-7h25-4f32(多部分表单数据解析错误)。(CVE-2024-8925)
  • SOAP
    • 修复了 bug #73182(PHP SOAPClient 不支持以数组形式表示的流上下文 HTTP 头)。
  • Standard
    • 修复了 bug GH-15552(ext/standard/scanf.c 中的有符号整数溢出)。
  • Streams
    • 修复了 bug GH-15628(php_stream_memory_get_buffer() 未以零结尾)。

版本 8.2.23

  • 核心
    • 修复了 bug GH-15020(Zend/Optimizer/escape_analysis.c 中的内存泄漏)。

    • 修复了错误 GH-15023(Zend/zend_ini.c 中的内存泄漏)。
    • 修复了错误 GH-13330(有条件地追加 -Wno-implicit-fallthrough 标志)。
    • 修复了 network.c 中的未初始化内存问题。
    • 修复了错误 GH-15108(在关闭期间销毁生成器时发生段错误)。
    • 修复了错误 GH-15275(在挂起的生成器委托的 GC 期间崩溃)。
  • Curl
    • 修复了 curl_error 返回空字符串的情况。
  • DOM
    • 修复了在移除文档类型并使用 foreach 迭代时出现的 UAF 问题。
  • FFI
    • 修复了错误 GH-14286(ffi 枚举类型(当枚举没有名称时)导致内存泄漏)。
  • Hash
    • 修复了在 xxh3 中为 shm 中的数组转换数组数据时发生的崩溃问题。
  • Intl
    • 修复了错误 GH-15087(IntlChar::foldCase() 的 $option 不是可选的)。
  • Opcache
    • 修复了错误 GH-13817(第 4 步之后启用观察者时发生段错误)。
    • 修复了错误 GH-13775(可能与 opcache SHM 布局相关的内存泄漏)。
  • Output
    • 修复了错误 GH-15179(ext/standard/url_scanner_ex.re 中的段错误(空指针取消引用))。
  • PDO_Firebird
    • 修复了 firebird_handle_get_attribute() 中错误的贯穿路径。
  • PHPDBG
    • 修复了错误 GH-13199(在使用 libedit/readline 的 phpdbg 本地控制台模式下,EOF 发出冗余提示)。
    • 修复了错误 GH-15268(phpdbg 中的堆缓冲区溢出(zend_hash_num_elements() Zend/zend_hash.h))。
    • 修复了错误 GH-15210 监视点分配上的使用后释放问题。
  • Soap
    • 修复了错误 #55639(摘要身份验证不起作用)。
    • 修复了 SoapFault 属性销毁问题。
    • 修复了错误 GH-15252(在使用 classmap 构造函数选项时,PHP 8.3.9 之后的 SOAP XML 损坏)。
  • Standard
    • 修复了在流函数中传递非有限超时值的问题。
    • 修复了 GH-14780 p(f)sockopen 超时溢出问题。
  • Streams
    • 修复了错误 GH-15028(ext/phar/stream.c 中的内存泄漏)。
    • 修复了错误 GH-15034(对于大于 2GB 的文件,stream_notification_callback byte_max 参数出现整数溢出)。
  • Tidy
    • 修复了 ext/tidy 基目录限制代码中的内存泄漏。

版本 8.2.22

  • 核心
    • 修复了错误 GH-13922(修复了对 sysconf(_SC_GETPW_R_SIZE_MAX) == -1 的系统的支持)。
    • 修复了错误 GH-14626(修复了大型块的 is_zend_ptr())。
    • 修复了错误 GH-14590(FPM 测试 gh13563-conf-bool-env.phpt 中的内存泄漏)。
    • 修复了 OSS-Fuzz #69765。
    • 修复了错误 GH-14741(Zend/zend_types.h 中的段错误)。
    • 修复了错误 GH-14969(使用 __toString() 进行属性强制转换时的使用后释放)。
  • Dom
    • 修复了错误 GH-14702(DOMDocument::xinclude() 崩溃)。
  • Gd
    • ext/gd/tests/gh10614.phpt:如果未提供 PNG 支持,则跳过。
    • 恢复了警告而不是致命错误。
  • LibXML
    • 修复了错误 GH-14563(使用 libxml2 v2.13.0 构建失败)。
  • Opcache
    • 修复了错误 GH-14550(启用 Zend DTrace 时,没有关于 opcache.jit 被隐式禁用的警告消息)。
  • Output
    • 修复了错误 GH-14808(使用空输出缓冲区时,Zend/zend_string.h 中出现意外的空指针)。
  • PDO
    • 修复了错误 GH-14712(使用 PDORow 访问空属性时崩溃)。
  • Phar
    • 修复了错误 GH-14603(zip 条目中的空字符串)。
  • PHPDBG
    • 修复了错误 GH-14596(使用 ASAN 和 ZEND_RC_DEBUG=1 时崩溃)。
    • 修复了错误 GH-14553(echo 输出在空字节处被截断)。
  • Shmop
    • 修复了错误 GH-14537(shmop Windows 11 使进程崩溃)。
  • SimpleXML
    • 修复了 bug GH-14638(XML 解析失败后出现空指针引用)。
  • SPL
    • 修复了错误 GH-14639(ext/spl/spl_observer.c 中空指针内的成员访问)。
  • Standard
    • 修复了 32 位 wordwrap 测试失败问题。
    • 修复了错误 GH-14774(time_sleep_until 溢出)。
  • Tidy
    • 修复了 tidy_repair_file() 中的内存泄漏。
  • 全项目
    • 修复了与 libxml2 2.13.2 的兼容性。
  • XML
    • 迁移远离即将弃用的 libxml 字段。
    • 修复了错误 GH-14834(使用 --with-pear 安装 PHP 时出错)。

版本 8.2.21

  • 核心
    • 修复了错误 GH-14315(不兼容的指针类型警告)。
    • 修复了错误 GH-12814(在 Apple Silicon 上运行时,MacOS 14 上过早达到 max_execution_time)。
    • 修复了错误 GH-14387(在 Generator->throw() 期间,在生成的值的析构函数中进行堆栈回溯时崩溃)。
    • 修复了错误 GH-14456(尝试使用私有构造函数初始化类会调用析构函数)。
    • 修复了错误 GH-14549(fclose 的不兼容函数指针类型)。
  • BCMatch
    • 修复了错误(bcpowmod() 当 mod = -1 时返回 1,而应该返回 0)。
  • Curl
    • 修复了错误 GH-14307(使用 curl 8.8.0 时,测试 curl_basic_024 失败)。
  • DOM
    • 修复了错误 GH-14343(xml 和 dom 中的内存泄漏)。
  • FPM
    • 修复了错误 GH-14037(PHP-FPM ping.path 和 ping.response 配置变量在状态池中被忽略)。
  • GD
    • 修复了 imagecolorset() 的参数数量。
  • Intl
    • 修复了 SpoofChecker 中的引用处理。
  • MySQLnd
    • 部分修复了错误 GH-10599(在类中使用自引用匿名函数以及活动的 mysqli 连接时,Apache 在 Windows 上崩溃)。
  • Opcache
    • 修复了错误 GH-14267(opcache.jit=off 不允许在运行时启用 JIT)。
    • 修复了 FreeBSD/amd64 上 JIT 中的 TLS 访问问题。
    • 修复了错误 GH-11188(在 ARM64 中构建 TSRM 时出错)。
  • PDO ODBC
    • 修复了错误 GH-14367(SDWORD 类型与 iODBC 不兼容)。
  • PHPDBG
    • 修复了错误 GH-13681(在监视点添加失败时发生段错误)。
  • Soap
    • 修复了错误 #47925(PHPClient 无法解压缩响应)。
    • 修复了缺少的错误恢复代码。
    • 修复了如果两次调用 SoapServer::setObject() 则出现的内存泄漏。
    • 修复了如果两次调用 SoapServer::setClass() 则出现的内存泄漏。
    • 修复了在 ext-soap 中读取 zlib ini 设置的问题。
    • 修复了使用字符串函数名称查找时出现的内存泄漏。
    • 修复了错误 #69280(SoapClient classmap 不支持完全限定的类名)。
    • 修复了错误 #76232(SoapClient Cookie 标头分号)。
    • 修复了在两次调用 SoapFault::__construct() 时出现的内存泄漏。
  • Sodium
    • 修复了 ext/sodium 中某些函数失败时的内存泄漏。
  • SPL
    • 修复了错误 GH-14290(扩展 spl 中空指针内的成员访问)。
  • Standard
    • 修复了错误 GH-14483(修复了检查抽象命名空间 Unix 套接字长度时的越界错误)。
  • Streams
    • 修复了错误 GH-11078(PHP 致命错误触发指针被释放但未分配以及 malloc: ptr 错误的双重释放)。

版本 8.2.20

  • CGI
    • 修复了 Windows 上的缓冲区限制,用 _read 替换了 read 调用的使用。
    • 修复了错误 GHSA-3qgc-jrrr-25jv(绕过 CVE-2012-1823,PHP-CGI 中的参数注入)。(CVE-2024-4577)
  • CLI
    • 修复了错误 GH-14189(PHP 交互式 Shell 输入状态错误地处理带引号的 heredoc 字面量)。
  • 核心
    • 修复了错误 GH-13970(对于非编译时表达式,#[Attribute] 标志类型的验证不正确)。
    • 修复了 bug GH-14140(Apple Silicon 硬件上范围操作中的浮点错误)。
  • DOM
    • 修复了在实体声明被移除但仍然存在实体引用的情况下发生的崩溃问题。
    • 修复了 C14N 中未正确处理引用的问题。
    • 修复了在迭代器耗尽时调用 childNodes next() 导致的崩溃问题。
    • 修复了在处理包含文本节点的片段时,ParentNode::append() 中的崩溃问题。
  • FFI
    • 修复了 bug GH-14215(无法在带有 apache2handler 的 CRLF 标头文件中使用 FFI::load)。
  • Filter
    • 修复了错误 GHSA-w8qr-v226-r27w(filter_var FILTER_VALIDATE_URL 中的过滤器绕过)。(CVE-2024-5458)
  • FPM
    • 修复了错误 GH-14175(在 systemd 状态中显示十进制数字而不是科学计数法)。
  • Hash
    • ext/hash:交换 `__has_builtin` 和 `__GNUC__` 的检查顺序(高町咲)。
  • Intl
    • 修复了在没有 C++17 编译器的系统上的构建回归。
  • Ini
    • 修复了 bug GH-14100(更正了 php.ini 文件中的拼写错误)。
  • MySQLnd
    • 修复了错误 GH-14255(mysqli_fetch_assoc 报告嵌套查询的错误)。
  • Opcache
    • 修复了错误 GH-14109(修复了在 shm 中意外持久化内部类常量的问题)。
  • OpenSSL
    • 当使用 PKCS1 填充(OPENSSL_PKCS1_PADDING,这是默认值)时,PHP 中的 openssl_private_decrypt 函数容易受到 Marvin 攻击,除非它与包含此拉取请求更改的 OpenSSL 版本一起使用:https://github.com/openssl/openssl/pull/13817 (rsa_pkcs1_implicit_rejection)。这些更改是 OpenSSL 3.2 的一部分,并且也已反向移植到各种 Linux 发行版的稳定版本,以及从上一个版本开始为 Windows 提供的 PHP 构建中。所有分发者和构建者都应确保使用此版本,以防止 PHP 受到攻击。
  • Standard
    • 修复了错误 GHSA-9fcc-425m-g385(绕过 CVE-2024-1874)。(CVE-2024-5585)
  • XML
    • 修复了错误 GH-14124(在特定内存限制下,使用 XML 扩展时发生段错误)。
  • XMLReader
    • 修复了错误 GH-14183(XMLReader::open() 无法被重写)。

版本 8.2.19

  • 核心
    • 修复了错误 GH-13772(启用 JIT 时,观察者 fcall 处理程序中的无效 execute_data->opline 指针)。
    • 修复了错误 GH-13931(在 Zend/zend_opcode.c 中对空指针应用零偏移量)。

    • 修复了错误 GH-13942(使 zend-max-execution-timers 的行为与其他超时实现保持一致)。
    • 修复了错误 GH-14003(使用可调用转换参数时,未完成调用的清理出现问题)。
    • 修复了错误 GH-14013(configure 中错误地附加了 dnl)。
    • 修复了错误 GH-10232(如果在常量解析期间发生自动加载,则文件名和行号识别错误)。
    • 修复了错误 GH-13727(缺少 void 关键字)。
  • 纤程
    • 修复了错误 GH-13903(执行 copy() 时 ASAN 出现下溢假阳性)。
  • FPM
    • 修复了错误 GH-13563(在 FPM 配置中通过 env 设置布尔值失败)。
  • Intl
    • 修复了 icu 74 及更高版本的构建。
  • MySQLnd
    • 修复了 32 位非快速路径平台上的越界移位问题。
  • Opcache
    • 修复了跨编译单元的静态调用中不正确的假设。
  • OpenSSL
    • 修复了错误 GH-10495(OpenSSL 流上的 feof 无限期挂起)。
  • PDO SQLite
    • 修复了 GH-13984(现在在 memcmp 之前检查缓冲区大小)。
    • 修复了 GH-13998(正确管理 agg_context->val 的引用计数)。
  • Phar
    • 修复了错误 GH-13836(将 Phar 中的文件重命名为已存在的文件名会导致空指针解引用)。
    • 修复了错误 GH-13833(在 zend_hash.c 中将零偏移量应用于空指针)。
    • 修复了在调用 EVP_SignInit 之前可能出现的空指针解引用。
  • PHPDBG
    • 修复了错误 GH-13827(phpdbg_frame 中对类型为 'zval' 的空指针进行访问)。
  • Posix
    • 修复了 ext/posix 中可重入函数的使用。
  • Session
    • 修复了错误 GH-13856(ext/session/mod_files.c 中对类型为 'ps_files' 的空指针进行成员访问)。
    • 修复了错误 GH-13891(使用 session.trans_sid_hosts 与 ini_set 时出现内存泄漏和段错误)。
    • 修复了 Windows 上文件模式的缓冲区 _read/_write 大小限制。
  • Streams
    • 修复了 Windows 上 file_get_contents() 失败并显示“errno=22 无效参数”的问题。
    • 修复了错误 GH-13264(第一部分 - 流过滤器失败时的内存泄漏)。
    • 修复了错误 GH-13860(ext/openssl/xp_ssl.c 中不正确的 PHP_STREAM_OPTION_CHECK_LIVENESS case - 导致使用已失效的套接字)。
    • 修复了 musl 1.2.4 上的构建错误 - lfs64。
  • 全项目
    • 修复了 gcc-14 的 Wcalloc-transposed-args 警告。

版本 8.2.18

  • 核心
    • 修复了错误 GH-13612(使用弱引用时,析构函数中的内存损坏)。
    • 修复了错误 GH-13784(AX_GCC_FUNC_ATTRIBUTE 失败)。
    • 修复了错误 GH-13670(GC 在析构函数中创建大量对象时扩展性不佳)。
  • DOM
    • 添加了一些缺失的 ZPP 检查。
    • 修复了 XPath 评估结果中潜在的内存泄漏。
    • 修复了 DOMDocument 加载方法的 phpdoc。
  • FPM
    • 修复了 fpm_shm_free() 中不正确的检查。
  • GD
    • 修复了错误 GH-12019(在特性测试中添加 GDLIB_CFLAGS)。
  • Gettext
    • 修复了使用 gettext 0.22.5 且类别设置为 LC_ALL 时,dcgettext/dcngettext 调用引发的 sigabrt。
  • MySQLnd
    • 修复了 GH-13452(修复了握手响应 [mysqlnd])。
    • 修复了 check_mb_eucjpms() 中不正确的字符集长度。
  • Opcache
    • 修复了 GH-13508(当 op1 为 null 时,JITed QM_ASSIGN 可能会被优化掉)。
    • 修复了 GH-13712(当加载 opcache 时,调用内部特性的特性的方法时,已启用的观察者出现段错误)。
  • PDO
    • 修复了各种 PDORow 错误。
  • Random
    • 修复了错误 GH-13544(PHP 8.2 之前的版本与 mt_srand 的未知模式兼容)。
    • 修复了错误 GH-13690(使用 MT_RAND_PHP 时,全局 Mt19937 在请求之间没有正确重置)。
  • Session
    • 修复了错误 GH-13680(session_decode 出现段错误和编译错误)。
  • Sockets
    • 修复了 bug GH-13604(socket_getsockname 在套接字名称的末尾返回随机字符)。
  • SPL
    • 修复了错误 GH-13531(PHP 8.2.15 中反序列化后无法调整 SplfixedArray 的大小)。
    • 修复了错误 GH-13685(zend_string.h 中出现意外的空指针)。
  • Standard
    • 修复了错误 GH-11808(测试修改了实时文件系统)。
    • 修复了 GH-13402(添加了 mail() 的 $additional_headers 中 '\n' 的验证)。
    • 修复了错误 GH-13203(Windows 上 file_put_contents 在超过 4GB 的字符串上失败)。
    • 修复了错误 GHSA-pc52-254m-w9w7(通过 proc_open 的类似数组的 $command 参数进行命令注入)。(CVE-2024-1874)
    • 修复了错误 GHSA-wpj3-hf5j-x4v4(由于部分 CVE-2022-31629 修复导致的 __Host-/__Secure- cookie 绕过)。(CVE-2024-2756)
    • 修复了错误 GHSA-h746-cjrr-wfmr(password_verify 可能错误地返回 true,从而导致 ATO 风险)。(CVE-2024-3096)
  • XML
    • 修复了错误 GH-13517(使用 --with-expat 构建时出现多个测试失败)。

版本 8.2.17

  • 核心
    • 修复了关闭时 ZTS 持久资源崩溃的问题。
  • Curl
    • 修复了由于 libcurl 8.6.0 中字符串更改导致的测试失败。
  • DOM
    • 修复了 DOMNodeList 和 DOMNodeMap 的维度中的引用访问。
  • Fileinfo
    • 修复了错误 GH-13344(finfo::buffer(): 无法识别数据 0:(null),回退)。
  • FPM
    • 修复了错误 #75712(php-fpm 中的 getenv 不应读取 $_ENV、$_SERVER)。
  • GD
    • 修复了错误 GH-12019(系统 gd 库中图像格式的检测)。
  • MySQLnd
    • 修复了错误 GH-11950([mysqlnd] 修复了如果已设置 CR_SERVER_GONE_ERROR,则不将 CR_MALFORMED_PACKET 设置为错误的问题)。
  • PGSQL
    • 修复了错误 GH-13354(pg_execute/pg_send_query_params/pg_send_execute 传递引用时使用空值)。
  • Standard
    • 修复了作为哈希到字符串(不区分大小写)比较的数组键的第二个操作数缓冲区大小的类型错误(尽管目前未使用)。

版本 8.2.16

  • 核心
    • 修复了 zend-max-execution-timers 构建中的计时器泄漏。
    • 修复了错误 GH-12349(ARM 上使用 mold 链接失败)。
    • 修复了错误 GH-13097(trigger_error/抛出的异常中的匿名类引用)。
    • 修复了错误 GH-13215(GCC 14 构建失败)。
  • Curl
    • 修复了 curl_multi_init() 中缺少的错误检查。
  • FPM
    • 修复了错误 GH-12996(路径中存在加号时,Apache ProxyPassMatch 的 SCRIPT_NAME 不正确)。
  • GD
    • 修复了错误 GH-10344(imagettfbbox(): 无法找到/打开字体 UNC 路径)。
    • 修复了错误 GH-10614(旋转 90 度时,imagerotate 会使图片全部变黑)。
  • MySQLnd
    • 修复了错误 GH-12107(两次运行存储过程(返回结果集)时,PHP 会崩溃)。
  • Opcache
    • 修复了错误 GH-13232(关闭 JIT 但仍开启 JIT_debug 时会报告段错误)。
  • OpenSSL
    • 修复了未设置 OPENSSL_NO_ENGINE 时 LibreSSL 的未定义引用。(David Carlier)。
  • PDO_Firebird
    • 修复了 GH-13119(更改为使用 `H` 格式将浮点型和双精度型值转换为字符串)。
  • Phar
    • 修复了错误 #71465(PHAR 不知道 litespeed)。
    • 修复了错误 GH-13037(PharData 错误地解压 zip 文件)。
  • Random
    • 修复了错误 GH-13138(Randomizer::pickArrayKeys() 无法检测到损坏的引擎)。
  • Session
    • 修复了错误 GH-12504(自动加载器出现致命错误时,写入损坏的会话)。
  • Streams
    • 修复了错误 GH-13071(使用可映射源流复制大文件可能会耗尽可用内存并失败)。

版本 8.2.15

  • 核心
    • 修复了错误 GH-12953(加载包含超过 11k 个元素的 composer 类映射时,SSA 完整性验证出现假阳性失败)。
    • 修复了错误 GH-12966(缺少交叉编译的第 3 个参数,因此 Autoconf 不会发出警告)。
  • Cli
    • 修复了使用路由器脚本和 max_input_time 时内置 Web 服务器中的不正确超时。
  • FFI
    • 修复了错误 GH-9698(stream_wrapper_register 与 FFI\CData 发生冲突)。
    • 修复了错误 GH-12905(FFI::new 与观察者发生冲突)。
  • Intl
    • 修复了 GH-12943(IntlDateFormatter::__construct 接受 'C' 作为有效的语言环境)。
  • Hash
    • 修复了错误 GH-12936(如果对超过 4GiB 的字符串使用 sha512,则 hash() 函数会无限期挂起)。
  • ODBC
    • 修复了 Apache 关闭时带有持久连接的崩溃。
  • Opcache
    • 修复了 oss-fuzz #64727(当 DIM 与结果相同时,JIT 未定义数组键警告可能会覆盖 DIM 为 NULL)。
    • 添加了对 SELinux mprotect execheap 问题的解决方法。请参阅 https://bugzilla.kernel.org/show_bug.cgi?id=218258。
  • OpenSSL
    • 修复了错误 GH-12987(openssl_csr_sign 可能会在错误时泄漏新证书)。
  • PDO
    • 修复了 GH-12969(修复了 PDO::getAttribute() 以获取 PDO::ATTR_STRINGIFY_FETCHES)。
  • PDO_ODBC
    • 修复了错误 GH-12767(无法使用 setAttribute() 打开自动提交模式)。
  • PGSQL
    • 修复了 auto_reset_persistent 处理和 allow_persistent 类型。
    • 修复了错误 GH-12974(使用 pg_pconnect() 时 Apache 在关闭时崩溃)。
  • Phar
    • 修复了错误 #77432(包含 phar 文件时出现分段错误)。
  • PHPDBG
    • 修复了错误 GH-12962(在 phpdbg_prompt.c 中对 init_file 进行双重释放)。
  • SimpleXML
    • 修复了获取 SimpleXMLElement 未初始化属性的地址导致崩溃的问题。
  • Tidy
    • 修复了错误 GH-12980(tidynode.props.attribute 缺少“布尔属性”和空属性)。

版本 8.2.14

  • 核心
    • 修复了 oss-fuzz #54325(在带有恶意错误处理程序的 var-var 中释放后使用名称)。
    • 修复了 oss-fuzz #64209(在 php_message_handler_for_zend 中就地修改文件名)。
    • 修复了错误 GH-12758 / GH-12768(ZEND_FUNC_GET_ARGS 和 ZEND_BIND_STATIC 内的 OOM 处理程序中的无效操作码)。
    • 修复了各种缺少的 NULL 检查。
    • 修复了错误 GH-12835(内部 __call 上 call->extra_named_params 的泄漏)。
  • 日期
    • 修复了在解析非常大(或非常小)的 Unix 时间戳时发生的不可能的整数溢出。
  • DOM
    • 修复了 bug GH-12616(DOM:删除 XMLNS 命名空间节点会导致无效的默认:前缀)。
  • FPM
    • 修复了错误 GH-12705(fpm_status_export_to_zval 中出现分段错误)。
  • FTP
    • 修复了错误 GH-9348(FTP 和 SSL 会话重用)。
  • Intl
    • 修复了 bug GH-12635(使用 ICU 74.1 时,Test bug69398.phpt 失败)。
  • LibXML
    • 修复了 bug GH-12702(从源代码构建时,libxml2 2.12.0 出现问题)。
    • 修复了 libxml2 2.12.0 的测试失败。
  • MySQLnd
    • 避免使用未初始化的结构体。
    • 修复了错误 GH-12791(MySQLnd 调试代码中可能存在对 NULL 的解引用)。
  • Opcache
    • 修复了 JIT 错误(函数 JIT 在发出无效偏移量错误的同时也发出“未初始化的字符串偏移量”警告)。
    • 修复了 JIT 错误(JIT 在抛出错误的同时也发出“尝试为非对象分配属性”警告)。
  • OpenSSL
    • 修复了 bug #50713(openssl_pkcs7_verify() 可能会忽略不受信任的 CA)。
  • PCRE
    • 修复了 bug GH-12628(gh11374 测试在 Alpinelinux 上失败)。
  • PDO PGSQL
    • 修复了 PDO::pgsqlGetNotify() 中 $fetchMode 的默认值 (kocsismate)
  • PGSQL
    • 修复了 bug GH-12763 pg_untrace 的错误参数类型。
  • PHPDBG
    • 修复了 bug GH-12675(phpdbg_prompt.c 中的内存泄漏)。
  • SOAP
    • 修复了错误 GH-12838([SOAP] 未删除临时 WSDL 缓存文件)。
  • SPL
    • 修复了 bug GH-12721(SplFileInfo::getFilename() 在与 GlobIterator 和没有目录分隔符组合使用时发生段错误)。
  • SQLite3
    • 修复了 bug GH-12633(使用 sqlite 3.44.0 时,sqlite3_defensive.phpt 失败)。
  • Standard
    • 修复了 syslog 设备处理中的内存泄漏。
    • 修复了 bug GH-12621(在 vhost 中配置时,browscap 发生段错误)。
    • 修复了 bug GH-12655(proc_open() 没有考虑描述符数组中的引用)。
  • Streams
    • 修复了 bug #79945(imagecreatefrompng 中的流包装器导致段错误)。
  • Zip
    • 修复了 bug GH-12661(ZipArchive::addGlob remove_path 选项行为不一致)。

版本 8.2.13

  • 核心
    • 修复了未内部化枚举案例名称的双重释放。
    • 修复了 bug GH-12457(使用单个字符的 needle 时,stripos 的结果不正确)。
    • 修复了 bug GH-12468(通过 trait 覆盖静态属性时,doc_comment 的双重释放)。
    • 修复了由 FFI 对象的弱引用引起的段错误。
    • 修复了 max_execution_time:不要删除未初始化的计时器。

    • 修复了错误 GH-12558(如果类名以 N 开头,则 Arginfo 在使用命名空间类作为返回值类型时会软换行)。
  • DOM
    • 修复了使用抽象类时 registerNodeClass 导致崩溃的问题。
    • 添加了缺少的空指针错误检查。
    • 修复了 php:function() 回调的验证逻辑。
  • Fiber
    • 修复了错误 GH-11121(ReflectionFiber 出现段错误)。
  • FPM
    • 修复了错误 GH-9921(在 FPM 配置文件中加载扩展不会注册模块处理程序)。
    • 修复了错误 GH-12232(FPM:在没有 opcache 的情况下动态加载扩展导致段错误)。
    • 修复了错误 #76922(FastCGI 在 FCGI_GET_VALUES 后终止连接)。
  • Intl
    • 删除了 IntlDateFormatter::construct 上的 BC 中断,该中断在使用无效语言环境时会抛出异常。
  • Opcache
    • 在无法启用 JIT 时添加了警告。
    • 修复了错误 GH-8143(由于磁盘文件缓存损坏,升级到 8.1.3 后 zend_accel_inheritance_cache_find 中出现崩溃)。
  • OpenSSL
    • 修复了错误 GH-12489(openssl_cms_verify 中缺少 sigbio 创建检查)。
  • PCRE
    • 修复了错误 GH-11374(回退上游修复,使用 -d pcre.jit=0 时 preg_match 的结果不同)。
  • SOAP
    • 修复了错误 GH-12392(SoapClient::__getTypes 出现段错误)。
    • 修复了错误 #66150(SOAP WSDL 缓存竞争条件导致段错误)。
    • 修复了错误 #67617(SOAP 在 ENOSPC 时留下不完整的缓存文件)。
    • 修复了 SOAP 缓存中不正确的 uri 检查。
    • 修复了带引用计数属性和数组时的段错误和断言失败。
    • 修复了持久编码器边缘情况下的潜在崩溃。
    • 修复了错误 #75306(SoapClient 中的内存泄漏)。
  • Streams
    • 修复了错误 #75708(getimagesize 使用“&$imageinfo”在 StreamWrappers 上失败)。
  • XMLReader
    • 添加了缺少的空指针错误检查。
  • XMLWriter
    • 添加了缺少的空指针错误检查。
  • XSL
    • 添加了缺少的模块依赖项。
    • 修复了 php:function() 回调的验证逻辑。

版本 8.2.12

  • 核心
    • 修复了错误 GH-12207(当类使用带有文档块的 trait 时出现内存泄漏)。
    • 修复了错误 GH-12215(模块条目被覆盖导致 ext/dom 中出现类型错误)。
    • 修复了错误 GH-12273(__builtin_cpu_init 检查)。
    • 修复了错误 #80092(ZTS + 预加载 = 在关闭时出现段错误)。
  • CLI
    • 确保存在单个 Date 头。
  • CType
    • 修复了错误 GH-11997(在 PHP 8.1 或更高版本中,ctype_alnum 速度慢了 5 倍)。
  • DOM
    • 恢复旧的命名空间协调行为。
    • 修复了错误 GH-8996(PHP ^8.1 上的 DOMNode 序列化)。
  • Fileinfo
    • 修复了错误 GH-11891(fileinfo 对某些 svg 文件返回 text/xml)。
  • Filter
    • 修复了带有 FILTER_CALLBACK 的显式 FILTER_REQUIRE_SCALAR(ilutov)
  • Hash
    • 修复了错误 GH-12186(复制/克隆已完成的 HashContext 时出现段错误)。
  • Intl
    • 修复了错误 GH-12243(IntlDateFormatter::construct 出现段错误)。
    • 修复了错误 GH-12282(IntlDateFormatter::construct 应该在无效的区域设置上抛出异常)。
  • MySQLnd
    • 修复了错误 GH-12297(PHP 启动:未知行上的无效库(可能不是 PHP 库)'mysqlnd.so')。
  • Opcache
    • 修复了已删除文件上的 opcache_invalidate()。
    • 修复了错误 GH-12380(JIT + 私有数组属性访问在闭包内部访问子类中的私有属性)。
  • PCRE
    • 修复了错误 GH-11956(回退上游修复,启用 JIT 的 PCRE 正则表达式给出不同的结果)。
  • SimpleXML
    • 修复了错误 GH-12170(无法在 SimpleXML 中使用带有注释的 xpath)。
    • 修复了错误 GH-12223(实体引用在 var_dump/print_r 中产生无限循环)。
    • 修复了错误 GH-12167(无法在 SimpleXML 中获取处理指令内容)。
    • 修复了错误 GH-12169(无法在 SimpleXML 中获取注释内容)。
  • Streams
    • 修复了错误 GH-12190(使用地址和端口均为 0 绑定 ipv4 地址)。
  • XML
    • 修复了 xml_parse_into_struct() 存根的返回类型。
    • 修复了连续调用 xml_parse_into_struct() 两次时的内存泄漏。
  • XSL
    • 修复了使用 SimpleXML 时 XSLTProcessor::transformToDoc 返回值的类型错误。

版本 8.2.11

  • 核心
    • 修复了错误 GH-11937(包含对象的常量 AST)。
    • 修复了错误 GH-11790(在 riscv64 上,如果实际需要,则需要 libatomic)。
    • 修复了错误 GH-11876:ini_parse_quantity() 接受无效的数量。
    • 修复了错误 GH-12073(释放未完全初始化的闭包时出现段错误)。
    • 修复了错误 GH-12060(内部迭代器回绕处理程序被调用两次)。
    • 修复了错误 GH-12102(在函数调用中对 TMP 值使用数组访问时出现不正确的编译错误)。
  • DOM
    • 修复了设置无效 DOMDocument 编码时的内存泄漏。
  • Iconv
    • 修复了 NetBSD 的构建,它仍然使用旧的 iconv 签名。
  • Intl
    • 修复了错误 GH-12020(MessageFormatter::formatMessage() 失败后,intl_get_error_message() 出现故障)。
  • MySQLnd
    • 修复了错误 GH-10270(通过 SSL 连接失败时出现无效的错误消息:“尝试通过(null)连接”)。
  • ODBC
    • 修复了 SQLPrepare 失败时的内存泄漏。
    • 修复了持久过程 ODBC 连接未关闭的问题。
  • SimpleXML
    • 修复了错误 #52751(不支持 XPath processing-instruction() 函数)。
  • SPL
    • 修复了错误 GH-11972(8.1.18 中的 RecursiveCallbackFilterIterator 回归)。
  • SQLite3
    • 修复了错误 GH-11878(SQLite3 回调函数使用可调用数组导致内存泄漏)。

版本 8.2.10

  • CLI
    • 修复了错误 GH-11716(使用 ZEND_RC_DEBUG=1 编译时,cli 服务器在收到 SIGINT 信号后崩溃)。
    • 修复了错误 GH-10964(改进关于内置服务器的手册页)。
  • 日期
    • 修复了错误 GH-11416(在传递未初始化的对象时,DatePeriod 出现崩溃)。
  • 核心
    • 修复了配置时间时的 strerror_r 检测。
    • 修复了使用 DNF 类型作为类型的 trait 属性未正确绑定。
    • 修复了如果从内部 trait 复制,trait 属性类型不会被分配到 arena 中。
    • 修复了延迟类加载期间属性 DNF 类型的深度复制。
    • 修复了未分配到 arena 的类型的 DNF 类型的内存释放。
  • DOM
    • 修复了 DOMEntity 字段获取器错误。
    • 修复了 DOMElement::setAttributeNodeNS 中不正确的属性存在性检查。
    • 修复了 DOMCharacterData::replaceWith() 使用自身的情况。
    • 修复了 DOMParentNode 方法的空参数情况。
    • 修复了错误 GH-11791(DOMDocument::xmlStandalone 的错误默认值)。
    • 修复了 DOMDocument 上的 json_encode 结果。
    • 修复了在 DOM 类上手动调用 __construct()。
    • 修复了错误 GH-11830(ParentNode 方法应该提前执行其检查)。
    • 修复了 replaceWith 的可行下一个同级搜索。
    • 修复了当子节点消失时调用 DOMParentNode::prepend() 导致的段错误。
  • FFI
    • 修复了使用 FFI::cdef()->new(...) 时泄漏定义的问题。
  • Hash
    • 修复了 hash_pbkdf2() 中的未初始化值使用问题,修复了签名中缺少的 $options 参数。
  • MySQLnd
    • 修复了错误 GH-11440(通过 SSL 对 sha256_password 帐户进行身份验证失败)。
    • 修复了错误 GH-11438(mysqlnd 无法使用超过 19 个字符的密码对使用 sha256_password 帐户进行身份验证)。
    • 修复了错误 GH-11550(当响应字段发生变化时,MySQL 语句具有空查询结果,还会出现段错误)。
    • 修复了连接断开时出现的无效错误消息“Malformed packet”。
  • Opcache
    • 修复了错误 GH-11715(opcache.interned_strings_buffer 或者没有效果,或者 opcache_get_status() / phpinfo() 错误)。
    • 如果正在进行重启,则避免在从 shm 加载脚本时添加不必要的读取锁。
  • PCNTL
    • 将接收 SIGCHLD 信号的行为恢复到 8.1.22 之前的行为。
  • SPL
    • 修复了错误 #81992(SplFixedArray::setSize() 导致使用后释放)。
  • Standard
    • 防止 number_format 中的 $decimals 出现整数溢出。
    • 修复了错误 GH-11870(修复截断 tempnam 前缀时的越界错误)(athos-ribeiro)

版本 8.2.9

  • 构建
    • 修复了错误 GH-11522(PHP 版本检查使用 '-' 分隔符失败)。
  • CLI
    • 修复了中断的 CLI 输出导致进程退出的问题。
  • 核心
    • 修复了 oss-fuzz #60011(按引用传递的空安全运算符的错误编译)。
    • 修复了 else 块上 JMP 指令的行号。
    • 修复了在 assert 上使用 ??= 时出现的未初始化值使用问题。
    • 修复了 oss-fuzz #60411(修复箭头函数的双重编译)。
    • 修复了 11.0 版本之前的 FreeBSD 的构建。
  • Curl
    • 修复了将无效回调函数传递给 CURLMOPT_PUSHFUNCTION 时发生的崩溃。
  • 日期
    • 修复了错误 GH-11368(Date modify 返回无效日期时间)。
    • 修复了错误 GH-11600(无法解析包含(窄)不间断空格字符的时间字符串)。
    • 修复了错误 GH-11854(DateTime:createFromFormat 停止解析带额外空格的日期时间)。
  • DOM
    • 修复了错误 GH-11625(DOMElement::replaceWith() 不用 DOMDocumentFragment 替换节点,而是只删除节点或根据 libxml2 版本导致包装 <></>)。
  • Fileinfo
    • 修复了错误 GH-11298(finfo 对 xz 文件返回错误的 mime 类型)。
  • FTP
    • 修复了 "overwrite" 上下文选项检查。
    • 修复了错误 GH-10562(连续使用 ftp_nb_fget 导致内存泄漏和无效状态)。
  • GD
    • 修复了大部分外部 libgd 测试失败。
  • Intl
    • 修复了 MessageFormatter::format() 在失败时出现的内存泄漏。
  • Libxml
    • 修复了 GHSA-3qrf-m4j2-pcrr(在不启用外部实体加载的情况下,XML 中的外部实体加载的安全问题)。(CVE-2023-3823)
  • MBString
    • 修复了 GH-11300(许可证问题:受限的 Unicode 许可证头)。
  • Opcache
    • 修复了错误 GH-10914(使用 Enum 和 Callback 函数的 OPcache 导致段错误)。
    • 如果无法分配加速全局变量,则防止潜在的死锁。
  • PCNTL
    • 修复了错误 GH-11498(SIGCHLD 并不总是从 proc_open 返回)。
  • PDO
    • 修复了 GH-11587(在 php8.1 之后,当 PDO::ATTR_EMULATE_PREPARES 为真且 PDO::ATTR_STRINGIFY_FETCHES 为真时,小数零不再填充)。
  • PDO SQLite
    • 修复了 GH-11492(使测试失败:ext/pdo_sqlite/tests/bug_42589.phpt)。
  • Phar
    • 在 phar 工具中添加了对 EVP_VerifyUpdate() 的缺少检查。
    • 修复了 GHSA-jqcx-ccgc-xwhv(phar_dir_read() 中的缓冲区管理不当)。(CVE-2023-3824)
  • PHPDBG
    • 修复了错误 GH-9669(phpdbg -h 选项未列出 -z 选项)。
  • Session
    • 删除了用于传输会话 ID 的已损坏的 URL 支持。
  • Standard
    • 修复了对象图中两次出现的 RC1 对象的序列化。
  • Streams
    • 修复了错误 GH-11735(从自身注销用户流包装器时出现使用后释放)。
  • SQLite3
    • 修复了 SQLite3Stmt::__construct 中替换的错误处理。
  • XMLReader
    • 修复了 GH-11548(在激活观察者的情况下,非静态调用 XMLReader::open 或 XMLReader::XML 时出现参数损坏)。

版本 8.2.8

  • CLI
    • 修复了错误 GH-11246(cli/get_set_process_title 在 MacOS 上失败)。
  • 核心
    • 修复了 riscv64 架构/GCC 12 的构建。
  • Curl
    • 修复了错误 GH-11433(无法将 CURLOPT_ACCEPT_ENCODING 设置为 NULL)。
  • 日期
    • 修复了错误 GH-11455(自定义对象日期属性导致段错误)。
  • DOM
    • 修复了错误 GH-11288GH-11289GH-11290GH-9142(DOMExceptions 和 replaceWith 导致的段错误)。
    • 修复了错误 GH-10234(设置 DOMAttr::textContent 会导致属性值为空)。
    • 修复了 DOMNodeList::item 存根文件中的返回值。

    • 修复了 DOMDocument::getElementsByTagNameNS 使用 '*' 命名空间时的规范合规性错误。
    • 修复了 DOMElement::append() 和 DOMElement::prepend() 的层次结构检查。
    • 修复了 bug GH-11347(在 xpath 查询中调用静态方法时出现内存泄漏)。
    • 修复了 bug #67440(DOMDocumentFragment 的 append_node 不会协调命名空间)。
    • 修复了 bug #81642(DOMChildNode::replaceWith() 在用节点本身替换节点时出现 bug)。
    • 修复了 bug #77686(已移除的元素仍会被 getElementById 返回)。
    • 修复了 bug #70359(对 DOMAttr 使用 print_r() 会导致 php_libxml_node_free_list() 中出现段错误)。
    • 修复了 bug #78577(DOMNameSpace 调试信息处理程序中出现崩溃)。
    • 修复了 getAttributeNodeNS() 的生命周期问题。
    • 修复了克隆命名空间声明时出现的“无效状态错误”。
    • 修复了 bug #55294 和 #47530 和 #47847(各种命名空间协调问题)。
    • 修复了 bug #80332(DOMNamedNodeMap 的数组访问功能完全损坏)。
  • Opcache
    • 修复了 zend_shared_alloc_startup() 中的分配循环。
    • 使用 ALLOC_FALLBACK 时,smm_shared_globals 出现访问冲突。
    • 修复了 bug GH-11336(即使 opcache.file_cache_only=1,php 仍然尝试解锁共享内存 ZendSem,但它从未被锁定)。
  • OpenSSL
    • 修复了 bug GH-9356 subjectAltNames 中 IPv6 地址字段的验证不完整(James Lucas,Jakub Zelenka)。
  • PCRE
    • 修复了 preg_replace_callback_array() 的模式验证。
  • PGSQL
    • 修复了 pg_trace 出现间歇性段错误的问题。
  • Phar
    • 修复了 FreeBSD 中 phar 生成时的交叉编译检查。
  • SPL
    • 修复了 bug GH-11338(SplFileInfo 在有多个斜杠时 getBasename 返回空值)。
  • Standard
    • 修复了 array_merge_recursive() 中对 NULL 指针的访问。
    • 修复了 array_multisort() 中的异常处理。
  • SQLite3
    • 修复了 bug GH-11451(包含重复键的无效关联数组)。

版本 8.2.7

  • 核心
    • 修复了 bug GH-11152(无法为包含保留类名的命名空间创建别名)。
    • 修复了 bug GH-9068(条件跳转或移动依赖于未初始化的值)。
    • 修复了 bug GH-11189(在 zend_hash_do_resize 中超出内存限制会使数组处于无效状态)。
    • 修复了 bug GH-11063(在旧版本的 GCC 上出现编译错误)。
    • 修复了 bug GH-11222(在重新散列期间,按引用进行 foreach 可能会跳过键)。
  • 日期
    • 修复了 bug GH-11281(DateTimeZone::getName() 在偏移量中不包含秒)。
  • Exif
    • 修复了 bug GH-10834(exif_read_data() 无法读取较小的流包装器块大小)。
  • FPM
    • 修复了 bug GH-10461(由于 child->ev_std(out|err) 的释放后使用导致 PHP-FPM 段错误)。
    • 修复了 bug #64539(FPM 状态页面:query_string 未正确 JSON 编码)。
    • 修复了无效主脚本文件句柄的内存泄漏。
  • Hash
    • 修复了 bug GH-11180(hash_file() 似乎限制为 3 个参数)。
  • LibXML
    • 修复了 bug GH-11160(一些测试在使用新的 libxml 2.11.0 构建时失败)。
  • MBString
    • 修复了 bug GH-11217(在使用负偏移量和 ASCII 编码时,mb_strrpos/mb_strripos 出现段错误)。
  • Opcache
    • 修复了 bug GH-11134(不正确的匹配默认分支优化)。
    • 修复了过宽的 OR 和 AND 范围推断。
    • 修复了启用 OPcache 后缺少的类重新声明错误。
    • 修复了 bug GH-11245(在某些特定情况下,只有一个默认语句的 SWITCH 会导致段错误)。
  • PCNTL
    • 修复了 pcntl_forkx() 的最大参数数量。
  • PGSQL
    • 修复了 pg_lo_export() 的参数解析。
  • Phar
    • 修复了 bug GH-11099(交叉编译期间生成 phar.php 无法完成)。
  • Soap
    • 修复了 bug GHSA-76gg-c692-v2mw(SOAP 的 HTTP Digest 身份验证中缺少错误检查且随机字节不足)。(CVE-2023-3247)
    • 修复了 bug GH-8426(soap 扩展构建时 make test 失败)。
  • SPL
    • 修复了 bug GH-11178(spl_array_it_get_current_data 中出现段错误(PHP 8.1.18))。
  • Standard
    • 修复了 bug GH-11138(move_uploaded_file() 为源文件发出 open_basedir 警告)。
    • 修复了 bug GH-11274(在 HTTP 308 重定向后,POST/PATCH 请求切换到 GET)。
  • Streams
    • 修复了 bug GH-10031([Stream] HTTP 上的 STREAM_NOTIFY_PROGRESS 对数据的最后一部分发出不规则的通知)。
    • 修复了 bug GH-11175(流套接字超时)。
    • 修复了 bug GH-11177(将超时设置为 -1 传递给 stream_socket_accept/stream_socket_client 时,ASAN UndefinedBehaviorSanitizer)。

版本 8.2.6

  • 核心
    • 修复了常量表达式中不一致的浮点数取反。
    • 修复了 bug GH-8841(php-cli 调用格式错误的函数时出现核心转储)。
    • 修复了 bug GH-10737(PHP 8.1.16 在 sapi/apache2handler/sapi_apache2.c 的第 597 行出现段错误)。
    • 修复了 bug GH-11028(zval_undefined_cv 中出现堆缓冲区溢出)。
    • 修复了 bug GH-11108(在 ??= 中回退后,CG(memoize_mode) 状态不正确)。
  • 日期
    • 修复了 diff() 方法在与时区标识符关联的日期/时间周围的夏令时转换时无法返回正确结果的 bug。
    • 修复了在转换到/从大约 LONG_MIN unix 时间戳时出现的越界 bug。
  • DOM
    • 修复了 bug #80602(使用 DOMChildNode::before() 时出现段错误)。
    • 修复了 dom_zvals_to_fragment() 中不正确的错误处理。
  • Exif
    • 修复了 bug GH-9397(exif 读取:警告和错误:可能无效的字节序、非法 IFD 大小和未定义索引)。
  • Intl
    • 修复了 bug GH-11071(不再显示 TZData 版本)。
  • PCRE
    • 修复了 bug GH-10968(preg_replace_callback_array() 中出现段错误)。
  • Reflection
    • 修复了 bug GH-10983(ReflectionObject::getProperties 中出现依赖于状态的段错误)。
  • SPL
    • 处理间接 zval 并在 SplFixedArray::__serialize 中使用最新的属性。
  • Standard
    • 修复了 bug GH-10990(在按引用迭代 $additional_headers 数组后,mail() 抛出 TypeError)。
    • 修复了 bug GH-9775(在使用枚举时,array_unique 返回重复项)。
  • Streams
    • 修复了 bug GH-10406(基于 UNIX 的套接字资源的 feof() 行为更改)。

版本 8.2.5

  • 核心
    • 在 ZTS/Linux 构建中添加了对 max_execution_time 的可选支持(Kévin Dunglas)
    • 修复了递归 AST 评估中的释放后使用。
    • 修复了 bug GH-8646(PHP FPM 8.1 内存泄漏)。
    • 重新添加了一些因错误而被移除的 CTE 函数。
    • 移除 array_diff_ukey() 的 CTE 标志,该标志是错误添加的。
    • 修复了 bug GH-10801(CTE 函数中的命名参数会导致段错误)。
    • 修复了 bug GH-8789(PHP 8.0.20 (ZTS) zend_signal_handler_defer 在 apache 上崩溃)。
    • 修复了 bug GH-10015(zend_signal_handler_defer 在 apache 关闭时崩溃)。
    • 修复了 bug GH-10810(修复 Exception::__toString() 中的 NUL 字节终止符)。
    • 修复了混合使用 __callStatic() 和 FFI 时可能出现的内存损坏。
  • 日期
    • 修复了 bug GH-10747(序列化 Date* 对象中的私有和受保护属性抛出异常)。
  • FPM
    • 修复了 bug GH-10611(fpm_env_init_main 泄漏 environ)。
    • 在 fpm_main 中销毁 file_handle。
    • 修复了 bug #74129(当路径中包含空格时,apache ProxyPassMatch 的 SCRIPT_NAME 不正确)。
  • FTP
    • 传播 ftp_close() 的成功状态。
    • 修复了 bug GH-10521(ftp_get/ftp_nb_get resumepos 偏移量最大为 10GB)。
  • IMAP
    • 修复了 Clang 16 的构建失败。
  • MySQLnd
    • 修复了 bug GH-8979(启用 SSL 的 MySQL 连接可能出现内存泄漏)。
  • Opcache
    • 修复了 macOS 的构建以适应 pkg-config 设置。
    • 修复了 bug GH-8065(opcache.consistency_checks > 0 在 fpm 上下文中导致 PHP >= 8.1.5 出现段错误)。
  • OpenSSL
    • 在文件写入函数中添加了缺少的错误检查。
  • PDO Firebird
    • 修复了 bug GH-10908(在带有 64 位内核和 32 位用户空间的 RPI 上,PDO Firebird 出现总线错误)。
  • Phar
    • 修复了 bug GH-10766(使用 Phar::Zip 格式创建的 PharData 存档不会保留文件元数据(日期时间))。
    • 在 EVP_MD_CTX_create() 和 EVP_VerifyInit() 中添加了缺少的错误检查。
  • PDO ODBC
    • 修复了 SQLAllocHandle 上缺少和不一致的错误检查。
  • PGSQL
    • 修复了 pg_meta_data(扩展模式)返回的数组中的错别字。
  • SPL
    • 修复了 bug GH-10519(数组数据地址引用问题)。
    • 修复了 bug GH-10907(无法在 PHP 8.2.4 中序列化处理过的 SplFixedArrays)。
    • 修复了 bug GH-10844(ArrayIterator 允许修改只读属性)。
  • Standard
    • 修复了 bug GH-10885(stream_socket_server 上下文泄漏)。
    • 修复了 bug GH-10052(Browscap 在请求关闭时(apache2)导致 PHP 8.1.12 崩溃)。
    • 修复了 oss-fuzz #57392(php_fgetcsv() 在使用 \0 分隔符和围栏时出现缓冲区溢出)。
    • 修复了 unpack() 中的未定义行为。

版本 8.2.4

  • 核心
    • 修复了 ZEND_YIELD 中不正确的检查条件。
    • 修复了类型推断中不正确的检查条件。
    • 修复了 zend_internal_call_should_throw() 中不正确的检查。
    • 修复了 OnUpdateMemoryConsumption 中的溢出检查。
    • 修复了 bug GH-9916(在关闭序列中,如果协程挂起在生成器中,则会发出不可避免的致命错误或崩溃)。
    • 修复了 bug GH-10437(在回退后,在关闭函数中使用协程时出现段错误/断言)。
    • 修复了复合赋值操作码的 SSA 对象类型更新。
    • 修复了语言扫描器生成构建。
    • 修复了 zend_update_static_property() 误导性地使用错误的返回类型调用 zend_update_static_property_ex()。
    • 修复了 bug GH-10570(使用整数常量名称作为属性名称时,修复了未知字符串哈希)。
    • 修复了 php_fopen_primary_script() 调用导致 zend_destroy_file_handle() 释放句柄上的悬空指针,因为该句柄未初始化。
  • Curl
    • 修复了编译时的弃用警告。
    • 修复了 bug GH-10270(无法在 readfunc 回调中返回 CURL_READFUNC_PAUSE)。
  • 日期
    • 修复了 GH-10447('p' 格式说明符不会为 00:00 生成 'Z')。
    • 修复了 GH-10152(Date 子类的自定义属性未序列化)。
    • 修复了 bug GH-10747(序列化 Date* 对象中的私有和受保护属性抛出异常)。
  • FFI
    • 修复了 ffi 位字段中不正确的移位和掩码。
  • Fiber
    • 修复了 alpine x86 上的汇编。
    • 修复了 bug GH-10496(当垃圾收集器在协程内部被调用时出现段错误)。
  • FPM
    • 修复了 bug GH-10315(FPM 未知子进程警报无效)。
    • 修复了 bug GH-10385(FPM 配置测试成功后提前退出)。
  • GMP
    • 正确实现了 GMP::__construct()。
  • Intl
    • 修复了 bug GH-10647(Spoolchecker isSuspicious/areConfusable 方法错误代码的参数始终返回 NULL0)。
  • JSON
    • 修复了 JSON 扫描器和解析器生成构建。
  • MBString
    • ext/mbstring:修复 new_value 长度检查。
    • 修复了 bug GH-10627(mb_convert_encoding 在 Windows 上导致 PHP 崩溃)。

  • Opcache
    • 修复了不正确的 page_size 检查。
  • OpenSSL
    • 修复了 php_openssl_set_server_dh_param() 函数处理 DH 参数错误的问题。
  • PDO OCI
    • 修复了 bug #60994(读取多字节 CLOB 时最多读取 8192 个字符)。
  • PHPDBG
    • 修复了 bug GH-10715(在错误使用 --run 选项时出现堆缓冲区溢出)。
  • PGSQL
    • 修复了 GH-10672(在 strict_types 模式下,pg_lo_open 出现段错误)。
  • Phar
    • 修复了 phar tar 解析中的错误检查。
  • Random
    • 修复了 GH-10390(不要信任 glibc 上的 arc4random_buf())。
    • 修复了 GH-10292(将 srand() 和 mt_srand() 的第一个参数的默认值设为未知)。
  • Reflection
    • 修复了 bug GH-10623(使用可变参数时,Reflection::getClosureUsedVariables 操作码修复)。
    • 修复了使用内部函数挂起的 ReflectionFiber 时出现的段错误。
  • Session
    • 修复了 ps_files_cleanup_dir() 函数在失败代码路径上的问题,使用 -1 而不是 0 作为返回值,因为调用者将后者视为成功。(nielsdos)
  • Standard
    • 修复了 bug GH-8086(引入 mail.mixed_lf_and_crlf INI 配置项)。
    • 修复了 bug GH-10292(将 srand() 和 mt_srand() 的第一个参数的默认值设为未知)。
    • 修复了 map_from_unicode() 函数中 cs_8559_5 的错误检查。
    • 修复了 bug GH-9697,reset/end/next/prev() 尝试移动某些内部类(如 FFI 类)的属性表的指针。
    • 修复了 browsecap 中 pcre2_match() 的错误检查。
  • Streams
    • 修复了 bug GH-10370(在使用 copy_file_range 时,_php_stream_copy_to_stream_ex 导致文件损坏)。
    • 修复了 bug GH-10548(由于 copy_file_range() 的长度不正确,导致 copy() 在 cifs 挂载点上失败)。
  • Tidy
    • 修复了尝试打开不存在的文件或超过 4GB 的文件时出现的内存泄漏。
    • 添加了 tidyLoadConfig 的缺失错误检查。
  • Zlib
    • 修复了 output_handler 指令值的长度计算问题,之前计算时包含了字符串终止符。

版本 8.2.3

  • 核心
    • 修复了 bug #81744(Password_verify() 在某些哈希情况下始终返回 true)。(CVE-2023-0567)
    • 修复了 bug #81746(公共路径解析代码中出现 1 字节数组越界)。(CVE-2023-0568)
  • SAPI
    • 修复了 bug GHSA-54hq-v5wp-fqgv(解析 multipart 请求体时出现拒绝服务漏洞)。(CVE-2023-0662)

版本 8.2.2

  • 核心
    • 修复了 bug GH-10200(zif_get_object_vars: 断言 `!(((__ht)->u.flags & (1<<2)) != 0)' 失败)。
    • 修复了 GH-10251(断言 `(flag & (1<<3)) == 0' 失败)。
    • 修复了 GH-10240(向解包数组中添加超过 2**30 个元素时出现断言失败)。
    • 修复了 GH-9735(Fiber 栈变量不参与循环收集器)。
    • 修复了 GH-9675(内部枚举方法的 run_time_cache 初始化错误)。
  • FPM
    • 修复了 bug #77106(FPM FastCGI 错误中缺少分隔符)。
    • 修复了 bug GH-9981(FPM 没有重置 fastcgi.error_header)。
    • 修复了 bug #68591(配置测试没有执行 UID 查询)。
    • 修复了运行 FPM 配置测试时出现的内存泄漏。
    • 修复了 bug #67244(侦听的 Unix 套接字的拥有者/组错误)。
  • Hash
    • 处理 XXH3 初始化过程中出现的异常。(nielsdos)
  • LDAP
    • 修复了 bug GH-10112(LDAP\Connection::__construct() 引用了 ldap_create())。
  • Opcache
    • 修复了 zend_runtime_jit() 中的错误的退出值。(Max Kellermann)
    • 修复了 accel_preload() 中访问未初始化变量的问题。
    • 修复了 zend_jit_find_trace() 导致的崩溃。
    • 为 zend_jit_trace_exit 中的 EXIT_INVALIDATE 添加了缺失的锁。
  • Phar
    • 修复了 phar_object.c 中压缩方法的错误标志检查。(nielsdos)
  • PHPDBG
    • 修复了 phpdbg_load_module_or_extension() 中的未定义行为。
    • 修复了 phpdbg_create_conditional_breal() 中的空指针解引用。
    • 修复了 GH-9710:phpdbg 由于选项“-h”导致的内存泄漏。(nielsdos)
    • 修复了 phpdbg 在输入格式错误时出现的段错误。(nielsdos)
  • Posix
    • 修复了 posix_ttyname() 中的内存泄漏。(girgias)
  • Random
    • 修复了 bug GH-10247(/dev/urandom 的理论文件描述符泄漏)。
  • Standard
    • 修复了 GH-10187(stripslashes() 在 arm64 上出现段错误)。
    • 修复了 bug GH-10214(在反序列化期间对对象语法的验证不完整)。
    • 修复了 substr_replace 函数中 repl_ht 中的槽位为 UNDEF 的问题。
  • XMLWriter
    • 修复了缺少 xmlTextWriterEndElement 的检查。(nielsdos)

版本 8.2.1

  • 核心
    • 修复了 bug GH-9905(当类未定义时,constant() 的行为不一致)。
    • 修复了 bug GH-9918(README.REDIST.BINS 文件中没有包含 xxHash 的许可证信息)。
    • 修复了 bug GH-9890(Windows 上无法使用 OpenSSL 遗留提供程序)。
    • 修复了 bug GH-9650(无法初始化堆:[0x000001e7])。
    • 修复了 Windows ftok(3) 模拟中的潜在未定义行为。
    • 修复了 GH-9769(解包对象时出现误导性的错误消息)。
  • Apache
    • 修复了 bug GH-9949(不完整的 POST 请求出现部分内容)。
  • FPM
    • 修复了 bug GH-9959(在修复 bug #66694 后,Solaris 端口事件机制仍然存在问题)。
    • 修复了 bug #68207(设置 fastcgi.error_header 可能导致警告)。
    • 修复了 bug #80669(FPM 数字用户无法设置组)。
    • 修复了 bug GH-8517(fpm_stdio_child_said 中 FPM 主进程随机崩溃)。
  • Imap
    • 修复了 bug GH-10051(IMAP:无法检查 IMAP\Connection 是否仍然处于打开状态)。
  • MBString
    • 修复了 bug GH-9535(PHP 8.1 中 mbstring 中 mb_strcut 的行为发生了变化)。
  • Opcache
    • 修复了 bug GH-9968(在 OPCache 预加载期间出现段错误)。
  • OpenSSL
    • 修复了 bug GH-9997(OpenSSL 引擎清理出现段错误)。
    • 修复了 bug GH-9064(如果 openssl 使用 --no-ec 编译,PHP 无法构建)。
    • 修复了 bug GH-10000(当 OpenSSL 使用 no-dsa 编译时,OpenSSL 测试失败)。
  • Pcntl
    • 修复了 bug GH-9298(在 rshutdown 后调用信号处理程序会导致崩溃)。
  • PDO_Firebird
    • 修复了 bug GH-9971(PDO_Firebird 返回的 NUMERIC 值不正确)。
  • PDO/SQLite
    • 修复了 bug #81740(PDO::quote() 可能返回未加引号的字符串)。(CVE-2022-31631)
  • Session
    • 修复了 GH-9932(会话名称在使用 . 和 [ 时静默失败)。
  • SPL
    • 修复了 GH-9883(SplFileObject::__toString() 读取下一行)。
    • 修复了 GH-10011(跳板自动加载器将被重新注册,无法取消注册)。
  • SQLite3
    • 修复了 bug #81742(通过使用文件 URI 在 SQLite3 中绕过 open_basedir)。
  • TSRM
    • 修复了 Windows shmget() 关于 IPC_PRIVATE 的问题。

版本 8.2.0

  • CLI
    • 修复了 bug #81496(服务器记录了错误的请求方法)。
    • 更新了内置服务器的 mime-type 表。
    • 修复了内置服务器通过 PHP_CLI_SERVER_WORKERS 环境变量可能出现的溢出问题。
    • 通过更改 STDOUT、STDERR 和 STDIN 在资源销毁时不关闭来修复了 GH-8575
    • 实现了内置 Web 服务器,在静态资源上对 HEAD 请求做出无主体响应。
    • 实现了内置 Web 服务器,在静态资源上对 DELETE/PUT/PATCH 请求做出 HTTP 状态 405 响应。
    • 修复了 bug GH-9709(使用 -w/-s 选项时出现空指针解引用)。
  • COM
    • 修复了 bug GH-8750(无法创建 VT_ERROR 变体类型)。
  • 核心
    • 修复了 bug #81380(观察者可能未正确初始化)。
    • 修复了 bug GH-7771(修复常量表达式的文件名/行号)。
    • 修复了 bug GH-7792(改进错误消息中的类类型)。
    • 支持 MacOS 上的大页面。
    • 修复了 bug GH-8655(将对象转换为数组不会解包 refcount=1 的引用)。
    • 修复了 bug GH-8661(合并运算符中的空安全触发未定义变量警告)。
    • 修复了 bug GH-7821GH-8418(允许在支持的枚举中使用任意常量表达式)。
    • 修复了 bug GH-8810(多行函数调用的回溯中的行号不正确)。
    • 优化了使用流普通包装器创建的新文件的代码路径。
    • 为 ZEND_PTR_STACK_RESIZE_IF_NEEDED 使用 safe_perealloc 而不是 perealloc,以避免可能的溢出。
    • 减少了 var_export()、json_encode()、serialize()、iconv_*()、mb_ereg*()、session_create_id()、http_build_query()、strstr()、Reflection*::__toString() 返回的字符串的内存占用。
    • 修复了 bug GH-8995(WeakMap 对象引用偏移导致 TypeError)。
    • 添加了 error_log_mode ini 设置。
    • 更新了请求启动消息。
    • 修复了 bug GH-7900(带有 never 返回类型的箭头函数编译时错误)。
    • 修复了最新 clang 中不正确的双精度浮点数到长整数的转换。
    • 添加了在 trait 中定义常量 的支持。
    • 停止错误地发出错误的弃用通知,该通知与 `"{$g{'h'}}"` 的不受支持的语法致命错误一起出现。
    • 修复了意外的弃用动态属性警告,该警告在抛出异常后未捕获并在 finally 块中使用 exit() 时发生。
    • 修复了 bug GH-9323(ZEND_RETURN/GC/zend_call_function 中的崩溃)(Tim Starling)
    • 修复了 bug GH-9227(文件名中的尾随点和空格被忽略)。
    • 修复了 bug GH-9285(trait 无法在只读类中使用)。
    • 修复了 bug GH-9186(@strict-properties 可以通过反序列化绕过)。
    • 修复了 bug GH-9500(在只读关键字后使用带括号的 dnf 类型会导致解析错误)。
    • 修复了 bug GH-9516((A&B)|D 作为参数应该允许 AB 或 D。不仅仅是 A)。
    • 修复了 Opcache file_cache_only=1 时观察者类的通知问题。
    • 修复了 FreeBSD i386 架构上 Fiber 出现的段错误。
    • 修复了 bug GH-9655(纯交集类型不能隐式为空)(Girgias)
    • 修复了 bug GH-9589(当模块已加载时,dl() 出现段错误)。

    • 修复了错误 GH-9752(当使用额外的命名参数在参数求值过程中中断时,生成器崩溃)。
    • 修复了错误 GH-9801(当初始化期间内存限制超出时,生成器崩溃)。
    • 修复了预加载枚举可能导致段错误的错误。
    • 修复了错误 GH-9823(不要在 zend_closure_internal_handler 中重置 func)。
    • 修复了 Windows shm*() 函数中潜在的空指针解引用。
    • 修复了使用构造函数属性提升的内部属性的目标验证。
    • 修复了错误 GH-9750(当在参数求值过程中中断时,生成器内存泄漏)。
    • 将 observer_declared_function_notify 移动到 pass_two() 之后。
    • 不要在扩展中报告 MINIT 阶段的内部类别名。
  • Curl
    • 添加了对 CURLOPT_XFERINFOFUNCTION 的支持。
    • 添加了对 CURLOPT_MAXFILESIZE_LARGE 的支持。
    • 添加了 cURL 7.62 到 7.80 的新常量。
    • 新增函数 curl_upkeep()。
  • 日期
    • 修复了 GH-8458(DateInterval::createFromDateString 如果存在非相对项则不抛出异常)。
    • 修复了错误 #52015(允许在 DatePeriod 迭代中包含结束日期)(Daniel Egeberg,Derick)。
    • idate() 现在接受格式说明符 "N"(ISO 星期几)和 "o"(ISO 年)。
    • 修复了错误 GH-8730(DateTime::diff 在相同时区但不同类型时计算错误)。
    • 修复了错误 GH-8964(应用小于 1 秒的增量后,DateTime 对象比较)。
    • 修复了错误 GH-9106(自 PHP 8.1.0 以来,将 DateInterval 1.5s 添加到 DateTimeInterface 会向下舍入)。
    • 修复了错误 #75035(Datetime 无法反序列化“极端”日期)。
    • 修复了错误 #80483(带有 5 位数年份的 DateTime 对象无法反序列化)。
    • 修复了错误 #81263(DateTimeImmutable::diff 的结果错误)。
    • 修复了错误 GH-9431(DateTime::getLastErrors() 在没有错误/警告时不返回 false)。
    • 修复了使用 @ 符号解析大负数时的错误。
  • DBA
    • 修复了 LMDB 驱动程序在尝试删除不存在的键时挂起的问题(Girgias)。
    • 修复了 LMDB 驱动程序在数据库创建失败时内存泄漏的问题(Girgias)。
    • 修复了 GH-8856(dba: lmdb: 允许覆盖 MDB_NOSUBDIR 标志)。
  • FFI
    • 修复了错误 GH-9090(支持在 FFI 中分配函数指针)。
  • Fileinfo
    • 修复了错误 GH-8805(finfo 对 woff/woff2 文件返回错误的 mime 类型)。
  • Filter
    • 添加了 FILTER_FLAG_GLOBAL_RANGE 过滤器以过滤全局 IP。
  • FPM
    • 针对无效的端口设置发出错误。
    • 添加了对基于 SELinux 的系统上的 FPM proc 可转储的额外检查。
    • 添加了对 macOS 上的监听队列的支持。
    • 将 Linux 上的 listen.backlog 的默认值更改为 -1。
    • 添加了 listen.setfib 池选项以在 FreeBSD 上设置路由 FIB。
    • 添加了 access.suppress_path 池选项以过滤访问日志条目。
    • 修复了 fpm 记分板在获取失败时偶尔出现的警告。
    • 修复了错误 GH-9754(SaltStack(使用 Python 子进程)在运行 php-fpm 8.1.11 时挂起)。
  • FTP
    • 修复了 ftp_mdtm() 中的日期时间格式字符串以遵循 POSIX 规范。
  • GD
    • 修复了错误 #81739:由于 imageloadfont() 中输入验证不足导致的越界读取。(CVE-2022-31630)。
  • GMP
    • 修复了错误 GH-9308(当将 GMP 对象传递给 gmp_init() 时,GMP 抛出错误)。
  • Hash
    • 修复了错误 #81738:hash_update() 中针对长参数的缓冲区溢出。(CVE-2022-37454)。
  • Intl
    • 使用首选值更新所有祖传语言标签。
    • 修复了 GH-7939(无法反序列化 IntlTimeZone 对象)。
    • 修复了 ICU 69.x 及更高版本的构建。
    • 将 Transliterator::$id 声明为只读以解锁对其的子类化。
    • 修复了错误 GH-9421(NumberFormatter 中的 ValueError 参数数量错误)。
  • MBString
    • 修复了错误 GH-9248(mb_strimwidth() 中的段错误)。
  • mysqli
    • 修复了错误 GH-9841(mysqli_query 即使使用静默错误模式也抛出警告)。
  • MySQLnd
    • 修复了由于对齐不匹配导致的潜在堆损坏。
  • OCI8
    • 添加了 oci8.prefetch_lob_size 指令以调整 LOB 查询性能。
    • 已删除对 Oracle Client 库 10.1 和 10.2 的构建支持。现在需要 Oracle Client 库 11.2 或更高版本。
  • ODBC
    • 修复了错误 GH-8300(构建连接字符串时未转义用户输入)。
    • 修复了错误 GH-9347(当前的 ODBC 活跃性检查可能不足)。
  • Opcache
    • 将 JIT 缓冲区分配到靠近 PHP .text 段的位置,以允许使用直接 IP 相对调用和跳转。
    • 添加了对 macOS Instrument 的 JIT 性能分析生成的基本支持。
    • 修复了错误 GH-8030(使用 JIT 和大型匹配/开关语句时的段错误)。
    • 添加了 macOS 段和可执行权限位处理的 JIT 支持改进。
    • 在 FreeNSD 上添加了靠近 .text 部分的 JIT 缓冲区分配。
    • 修复了错误 GH-9371(mac arm64 上的 JIT 崩溃)(jdp1024/David Carlier)。
    • 修复了错误 GH-9259(opcache.interned_strings_buffer 设置整数溢出)。
    • 添加了 x86 架构上 jit 的间接调用减少。
    • 修复了错误 GH-9164(zend_accel_class_hash_copy 中的段错误)。
    • 修复了启用观察者时的 opcache 预加载。
  • OpenSSL
    • 在没有超时/非阻塞/MSG_DONTWAIT 时,丢弃套接字上的轮询调用。
    • 修复了错误 GH-9310(SSL local_cert 和 local_pk 不尊重 open_basedir)。
    • 实现 FR #76935(“chacha20-poly1305”是 AEAD,但不能像 AEAD 一样工作)。
    • 添加了 openssl_cipher_key_length 函数。
    • 修复了错误 GH-9517(与 PR GH-9366 相关的 OpenSSL 扩展编译错误)。
    • 修复了 OpenSSL 引擎列表的清理遗漏 - 尝试修复 GH-8620
    • 修复了错误 GH-8430(使用 no-md2、no-md4 或 no-rmd160 编译的 OpenSSL 无法构建)。
  • PCNTL
    • 修复了 MacOS 的 pcntl_(get|set)priority 错误处理。
  • PCRE
    • 实现 FR #77726(允许正则表达式模式中的空字符)。
    • 将捆绑的 libpcre 更新到 10.40。
  • PDO
    • 修复了错误 GH-9818(在 PDO 方法中初始化运行时缓存)。
  • PDO_Firebird
    • 修复了错误 GH-8576(字符为 UTF-8 时长度解释错误)。
  • PDO_ODBC
    • 修复了错误 #80909(PDO_ODBC 中的持久连接崩溃)。
    • 修复了错误 GH-8300(构建连接字符串时未转义用户输入)。
    • 修复了错误 GH-9347(当前的 ODBC 活跃性检查可能不足)。
    • 修复了错误 GH-9372(绑定过长参数时的 HY010)。
  • PDO_PGSQL
    • 修复了错误 GH-9411(PgSQL 大对象资源被错误地关闭)。
  • Random
    • 添加了新的随机扩展。
    • 修复了错误 GH-9067(随机扩展不是线程安全的)。
    • 修复了错误 GH-9055(如果用户引擎抛出异常则发生段错误)。
    • 修复了错误 GH-9066(带符号整数溢出)。
    • 修复了错误 GH-9083(移位期间未定义的行为)。
    • 修复了错误 GH-9088GH-9056(在给定范围内生成均匀整数时字节扩展不正确)。
    • 修复了错误 GH-9089(在 Randomizer::__construct() 调用两次时修复内存泄漏)。
    • 修复了错误 GH-9212(PcgOneseq128XslRr64::jump() 不应允许负数 $advance)。
    • 将 Mt19937 更改为对无效 $mode 抛出 ValueError 而不是 InvalidArgumentException。
    • 将 Random\Randomizer::getInt()(无参数)拆分为 Random\Randomizer::nextInt()。
    • 修复了错误 GH-9235(PcgOneseq128XslRr64::__construct() 的存根中不存在 $sequence 参数)。
    • 修复了错误 GH-9190GH-9191(处理大范围时 MT_RAND_PHP 的未定义行为)。
    • 修复了错误 GH-9249(Xoshiro256StarStar 不会拒绝无效的全零状态)。
    • 从 Randomizer 方法中删除了冗余的 RuntimeExceptions。引擎抛出的异常将直接暴露。
    • 添加了扩展特定的异常/错误(RandomException、RandomError、BrokenRandomEngineError)。
    • 修复了错误 GH-9415(使用 Mt19937 的 Randomizer::getInt(0, 2**32 - 1) 始终返回 1)。
    • 修复了 32 位引擎的 Randomizer::getInt() 一致性。
    • 修复了错误 GH-9464(在较旧的 macOs 版本上构建)。
    • 修复了错误 GH-9839(MT_RAND_PHP 的非 mt_rand() 函数的 PHP 8.2 之前的输出兼容性)。
  • Reflection
    • 添加了 ReflectionFunction::isAnonymous()。
    • 添加了 ReflectionMethod::hasPrototype()。
    • 将 ReflectionEnum::getBackingType() 返回类型缩小到 ReflectionNamedType。
    • 修复了错误 GH-8932(ReflectionFunction 没有提供获取 Closure 的调用类的方法)。
  • Session
    • 修复了错误 GH-7787(改进了用户错误处理程序的会话写入失败消息)。
    • 修复了 GH-9200(setcookie 具有过时的过期日期格式)。
    • 修复了 GH-9584(在未注销自定义会话处理程序时避免内存损坏)。
    • 修复了错误 GH-9583(session_create_id() 对于没有 validateId() 方法的用户定义保存处理程序失败)。
  • SOAP
    • 修复了错误 GH-9720(序列化响应期间的空指针解引用)。
  • Sockets
    • 添加了 TCP_NOTSENT_LOWAT 套接字选项。
    • 添加了 SO_MEMINFO 套接字选项。
    • 添加了 SO_RTABLE 套接字选项(OpenBSD),相当于 SO_MARK(Linux)。
    • 添加了 TCP_KEEPALIVE、TCP_KEEPIDLE、TCP_KEEPINTVL、TCP_KEEPCNT 套接字选项。
    • 添加了 FreeBSD 的辅助数据支持。
    • 添加了 NetBSD 的辅助数据支持。
    • 添加了 SO_BPF_EXTENSIONS 套接字选项。
    • 添加了 SO_SETFIB 套接字选项。
    • 添加了 TCP_CONGESTION 套接字选项。
    • 添加了 SO_ZEROCOPY/MSG_ZEROCOPY 选项。
    • 添加了 Solaris 的 SOL_FILTER 套接字选项。
    • 修复了从 PHP 8.2.0beta3 开始的套接字常量回归。
  • Sodium
    • 添加了 sodium_crypto_stream_xchacha20_xor_ic()。
  • SPL
    • 使用 safe_erealloc 而不是 erealloc 来处理 SplHeap::insert 方法的堆增长,以避免可能的溢出。
    • 将 iterator_to_array() 和 iterator_count() 的 $iterator 参数扩展到可迭代。
    • 修复了错误 #69181(READ_CSV|DROP_NEW_LINE 删除字段内的换行符)。
    • 修复了错误 #65069(GlobIterator 对 open_basedir 检查的处理不正确)。
  • SQLite3
    • 将 sqlite3.defensive 从 PHP_INI_SYSTEM 更改为 PHP_INI_USER。
  • Standard
    • net_get_interfaces() 还在 Windows 上报告无线网络接口。
    • 完成了 getimagesize() 中的 AVIF 支持。
    • 修复了错误 GH-7847(具有大型 haystack 的 stripos 性能低下)。
    • 新增函数 memory_reset_peak_usage()。
    • 修复了 parse_url():无法识别没有方案的端口。
    • 弃用 utf8_encode() 和 utf8_decode()。

    • 修复了 clang > 12 版本下 crypt_sha256/512 api 的构建问题。
    • 在 getopt 中使用 safe_erealloc 而不是 erealloc 来处理选项,以避免潜在的溢出。
    • 实现了 FR GH-8924(str_split 对于空字符串应该返回空数组)。
    • 添加了 ini_parse_quantity 函数,用于将 ini 数量的简写符号转换为整数。
    • 为 Linux glibc 2.36 及更高版本启用 arc4random_buf 以用于 random_bytes。
    • 在 macOS 上使用 CCRandomGenerateBytes 而不是 arc4random_buf。(David Carlier)。
    • 修复了 bug #65489(glob() 的基目录检查不一致)。
    • 修复了 GH-9200(setcookie 具有过时的过期日期格式)。
    • 修复了 GH-9244(使用 array_multisort + array_shift 导致段错误)。
    • 修复了 bug GH-9296(`ksort` 在具有混合键的数组上行为不正确)。
    • 将 crypt() 的 $string 参数标记为 #[\SensitiveParameter]。
    • 修复了错误 GH-9464(在较旧的 macOs 版本上构建)。
    • 修复了 bug GH-9518(禁用 IPv6 支持会禁用无关的常量)。
    • 撤销“修复 parse_url(): 无法识别没有 scheme 的端口”(andypost)。
    • 修复了在模块已加载时,在 DL_UNLOAD() 后读取 module_entry 导致的崩溃。
  • Streams
    • 如果可用,在连接到远程主机时设置 IP_BIND_ADDRESS_NO_PORT。
    • 修复了 bug GH-8548(stream_wrapper_unregister() 导致内存泄漏)。
    • 在没有超时/非阻塞/MSG_DONTWAIT 时,丢弃套接字上的轮询调用。
    • 修复了 bug GH-9316(对于长状态行,$http_response_header 不正确)。
    • 修复了 bug GH-9590(stream_select 在出现异常或有效的 fd 集为空时不会中止)。
    • 修复了 bug GH-9653(不同文件系统之间的文件复制)。
    • 修复了 bug GH-9779(如果目标文件处于追加模式,stream_copy_to_stream 失败)。
  • Windows
    • 添加了对 ARM64 的(交叉)构建的初步支持。
  • XML
    • 添加了 libxml_get_external_entity_loader() 函数。
  • Zip
    • 添加 ZipArchive::clearError() 方法
    • 添加 ZipArchive::getStreamName() 方法
    • 添加 ZipArchive::getStreamIndex() 方法
    • 在 Windows 上,Zip 扩展现在默认情况下作为共享库(DLL)构建。
    • 如果可能,使用 libzip 1.9.1 为 zip 流实现 fseek。

版本 8.1.31

  • CLI
    • 修复了 bug GHSA-4w77-75f9-2c8w(CLI SAPI 接口中 sapi_read_post_data 处理中的 Use-After-Free)。
  • LDAP
  • MySQLnd
    • 修复了 bug GHSA-h35g-vwh6-m678(通过堆缓冲区过读泄漏堆的部分内容)。(CVE-2024-8929)
  • PDO DBLIB
    • 修复了 bug GHSA-5hqh-c84r-qjcv(dblib 引号器中的整数溢出导致越界写入)。(CVE-2024-11236)
  • PDO Firebird
    • 修复了 bug GHSA-5hqh-c84r-qjcv(firebird 引号器中的整数溢出导致越界写入)。(CVE-2024-11236)
  • Streams
    • 修复了 bug GHSA-c5f2-jwm7-mmq2(在流上下文中配置代理可能允许在 URI 中进行 CRLF 注入)。(CVE-2024-11234)
    • 修复了 bug GHSA-r977-prxv-hc43(使用 convert.quoted-printable-decode 过滤器时发生单字节过读)。(CVE-2024-11233)

版本 8.1.30

  • CGI
    • 修复了 bug GHSA-p99j-rfp4-xqvq(绕过 CVE-2024-4577,参数注入漏洞)。(CVE-2024-8926)
    • 修复了 bug GHSA-94p6-54jq-9mwp(由于环境变量冲突,cgi.force_redirect 配置可绕过)。(CVE-2024-8927)
  • FPM
    • 修复了 bug GHSA-865w-9rf3-2wh5(子进程的日志可能被更改)。(CVE-2024-9026)
  • SAPI
    • 修复了 bug GHSA-9pqp-7h25-4f32(多部分表单数据解析错误)。(CVE-2024-8925)

版本 8.1.29

  • CGI
    • 修复了错误 GHSA-3qgc-jrrr-25jv(绕过 CVE-2012-1823,PHP-CGI 中的参数注入)。(CVE-2024-4577)
  • Filter
    • 修复了错误 GHSA-w8qr-v226-r27w(filter_var FILTER_VALIDATE_URL 中的过滤器绕过)。(CVE-2024-5458)
  • OpenSSL
    • 当使用 PKCS1 填充(OPENSSL_PKCS1_PADDING,这是默认值)时,PHP 中的 openssl_private_decrypt 函数容易受到 Marvin 攻击,除非它与包含此拉取请求更改的 OpenSSL 版本一起使用:https://github.com/openssl/openssl/pull/13817 (rsa_pkcs1_implicit_rejection)。这些更改是 OpenSSL 3.2 的一部分,并且也已反向移植到各种 Linux 发行版的稳定版本,以及从上一个版本开始为 Windows 提供的 PHP 构建中。所有分发者和构建者都应确保使用此版本,以防止 PHP 受到攻击。
  • Standard
    • 修复了错误 GHSA-9fcc-425m-g385(绕过 CVE-2024-1874)。(CVE-2024-5585)

版本 8.1.28

  • Standard
    • 修复了错误 GHSA-pc52-254m-w9w7(通过 proc_open 的类似数组的 $command 参数进行命令注入)。(CVE-2024-1874)
    • 修复了错误 GHSA-wpj3-hf5j-x4v4(由于部分 CVE-2022-31629 修复导致的 __Host-/__Secure- cookie 绕过)。(CVE-2024-2756)
    • 修复了错误 GHSA-h746-cjrr-wfmr(password_verify 可能错误地返回 true,从而导致 ATO 风险)。(CVE-2024-3096)

版本 8.1.27

  • 核心
    • 修复了 oss-fuzz #54325(在带有恶意错误处理程序的 var-var 中释放后使用名称)。
    • 修复了 oss-fuzz #64209(在 php_message_handler_for_zend 中就地修改文件名)。
    • 修复了错误 GH-12758 / GH-12768(ZEND_FUNC_GET_ARGS 和 ZEND_BIND_STATIC 内的 OOM 处理程序中的无效操作码)。
  • DOM
    • 修复了 bug GH-12616(DOM:删除 XMLNS 命名空间节点会导致无效的默认:前缀)。
  • FPM
    • 修复了错误 GH-12705(fpm_status_export_to_zval 中出现分段错误)。
  • Intl
    • 修复了 bug GH-12635(使用 ICU 74.1 时,Test bug69398.phpt 失败)。
  • LibXML
    • 修复了 bug GH-12702(从源代码构建时,libxml2 2.12.0 出现问题)。
  • MySQLnd
    • 避免使用未初始化的结构体。
  • OpenSSL
    • 修复了 bug #50713(openssl_pkcs7_verify() 可能会忽略不受信任的 CA)。
  • PCRE
    • 修复了 bug GH-12628(gh11374 测试在 Alpinelinux 上失败)。
  • PGSQL
    • 修复了 bug GH-12763 pg_untrace 的错误参数类型。
  • PHPDBG
    • 修复了 bug GH-12675(phpdbg_prompt.c 中的内存泄漏)。
  • SQLite3
    • 修复了 bug GH-12633(使用 sqlite 3.44.0 时,sqlite3_defensive.phpt 失败)。
  • Standard
    • 修复了 syslog 设备处理中的内存泄漏。
    • 修复了 bug GH-12621(在 vhost 中配置时,browscap 发生段错误)。
    • 修复了 bug GH-12655(proc_open() 没有考虑描述符数组中的引用)。
  • Streams
    • 修复了 bug #79945(imagecreatefrompng 中的流包装器导致段错误)。
  • Zip
    • 修复了 bug GH-12661(ZipArchive::addGlob remove_path 选项行为不一致)。

版本 8.1.26

  • 核心
    • 修复了 bug GH-12468(通过 trait 覆盖静态属性时,doc_comment 的双重释放)。
    • 修复了由 FFI 对象的弱引用引起的段错误。
    • 修复了 max_execution_time:不要删除未初始化的计时器。

  • DOM
    • 修复了使用抽象类时 registerNodeClass 导致崩溃的问题。
    • 添加了缺少的空指针错误检查。
    • 修复了 php:function() 回调的验证逻辑。
  • Fiber
    • 修复了错误 GH-11121(ReflectionFiber 出现段错误)。
  • FPM
    • 修复了错误 GH-9921(在 FPM 配置文件中加载扩展不会注册模块处理程序)。
    • 修复了错误 GH-12232(FPM:在没有 opcache 的情况下动态加载扩展导致段错误)。
  • Intl
    • 删除了 IntlDateFormatter::construct 上的 BC 中断,该中断在使用无效语言环境时会抛出异常。
  • Opcache
    • 在无法启用 JIT 时添加了警告。
    • 修复了错误 GH-8143(由于磁盘文件缓存损坏,升级到 8.1.3 后 zend_accel_inheritance_cache_find 中出现崩溃)。
  • OpenSSL
    • 修复了错误 GH-12489(openssl_cms_verify 中缺少 sigbio 创建检查)。
  • PCRE
    • 修复了错误 GH-11374(回退上游修复,使用 -d pcre.jit=0 时 preg_match 的结果不同)。
  • SOAP
    • 修复了错误 GH-12392(SoapClient::__getTypes 出现段错误)。
    • 修复了错误 #66150(SOAP WSDL 缓存竞争条件导致段错误)。
    • 修复了错误 #67617(SOAP 在 ENOSPC 时留下不完整的缓存文件)。
    • 修复了 SOAP 缓存中不正确的 uri 检查。
    • 修复了带引用计数属性和数组时的段错误和断言失败。
    • 修复了持久编码器边缘情况下的潜在崩溃。
    • 修复了错误 #75306(SoapClient 中的内存泄漏)。
  • Streams
    • 修复了错误 #75708(getimagesize 使用“&$imageinfo”在 StreamWrappers 上失败)。
  • XMLReader
    • 添加了缺少的空指针错误检查。
  • XMLWriter
    • 添加了缺少的空指针错误检查。
  • XSL
    • 添加了缺少的模块依赖项。
    • 修复了 php:function() 回调的验证逻辑。

版本 8.1.25

  • 核心
    • 修复了错误 GH-12207(当类使用带有文档块的 trait 时出现内存泄漏)。
    • 修复了错误 GH-12215(模块条目被覆盖导致 ext/dom 中出现类型错误)。
    • 修复了错误 GH-12273(__builtin_cpu_init 检查)。
    • 修复了错误 #80092(ZTS + 预加载 = 在关闭时出现段错误)。
  • CLI
    • 确保存在单个 Date 头。
  • CType
    • 修复了错误 GH-11997(在 PHP 8.1 或更高版本中,ctype_alnum 速度慢了 5 倍)。
  • DOM
    • 恢复旧的命名空间协调行为。
    • 修复了错误 GH-8996(PHP ^8.1 上的 DOMNode 序列化)。
  • Fileinfo
    • 修复了错误 GH-11891(fileinfo 对某些 svg 文件返回 text/xml)。
  • Filter
    • 修复了带有 FILTER_CALLBACK 的显式 FILTER_REQUIRE_SCALAR(ilutov)
  • Hash
    • 修复了错误 GH-12186(复制/克隆已完成的 HashContext 时出现段错误)。
  • Intl
    • 修复了错误 GH-12243(IntlDateFormatter::construct 出现段错误)。
    • 修复了错误 GH-12282(IntlDateFormatter::construct 应该在无效的区域设置上抛出异常)。
  • MySQLnd
    • 修复了错误 GH-12297(PHP 启动:未知行上的无效库(可能不是 PHP 库)'mysqlnd.so')。
  • Opcache
    • 修复了已删除文件上的 opcache_invalidate()。
    • 修复了错误 GH-12380(JIT + 私有数组属性访问在闭包内部访问子类中的私有属性)。
  • PCRE
    • 修复了错误 GH-11956(回退上游修复,启用 JIT 的 PCRE 正则表达式给出不同的结果)。
  • SimpleXML
    • 修复了错误 GH-12170(无法在 SimpleXML 中使用带有注释的 xpath)。
    • 修复了错误 GH-12223(实体引用在 var_dump/print_r 中产生无限循环)。
    • 修复了错误 GH-12167(无法在 SimpleXML 中获取处理指令内容)。
    • 修复了错误 GH-12169(无法在 SimpleXML 中获取注释内容)。
  • Streams
    • 修复了错误 GH-12190(使用地址和端口均为 0 绑定 ipv4 地址)。
  • XML
    • 修复了 xml_parse_into_struct() 存根的返回类型。
    • 修复了连续调用 xml_parse_into_struct() 两次时的内存泄漏。
  • XSL
    • 修复了使用 SimpleXML 时 XSLTProcessor::transformToDoc 返回值的类型错误。
  • Sockets
    • 修复 socket_export_stream() 使用错误协议的问题 (twosee)

版本 8.1.24

  • 核心
    • 修复了错误 GH-11937(包含对象的常量 AST)。
    • 修复了错误 GH-11790(在 riscv64 上,如果实际需要,则需要 libatomic)。
    • 修复了错误 GH-12073(释放未完全初始化的闭包时出现段错误)。
    • 修复了错误 GH-12060(内部迭代器回绕处理程序被调用两次)。
    • 修复了错误 GH-12102(在函数调用中对 TMP 值使用数组访问时出现不正确的编译错误)。
  • DOM
    • 修复了设置无效 DOMDocument 编码时的内存泄漏。
  • Iconv
    • 修复了 NetBSD 的构建,它仍然使用旧的 iconv 签名。
  • Intl
    • 修复了错误 GH-12020(MessageFormatter::formatMessage() 失败后,intl_get_error_message() 出现故障)。
  • MySQLnd
    • 修复了错误 GH-10270(通过 SSL 连接失败时出现无效的错误消息:“尝试通过(null)连接”)。
  • ODBC
    • 修复了 SQLPrepare 失败时的内存泄漏。
    • 修复了持久过程 ODBC 连接未关闭的问题。
  • SimpleXML
    • 修复了错误 #52751(不支持 XPath processing-instruction() 函数)。
  • SPL
    • 修复了错误 GH-11972(8.1.18 中的 RecursiveCallbackFilterIterator 回归)。
  • SQLite3
    • 修复了错误 GH-11878(SQLite3 回调函数使用可调用数组导致内存泄漏)。

版本 8.1.23

  • CLI
    • 修复了错误 GH-11716(使用 ZEND_RC_DEBUG=1 编译时,cli 服务器在收到 SIGINT 信号后崩溃)。
    • 修复了错误 GH-10964(改进关于内置服务器的手册页)。
  • 核心
    • 修复了配置时间时的 strerror_r 检测。
  • 日期
    • 修复了 bug GH-11416:当传递未初始化的对象时,DatePeriod 发生崩溃。
  • DOM
    • 修复了 DOMEntity 字段获取器错误。
    • 修复了 DOMElement::setAttributeNodeNS 中不正确的属性存在性检查。
    • 修复了 DOMCharacterData::replaceWith() 使用自身的情况。
    • 修复了 DOMParentNode 方法的空参数情况。
    • 修复了错误 GH-11791(DOMDocument::xmlStandalone 的错误默认值)。
    • 修复了 DOMDocument 上的 json_encode 结果。
    • 修复了在 DOM 类上手动调用 __construct()。
    • 修复了错误 GH-11830(ParentNode 方法应该提前执行其检查)。
    • 修复了当子节点消失时调用 DOMParentNode::prepend() 导致的段错误。
  • FFI
    • 修复了使用 FFI::cdef()->new(...) 时泄漏定义的问题。
  • MySQLnd
    • 修复了错误 GH-11440(通过 SSL 对 sha256_password 帐户进行身份验证失败)。
    • 修复了错误 GH-11438(mysqlnd 无法使用超过 19 个字符的密码对使用 sha256_password 帐户进行身份验证)。
    • 修复了错误 GH-11550(当响应字段发生变化时,MySQL 语句具有空查询结果,还会出现段错误)。
    • 修复了连接断开时出现的无效错误消息“Malformed packet”。
  • Opcache
    • 修复了错误 GH-11715(opcache.interned_strings_buffer 或者没有效果,或者 opcache_get_status() / phpinfo() 错误)。
    • 如果正在进行重启,则避免在从 shm 加载脚本时添加不必要的读取锁。
  • PCNTL
    • 将接收 SIGCHLD 信号的行为恢复到 8.1.22 之前的行为。
  • SPL
    • 修复了错误 #81992(SplFixedArray::setSize() 导致使用后释放)。
  • Standard
    • 防止 number_format 中的 $decimals 出现整数溢出。
    • 修复了错误 GH-11870(修复截断 tempnam 前缀时的越界错误)(athos-ribeiro)

版本 8.1.22

  • 构建
    • 修复了错误 GH-11522(PHP 版本检查使用 '-' 分隔符失败)。
  • CLI
    • 修复了中断的 CLI 输出导致进程退出的问题。
  • 核心
    • 修复了 oss-fuzz #60011(按引用传递的空安全运算符的错误编译)。
    • 修复了在 assert 上使用 ??= 时出现的未初始化值使用问题。
    • 修复了 11.0 版本之前的 FreeBSD 的构建。
  • Curl
    • 修复了将无效回调函数传递给 CURLMOPT_PUSHFUNCTION 时发生的崩溃。
  • 日期
    • 修复了错误 GH-11368(Date modify 返回无效日期时间)。
  • DOM
    • 修复了错误 GH-11625(DOMElement::replaceWith() 不用 DOMDocumentFragment 替换节点,而是只删除节点或根据 libxml2 版本导致包装 <></>)。
  • Fileinfo
    • 修复了错误 GH-11298(finfo 对 xz 文件返回错误的 mime 类型)。
  • FTP
    • 修复了 "overwrite" 上下文选项检查。
    • 修复了错误 GH-10562(连续使用 ftp_nb_fget 导致内存泄漏和无效状态)。
  • GD
    • 修复了大部分外部 libgd 测试失败。
  • Hash
    • 修复了 hash_pbkdf2() 中的未初始化值使用问题,修复了签名中缺少的 $options 参数。
  • Intl
    • 修复了 MessageFormatter::format() 在失败时出现的内存泄漏。
  • Libxml
    • 修复了 GHSA-3qrf-m4j2-pcrr(在不启用外部实体加载的情况下,XML 中的外部实体加载的安全问题)。(CVE-2023-3823)
  • MBString
    • 修复了 GH-11300(许可证问题:受限的 Unicode 许可证头)。
  • Opcache
    • 修复了错误 GH-10914(使用 Enum 和 Callback 函数的 OPcache 导致段错误)。
    • 如果无法分配加速全局变量,则防止潜在的死锁。
  • PCNTL
    • 修复了错误 GH-11498(SIGCHLD 并不总是从 proc_open 返回)。
  • PCRE
    • 使用 JIT 选项修改 PCRE 正则表达式缓存键。
  • PDO
    • 修复了 GH-11587(在 php8.1 之后,当 PDO::ATTR_EMULATE_PREPARES 为真且 PDO::ATTR_STRINGIFY_FETCHES 为真时,小数零不再填充)。
  • PDO SQLite
    • 修复了 GH-11492(使测试失败:ext/pdo_sqlite/tests/bug_42589.phpt)。
  • Phar
    • 在 phar 工具中添加了对 EVP_VerifyUpdate() 的缺少检查。
    • 修复了 GHSA-jqcx-ccgc-xwhv(phar_dir_read() 中的缓冲区管理不当)。(CVE-2023-3824)
  • PHPDBG
    • 修复了错误 GH-9669(phpdbg -h 选项未列出 -z 选项)。
  • Session
    • 删除了用于传输会话 ID 的已损坏的 URL 支持。
  • Standard
    • 修复了对象图中两次出现的 RC1 对象的序列化。
  • SQLite3
    • 修复了 SQLite3Stmt::__construct 中替换的错误处理。

版本 8.1.21

  • CLI
    • 修复了错误 GH-11246(cli/get_set_process_title 在 MacOS 上失败)。
  • 核心
    • 修复了 riscv64 架构/GCC 12 的构建。
  • Curl
    • 修复了错误 GH-11433(无法将 CURLOPT_ACCEPT_ENCODING 设置为 NULL)。
  • DOM
    • 修复了错误 GH-11288GH-11289GH-11290GH-9142(DOMExceptions 和 replaceWith 导致的段错误)。
    • 修复了错误 GH-10234(设置 DOMAttr::textContent 会导致属性值为空)。
    • 修复了 DOMNodeList::item 存根文件中的返回值。

    • 修复了 DOMDocument::getElementsByTagNameNS 使用 '*' 命名空间时的规范合规性错误。
    • 修复了 DOMElement::append() 和 DOMElement::prepend() 的层次结构检查。
    • 修复了 bug GH-11347(在 xpath 查询中调用静态方法时出现内存泄漏)。
    • 修复了 bug #67440(DOMDocumentFragment 的 append_node 不会协调命名空间)。
    • 修复了 bug #81642(DOMChildNode::replaceWith() 在用节点本身替换节点时出现 bug)。
    • 修复了 bug #77686(已移除的元素仍会被 getElementById 返回)。
    • 修复了 bug #70359(对 DOMAttr 使用 print_r() 会导致 php_libxml_node_free_list() 中出现段错误)。
    • 修复了 bug #78577(DOMNameSpace 调试信息处理程序中出现崩溃)。
    • 修复了 getAttributeNodeNS() 的生命周期问题。
    • 修复了克隆命名空间声明时出现的“无效状态错误”。
    • 修复了 bug #55294 和 #47530 和 #47847(各种命名空间协调问题)。
    • 修复了 bug #80332(DOMNamedNodeMap 的数组访问功能完全损坏)。
  • Opcache
    • 修复了 zend_shared_alloc_startup() 中的分配循环。
    • 使用 ALLOC_FALLBACK 时,smm_shared_globals 出现访问冲突。
    • 修复了 bug GH-11336(即使 opcache.file_cache_only=1,php 仍然尝试解锁共享内存 ZendSem,但它从未被锁定)。
  • OpenSSL
    • 修复了 bug GH-9356 subjectAltNames 中 IPv6 地址字段的验证不完整(James Lucas,Jakub Zelenka)。
  • PGSQL
    • 修复了 pg_trace 出现间歇性段错误的问题。
  • Phar
    • 修复了 FreeBSD 中 phar 生成时的交叉编译检查。
  • SPL
    • 修复了 bug GH-11338(SplFileInfo 在有多个斜杠时 getBasename 返回空值)。
  • Standard
    • 修复了 array_merge_recursive() 中对 NULL 指针的访问。
    • 修复了 array_multisort() 中的异常处理。

版本 8.1.20

  • 核心
    • 修复了 bug GH-9068(条件跳转或移动依赖于未初始化的值)。
    • 修复了 bug GH-11189(在 zend_hash_do_resize 中超出内存限制会使数组处于无效状态)。
    • 修复了 bug GH-11222(在重新散列期间,按引用进行 foreach 可能会跳过键)。
  • 日期
    • 修复了 bug GH-11281(DateTimeZone::getName() 在偏移量中不包含秒)。
  • Exif
    • 修复了 bug GH-10834(exif_read_data() 无法读取较小的流包装器块大小)。
  • FPM
    • 修复了 bug GH-10461(由于 child->ev_std(out|err) 的释放后使用导致 PHP-FPM 段错误)。
    • 修复了 bug #64539(FPM 状态页面:query_string 未正确 JSON 编码)。
    • 修复了无效主脚本文件句柄的内存泄漏。
  • Hash
    • 修复了 bug GH-11180(hash_file() 似乎限制为 3 个参数)。
  • LibXML
    • 修复了 bug GH-11160(一些测试在使用新的 libxml 2.11.0 构建时失败)。
  • Opcache
    • 修复了 bug GH-11134(不正确的匹配默认分支优化)。
    • 修复了过宽的 OR 和 AND 范围推断。
    • 修复了 bug GH-11245(在某些特定情况下,只有一个默认语句的 SWITCH 会导致段错误)。
  • PGSQL
    • 修复了 pg_lo_export() 的参数解析。
  • Phar
    • 修复了 bug GH-11099(交叉编译期间生成 phar.php 无法完成)。
  • Soap
    • 修复了 bug GHSA-76gg-c692-v2mw(SOAP 的 HTTP Digest 身份验证中缺少错误检查且随机字节不足)。(CVE-2023-3247)
    • 修复了 bug GH-8426(soap 扩展构建时 make test 失败)。
  • SPL
    • 修复了 bug GH-11178(spl_array_it_get_current_data 中出现段错误(PHP 8.1.18))。
  • Standard
    • 修复了 bug GH-11138(move_uploaded_file() 为源文件发出 open_basedir 警告)。
    • 修复了 bug GH-11274(在 HTTP 308 重定向后,POST/PATCH 请求切换到 GET)。
  • Streams
    • 修复了 bug GH-10031([Stream] HTTP 上的 STREAM_NOTIFY_PROGRESS 对数据的最后一部分发出不规则的通知)。
    • 修复了 bug GH-11175(流套接字超时)。
    • 修复了 bug GH-11177(将超时设置为 -1 传递给 stream_socket_accept/stream_socket_client 时,ASAN UndefinedBehaviorSanitizer)。

版本 8.1.19

  • 核心
    • 修复了常量表达式中不一致的浮点数取反。
    • 修复了 bug GH-8841(php-cli 调用格式错误的函数时出现核心转储)。
    • 修复了 bug GH-10737(PHP 8.1.16 在 sapi/apache2handler/sapi_apache2.c 的第 597 行出现段错误)。
    • 修复了 bug GH-11028(zval_undefined_cv 中出现堆缓冲区溢出)。
    • 修复了 bug GH-11108(在 ??= 中回退后,CG(memoize_mode) 状态不正确)。
  • DOM
    • 修复了 bug #80602(使用 DOMChildNode::before() 时出现段错误)。
    • 修复了 dom_zvals_to_fragment() 中不正确的错误处理。
  • Exif
    • 修复了 bug GH-9397(exif 读取:警告和错误:可能无效的字节序、非法 IFD 大小和未定义索引)。
  • Intl
    • 修复了 bug GH-11071(不再显示 TZData 版本)。
  • PCRE
    • 修复了 bug GH-10968(preg_replace_callback_array() 中出现段错误)。
  • Standard
    • 修复了 bug GH-10990(在按引用迭代 $additional_headers 数组后,mail() 抛出 TypeError)。
    • 修复了 bug GH-9775(在使用枚举时,array_unique 返回重复项)。

版本 8.1.18

  • 核心
    • 添加了对 ZTS/Linux 构建中 max_execution_time 的可选支持。
    • 修复了递归 AST 评估中的释放后使用。
    • 修复了 bug GH-8646(PHP FPM 8.1 内存泄漏)。
    • 修复了 bug GH-10801(CTE 函数中的命名参数会导致段错误)。
    • 修复了 bug GH-8789(PHP 8.0.20 (ZTS) zend_signal_handler_defer 在 apache 上崩溃)。
    • 修复了 bug GH-10015(zend_signal_handler_defer 在 apache 关闭时崩溃)。
    • 修复了 bug GH-10810(修复 Exception::__toString() 中的 NUL 字节终止符)。
    • 修复了混合使用 __callStatic() 和 FFI 时可能出现的内存损坏。
  • 日期
    • 修复了 bug GH-10583(使用 tz 模式修改 DateTime 应该不会更新链接的时区)。
  • FPM
    • 修复了 bug GH-10611(fpm_env_init_main 泄漏 environ)。
    • 在 fpm_main 中销毁 file_handle。
    • 修复了 bug #74129(当路径中包含空格时,apache ProxyPassMatch 的 SCRIPT_NAME 不正确)。
  • FTP
    • 传播 ftp_close() 的成功状态。
    • 修复了 bug GH-10521(ftp_get/ftp_nb_get resumepos 偏移量最大为 10GB)。
  • IMAP
    • 修复了 Clang 16 的构建失败。
  • MySQLnd
    • 修复了 bug GH-8979(启用 SSL 的 MySQL 连接可能出现内存泄漏)。
  • Opcache
    • 修复了 macOS 的构建以适应 pkg-config 设置。
    • 修复了 bug GH-8065(opcache.consistency_checks > 0 在 fpm 上下文中导致 PHP >= 8.1.5 出现段错误)。
  • OpenSSL
    • 在文件写入函数中添加了缺少的错误检查。
  • PDO Firebird
    • 修复了 bug GH-10908(在带有 64 位内核和 32 位用户空间的 RPI 上,PDO Firebird 出现总线错误)。
  • PDO ODBC
    • 修复了 SQLAllocHandle 上缺少和不一致的错误检查。
  • Phar
    • 修复了 bug GH-10766(使用 Phar::Zip 格式创建的 PharData 存档不会保留文件元数据(日期时间))。
    • 在 EVP_MD_CTX_create() 和 EVP_VerifyInit() 中添加了缺少的错误检查。
  • PGSQL
    • 修复了 pg_meta_data(扩展模式)返回的数组中的错别字。
  • SPL
    • 修复了 bug GH-10519(数组数据地址引用问题)。
    • 修复了 bug GH-10844(ArrayIterator 允许修改只读属性)。
  • Standard
    • 修复了 bug GH-10885(stream_socket_server 上下文泄漏)。
    • 修复了 bug GH-10052(Browscap 在请求关闭时(apache2)导致 PHP 8.1.12 崩溃)。
    • 修复了 oss-fuzz #57392(php_fgetcsv() 在使用 \0 分隔符和围栏时出现缓冲区溢出)。
    • 修复了 unpack() 中的未定义行为。

版本 8.1.17

  • 核心
    • 修复了 ZEND_YIELD 中不正确的检查条件。
    • 修复了类型推断中不正确的检查条件。
    • 修复了 OnUpdateMemoryConsumption 中的溢出检查。
    • 修复了 bug GH-9916(在关闭序列中,如果协程挂起在生成器中,则会发出不可避免的致命错误或崩溃)。
    • 修复了 bug GH-10437(在回退后,在关闭函数中使用协程时出现段错误/断言)。
    • 修复了复合赋值操作码的 SSA 对象类型更新。
    • 修复了语言扫描器生成构建。
    • 修复了 zend_update_static_property() 误导性地使用错误的返回类型调用 zend_update_static_property_ex()。
    • 修复了 bug GH-10570(使用整数常量名称作为属性名称时,修复了未知字符串哈希)。
    • 修复了 php_fopen_primary_script() 调用导致 zend_destroy_file_handle() 释放句柄上的悬空指针,因为该句柄未初始化。
  • Curl
    • 修复了编译时的弃用警告。
    • 修复了 bug GH-10270(无法在 readfunc 回调中返回 CURL_READFUNC_PAUSE)。
  • 日期
    • 修复了 GH-10447('p' 格式说明符不会为 00:00 生成 'Z')。
  • FFI
    • 修复了 ffi 位字段中不正确的移位和掩码。
  • Fiber
    • 修复了 alpine x86 上的汇编。
    • 修复了 bug GH-10496(当垃圾收集器在协程内部被调用时出现段错误)。
  • FPM
    • 修复了 bug GH-10315(FPM 未知子进程警报无效)。
    • 修复了 bug GH-10385(FPM 配置测试成功后提前退出)。
  • Intl
    • 修复了 bug GH-10647(Spoolchecker isSuspicious/areConfusable 方法错误代码的参数始终返回 NULL0)。
  • JSON
    • 修复了 JSON 扫描器和解析器生成构建。
  • MBString
    • ext/mbstring:修复 new_value 长度检查。
    • 修复了 bug GH-10627(mb_convert_encoding 在 Windows 上导致 PHP 崩溃)。

  • Opcache
    • 修复了不正确的 page_size 检查。
  • OpenSSL
    • 修复了 php_openssl_set_server_dh_param() 函数处理 DH 参数错误的问题。
  • PDO OCI
    • 修复了 bug #60994(读取多字节 CLOB 时最多读取 8192 个字符)。
  • PHPDBG
    • 修复了 bug GH-10715(在错误使用 --run 选项时出现堆缓冲区溢出)。
  • PGSQL
    • 修复了 GH-10672(在 strict_types 模式下,pg_lo_open 出现段错误)。
  • Phar
    • 修复了 phar tar 解析中的错误检查。
  • Reflection
    • 修复了 bug GH-10623(使用可变参数时,Reflection::getClosureUsedVariables 操作码修复)。
    • 修复了使用内部函数挂起的 ReflectionFiber 时出现的段错误。
  • Session
    • 修复了 ps_files_cleanup_dir() 函数在失败代码路径上的问题,使用 -1 而不是 0 作为返回值,因为调用者将后者视为成功。(nielsdos)
  • Standard
    • 修复了 bug GH-10292(将 srand() 和 mt_srand() 的第一个参数的默认值设为未知)。
    • 修复了 map_from_unicode() 函数中 cs_8559_5 的错误检查。
    • 修复了 bug GH-9697,reset/end/next/prev() 尝试移动某些内部类(如 FFI 类)的属性表的指针。
    • 修复了 browsecap 中 pcre2_match() 的错误检查。
  • Tidy
    • 修复了尝试打开不存在的文件或超过 4GB 的文件时出现的内存泄漏。
    • 添加了 tidyLoadConfig 的缺失错误检查。
  • Zlib
    • 修复了 output_handler 指令值的长度计算问题,之前计算时包含了字符串终止符。

版本 8.1.16

  • 核心
    • 修复了 bug #81744(Password_verify() 在某些哈希下始终返回 true)。
    • 修复了 bug #81746(公共路径解析代码中出现 1 字节数组越界)。
  • SAPI
    • 修复了 bug GHSA-54hq-v5wp-fqgv(解析 multipart 请求体时出现拒绝服务漏洞)。(CVE-2023-0662)

版本 8.1.15

  • Apache
    • 修复了 bug GH-9949(不完整的 POST 请求出现部分内容)。
  • 核心
    • 修复了 bug GH-10072(当覆盖 execute_ex 并在内部代码中使用 __call 蹦床时,PHP 会崩溃)。
    • 修复了 GH-10251(断言 `(flag & (1<<3)) == 0' 失败)。
    • 修复了 opcode 更新后块优化过程中错误的比较。
  • 日期
    • 修复了 bug GH-9891(使用 unix 时间戳 (@) 修改 DateTime 必须像 setTimestamp 一样工作)。
    • 修复了 bug GH-10218(DateTimeZone 无法解析包含“+”字符的时区)。
  • Fiber
    • 修复了堆栈分配大小的断言。
  • FPM
    • 修复了 bug GH-9981(FPM 没有重置 fastcgi.error_header)。
    • 修复了 bug #67244(侦听的 Unix 套接字的拥有者/组错误)。
  • Hash
    • 处理 XXH3 初始化过程中出现的异常。(nielsdos)
  • LDAP
    • 修复了 bug GH-10112(LDAP\Connection::__construct() 引用了 ldap_create())。
  • MBString
    • 修复:mb_strlen(以及其他几个 mbstring 函数)会错误地将 0x80、0xFD、0xFE、0xFF 和某些其他字节值视为 2 字节 SJIS 字符的第一个字节。
  • Opcache
    • 修复了 zend_runtime_jit() 中的错误的退出值。(Max Kellermann)
    • 修复了 accel_preload() 中访问未初始化变量的问题。
    • 修复了 zend_jit_find_trace() 导致的崩溃。
    • 为 zend_jit_trace_exit 中的 EXIT_INVALIDATE 添加了缺失的锁。
  • Phar
    • 修复了 phar_object.c 中压缩方法的错误标志检查。(nielsdos)
  • PHPDBG
    • 修复了 phpdbg_load_module_or_extension() 中的未定义行为。
    • 修复了 phpdbg_create_conditional_breal() 中的空指针解引用。
    • 修复了 GH-9710:phpdbg 由于选项“-h”导致的内存泄漏。(nielsdos)
    • 修复了 phpdbg 在输入格式错误时出现的段错误。(nielsdos)
  • Posix
    • 修复了 posix_ttyname() 中的内存泄漏。(girgias)
  • Standard
    • 修复了 GH-10187(stripslashes() 在 arm64 上出现段错误)。
    • 修复了 substr_replace 函数中 repl_ht 中的槽位为 UNDEF 的问题。
  • TSRM
    • 修复了 Windows shmget() 关于 IPC_PRIVATE 的问题。
  • XMLWriter
    • 修复了缺少 xmlTextWriterEndElement 的检查。(nielsdos)

版本 8.1.14

  • 核心
    • 修复了 bug GH-9905(当类未定义时,constant() 的行为不一致)。
    • 修复了 bug GH-9918(README.REDIST.BINS 文件中没有包含 xxHash 的许可证信息)。
    • 修复了 bug GH-9650(无法初始化堆:[0x000001e7])。
    • 修复了 Windows ftok(3) 模拟中的潜在未定义行为。
  • 日期
    • 修复了 bug GH-9699(DateTimeImmutable::diff 在 8.1.10 及更高版本中的差异 - 与时区相关)。
    • 修复了 bug GH-9700(DateTime::createFromFormat:解析 TZID 字符串过于贪婪)。
    • 修复了 bug GH-9866(\DateTimeInterface::diff() 的时区错误)。
    • 修复了 bug GH-9880(使用时区时,DateTime diff 返回错误的天数符号)。
  • FPM
    • 修复了 bug GH-9959(在修复 bug #66694 后,Solaris 端口事件机制仍然存在问题)。
    • 修复了 bug #68207(设置 fastcgi.error_header 可能导致警告)。
    • 修复了 bug GH-8517(fpm_stdio_child_said 中 FPM 主进程随机崩溃)。
  • MBString
    • 修复了 bug GH-9535(PHP 8.1 中 mbstring 中 mb_strcut 的行为发生了变化)。
  • Opcache
    • 修复了 bug GH-9968(在 OPCache 预加载期间出现段错误)。
  • OpenSSL
    • 修复了 bug GH-9064(如果 openssl 使用 --no-ec 编译,PHP 无法构建)。
    • 修复了 bug GH-10000(当 OpenSSL 使用 no-dsa 编译时,OpenSSL 测试失败)。
  • Pcntl
    • 修复了 bug GH-9298(在 rshutdown 后调用信号处理程序会导致崩溃)。
  • PDO_Firebird
    • 修复了 bug GH-9971(PDO_Firebird 返回的 NUMERIC 值不正确)。
  • PDO/SQLite
    • 修复了 bug #81740(PDO::quote() 可能返回未加引号的字符串)。(CVE-2022-31631)
  • Session
    • 修复了 GH-9932(会话名称在使用 . 和 [ 时静默失败)。
  • SPL
    • 修复了 GH-9883(SplFileObject::__toString() 读取下一行)。
    • 修复了 GH-10011(跳板自动加载器将被重新注册,无法取消注册)。
  • SQLite3
    • 修复了 bug #81742(通过使用文件 URI 在 SQLite3 中绕过 open_basedir)。

版本 8.1.13

  • CLI
    • 修复了 bug GH-9709(使用 -w/-s 选项时出现空指针解引用)。
  • 核心
    • 修复了错误 GH-9752(当使用额外的命名参数在参数求值过程中中断时,生成器崩溃)。
    • 修复了错误 GH-9801(当初始化期间内存限制超出时,生成器崩溃)。
    • 修复了 Windows shm*() 函数中潜在的空指针解引用。
    • 修复了错误 GH-9750(当在参数求值过程中中断时,生成器内存泄漏)。
  • 日期
    • 修复了 bug GH-9763(DateTimeZone 构造函数错误地处理输入,如果参数是大于 100*60 分钟的偏移量,则添加空字节)。
  • FPM
    • 修复了错误 GH-9754(SaltStack(使用 Python 子进程)在运行 php-fpm 8.1.11 时挂起)。
  • mysqli
    • 修复了错误 GH-9841(mysqli_query 即使使用静默错误模式也抛出警告)。
  • MySQLnd
    • 修复了由于对齐不匹配导致的潜在堆损坏。
  • OpenSSL
    • 修复了错误 GH-8430(使用 no-md2、no-md4 或 no-rmd160 编译的 OpenSSL 无法构建)。
  • SOAP
    • 修复了 GH-9720(序列化响应时出现空指针解引用)。

版本 8.1.12

  • 核心
    • 修复了 FreeBSD i386 架构上 Fiber 出现的段错误。
  • Fileinfo
    • 修复了错误 GH-8805(finfo 对 woff/woff2 文件返回错误的 mime 类型)。
  • GD
    • 修复了错误 #81739:由于 imageloadfont() 中输入验证不足导致的越界读取。(CVE-2022-31630)。
  • Hash
    • 修复了错误 #81738:hash_update() 中针对长参数的缓冲区溢出。(CVE-2022-37454)。
  • MBString
    • 修复了 bug GH-9683(在 mb_encode_mimeheader 中指定 ISO-2022-JP-MS 时出现问题)。
  • Opcache
    • 添加了 x86 架构上 jit 的间接调用减少。
  • Session
    • 修复了错误 GH-9583(session_create_id() 对于没有 validateId() 方法的用户定义保存处理程序失败)。
  • Streams
    • 修复了 bug GH-9590(stream_select 在出现异常或有效的 fd 集为空时不会中止)。

版本 8.1.11

  • 核心
    • 修复了 bug #81726:phar 包装器:使用 quine gzip 文件时出现 DOS。(CVE-2022-31628)
    • 修复了 bug #81727:不要修改与具有特定语义含义的 HTTP 变量名称冲突的 HTTP 变量名称。(CVE-2022-31629)
    • 修复了 bug GH-9323(ZEND_RETURN/GC/zend_call_function 中的崩溃)(Tim Starling)
    • 修复了 bug GH-9361(脚本退出时出现分段错误 #9379)。
    • 修复了 bug GH-9447(对于常量表达式中的 new 和类常量,AST 导出发出无效的类 FQN)。
  • DOM
    • 修复了 bug #79451(DOMDocument->replaceChild 在 doctype 上会导致 double free)。
  • FPM
    • 修复了 bug GH-8885(带有 stderr 的 FPM access.log 在守护进程重新加载后开始将日志写入 error_log)。
    • 修复了 bug #77780(当先前连接中止时,“Headers already sent…”)。
  • GMP
    • 修复了错误 GH-9308(当将 GMP 对象传递给 gmp_init() 时,GMP 抛出错误)。
  • Intl
    • 修复了错误 GH-9421(NumberFormatter 中的 ValueError 参数数量错误)。
  • PCRE
    • 修复了 Apple Silicon 上的 pcre.jit。
  • PDO_PGSQL
    • 修复了错误 GH-9411(PgSQL 大对象资源被错误地关闭)。
  • Reflection
    • 修复了错误 GH-8932(ReflectionFunction 没有提供获取 Closure 的调用类的方法)。
  • Streams
    • 修复了 bug GH-9316(对于长状态行,$http_response_header 不正确)。

版本 8.1.10

  • 核心
    • 修复了 run-tests.php 的 --CGI-- 支持。
    • 修复了最新 clang 中不正确的双精度浮点数到长整数的转换。
    • 修复了 bug GH-9266(当存在析构函数时,GC 根缓冲区会不断增长)。
  • 日期
    • 修复了错误 GH-8730(DateTime::diff 在相同时区但不同类型时计算错误)。
    • 修复了错误 GH-8964(应用小于 1 秒的增量后,DateTime 对象比较)。
    • 修复了 bug GH-9106:(自 PHP 8.1.0 以来,添加到 DateTimeInterface 的 DateInterval 1.5s 会向下取整)。
    • 修复了错误 #81263(DateTimeImmutable::diff 的结果错误)。
  • DBA
    • 修复了 DB 创建失败时 LMDB 驱动程序的内存泄漏。
    • 修复了 bug GH-9155(dba_open("non-existing", "c-", "flatfile") 导致段错误)。
  • IMAP
    • 修复了 bug GH-9309(在 imap_close() 后使用连接时出现段错误)。
  • Intl
    • 修复了 IntlDateFormatter::formatObject() 参数类型。
  • MBString
    • 修复了 bug GH-9008(mb_detect_encoding(): 使用空 $encodings 时结果错误)。
  • OPcache
    • 修复了 bug GH-9033(加载黑名单文件可能会因长度为负而失败)。
    • 修复了错误 GH-9164(zend_accel_class_hash_copy 中的段错误)。
  • PDO_SQLite
    • 修复了 bug GH-9032(SQLite3 授权程序在 NULL 值上崩溃)。
  • SQLite3
    • 修复了 bug GH-9032(SQLite3 授权程序在 NULL 值上崩溃)。
  • Streams
    • 修复了 bug GH-8472(stream_socket_accept 返回的资源可能具有不正确的元数据)。
    • 修复了 bug GH-8409(SSL 握手超时会导致持久连接挂起)。

版本 8.1.9

  • CLI
    • 修复了内置服务器通过 PHP_CLI_SERVER_WORKERS 环境变量可能出现的溢出问题。
    • 修复了 GH-8952(不再可能有意关闭标准句柄)。
  • 核心
    • 修复了 bug GH-8923(Windows 上的 error_log 可能会持有文件写入锁)。
    • 修复了 bug GH-8995(WeakMap 对象引用偏移导致 TypeError)。
  • 日期
    • 修复了 bug #80047(DatePeriod 在使用自定义 DateTimeImmutable 时不会发出警告)。
  • FPM
    • 修复了 zlog 消息前缀,在错误的地址上释放。
    • 修复了配置加载失败时可能出现的 double free。(Heiko Weber)。
  • GD
    • 修复了 bug GH-8848(imagecopyresized() 错误引用了错误的参数)。
  • Intl
    • 修复了 ICU 69.x 及更高版本的构建。
  • OPcache
    • 修复了 bug GH-8847(当检查有效文件的 php 语法时,PHP 会无限期地挂起在 100% cpu 上)。
    • 修复了错误 GH-8030(使用 JIT 和大型匹配/开关语句时的段错误)。
  • Reflection
    • 修复了 bug GH-8943(修复了带有只读修饰符的 Reflection::getModifierNames())。
  • Standard
    • 修复了 clang > 12 版本下 crypt_sha256/512 api 的构建问题。
    • 在 macOS 上使用 CCRandomGenerateBytes 而不是 arc4random_buf。(David Carlier)。
    • 修复了 bug GH-9017(php_stream_sock_open_from_socket 可能会返回 NULL)。

版本 8.1.8

  • 核心
    • 修复了 bug GH-8338(Intel CET 无意中被禁用)。
    • 修复了在使用 JIT 时,内部枚举的 Enum::from/tryFrom 的泄漏。
    • 修复了从扩展代码调用具有静态返回类型的内部方法的问题。
    • 修复了 bug GH-8655(将对象转换为数组不会解包 refcount=1 的引用)。
    • 修复了 php_binary_init() 中潜在的释放后使用。
  • CLI
    • 修复了 GH-8827(不再可能有意关闭标准句柄)。
  • COM
    • 修复了 bug GH-8778(使用大数字变体进行整数算术运算失败)。
  • Curl
    • 修复了 CURLOPT_TLSAUTH_TYPE 未被视为字符串选项。
  • 日期
    • 修复了 bug #72963(CreateFromFormat 和相关函数中的空字节注入)。
    • 修复了 bug #74671(DST 时区缩写具有错误的偏移量)。
    • 修复了 bug #77243(负数年份的星期几计算不正确)。
    • 修复了 bug #78139(timezone_open 接受无效的时区字符串参数)。
  • Fileinfo
    • 修复了 bug #81723(finfo_buffer 中的堆缓冲区溢出)。(CVE-2022-31627)
  • FPM
    • 修复了 bug #67764(fpm:syslog.ident 不起作用)。
  • GD
    • 修复了 imagecreatefromavif() 内存泄漏。
  • MBString
    • mb_detect_encoding 识别捷克语字母表中的所有字母
    • mb_detect_encoding 识别匈牙利语字母表中的所有字母
    • 修复了 bug GH-8685(mbstring 启动时 pcre 未准备好)。
    • 在 8.1.0 中更改后,恢复了 Shift-JIS 中 0x5C/0x7E 的向后兼容映射。
  • ODBC
    • 修复了对单键连接字符串的处理。
  • OPcache
    • 修复了 bug GH-8591(私有实例方法更改后,跟踪 JIT 崩溃)。
  • OpenSSL
    • 修复了 bug #50293(几个 openssl 函数忽略 VCWD)。
    • 修复了 bug #81713(在处理证书的几个 OpenSSL 函数中存在空字节注入)。
  • PDO_ODBC
    • 修复了对单键连接字符串的处理。
  • Zip
    • 修复了 bug GH-8781(ZipArchive::close 删除 zip 文件而不更新状态缓存)。

版本 8.1.7

  • CLI
    • 修复了 bug GH-8575(CLI 过早关闭标准流)。
  • 日期
    • 修复了 bug #51934(strtotime 复数/不正确的时间)。
    • 修复了 bug #51987(Datetime 无法解析 ISO 8601 序数日期(扩展格式))。

    • 修复了错误 #66019(DateTime 对象不支持短 ISO 8601 时间格式 - YYYY-MM-DDTHH)。
    • 修复了错误 #68549(处理日期时,时区和偏移量未正确使用)。
    • 修复了错误 #81565(当提供的时区包含秒时,日期解析失败)。
    • 修复了错误 GH-7758(负时间戳和小数存在问题)。
  • FPM
    • 修复了 MacOS 上的 ACL 构建检查。
    • 修复了错误 #72185:php-fpm 写入空 fcgi 记录导致 nginx 502。
  • mysqlnd
    • 修复了错误 #81719:mysqlnd/pdo 密码缓冲区溢出。(CVE-2022-31626)
  • OPcache
    • 修复了错误 GH-8461(函数/方法更改后,跟踪 JIT 崩溃)。
  • OpenSSL
    • 修复了错误 #79589(错误:14095126:SSL 例程:ssl3_read_n:读取时意外 EOF)。
  • Pcntl
    • 修复了 Haiku 构建。
  • pgsql
    • 修复了错误 #81720:pg_query_params() 中的未初始化数组。(CVE-2022-31625)
  • Soap
    • 修复了错误 GH-8578(SoapHeader 构造函数参数错误时出现错误)。
    • 修复了错误 GH-8538(SoapClient 可能会删除 nmtoken 的一部分)。
  • SPL
    • 修复了错误 GH-8235(iterator_count() 可能会无限循环)。
  • Standard
    • 修复了错误 GH-8185(在 ZTS 中,dl() 后扩展卸载期间崩溃)。
  • Zip
    • 修复了 ZipArchive::replaceFile 中索引的类型。

版本 8.1.6

  • 核心
    • 修复了错误 GH-8310(不再识别注册表设置)。
    • 修复了资源 ID 分配期间潜在的竞争条件。
    • 修复了错误 GH-8133(包含枚举的数组的常量预加载会导致段错误)。
    • 修复了 Haiku ZTS 构建。
  • 日期
    • 修复了错误 GH-7752(DateTimeZone::getTransitions() 返回的数据不足)。
    • 修复了错误 GH-8108(时区无法按预期工作)。
    • 修复了错误 #81660(DateTimeZone::getTransitions() 返回无效数据)。
    • 修复了错误 GH-8289(在 yield from 迭代器中抛出的异常不会重新抛到生成器中)。
  • FFI
    • 修复了错误 GH-8433(在 FFI 中将函数指针赋值给结构体会导致内存泄漏)。
  • FPM
    • 修复了错误 #76003(FPM /status 报告错误的活动进程数)。
    • 修复了错误 #77023(FPM 无法关闭进程)。
    • 修复了 kqueue 删除回调日志消息中的注释。
  • Hash
    • 修复了错误 #81714(序列化已完成的 HashContext 时出现段错误)。
  • Iconv
    • 修复了错误 GH-8218(ob_end_clean 不会重置 Content-Encoding 标头)。
  • Intl
    • 修复了错误 GH-8364(msgfmt_format $values 可能不支持引用)。
  • MBString
    • 为无效 UTF-8 文本发出的错误标记数量与 WHATWG 规范匹配。这是对 PHP 8.0 及更早版本行为的回归。
  • MySQLi
    • 修复了错误 GH-8267(MySQLi 在 Windows 上使用不受支持的格式说明符)。
  • SPL
    • 修复了错误 GH-8366(调用 __construct() 时,ArrayIterator 可能会泄漏)。
    • 修复了错误 GH-8273(SplFileObject:key() 返回错误的值)。
  • Streams
    • 修复了 php://temp 在切换到临时文件时不保留文件位置的问题。
  • zlib
    • 修复了错误 GH-8218(ob_end_clean 不会重置 Content-Encoding 标头)。

版本 8.1.5

  • 核心
    • 修复了错误 GH-8176(属性初始值设定项中的枚举值泄漏)。
    • 修复了内部属性参数的释放。
    • 修复了错误 GH-8070(内部函数属性哈希的内存泄漏)。
    • 修复了错误 GH-8160(Alpine 上的 ZTS 支持已损坏)。
  • Filter
    • 修复了 php_filter_validate_domain() 中的有符号数混淆。
  • Intl
    • 修复了错误 GH-8115(实例化 Intl 类时无法捕获参数类型弃用)。
    • 修复了错误 GH-8142(cygwin 上的编译错误)。
    • 修复了错误 GH-7734(修复 IntlPartsIterator 键偏移一个错误和第一个键)。
  • MBString
    • 修复了错误 GH-8208(mb_encode_mimeheader:$indent 功能已损坏)。
  • MySQLi
    • 修复了错误 GH-8068(mysqli_fetch_object 创建不可访问的属性)。
  • Pcntl
    • 修复了错误 GH-8142(cygwin 上的编译错误)。
  • PgSQL
    • 修复了 LLP64 架构上与 result_type 相关的堆栈损坏。
    • 修复了错误 GH-8253(pg_insert() 对于引用失败)。
  • Sockets
    • 修复了 Solaris 构建。
  • SPL
    • 修复了错误 GH-8121(SplFileObject - 使用 csv 文件的 seek 和 key 不一致)。
    • 修复了错误 GH-8192(在 8.1 中,如果不带返回类型提示,则无法覆盖 DirectoryIterator::current())。
  • Standard
    • 修复了错误 GH-8048(强制 macOS 使用 statfs)。

版本 8.1.4

  • 核心
    • 修复了 Haiku ZTS 构建。
    • 修复了错误 GH-8059扩展未重新生成 arginfo。
    • 修复了错误 GH-8083使用静态变量转储未调用的伪闭包时出现段错误。
    • 修复了错误 GH-7958(嵌套的 CallbackFilterIterator 正在泄漏内存)。
    • 修复了错误 GH-8074(range() 结果的错误类型推断)。
    • 修复了错误 GH-8140(错误的一级可调用按名称优化)。
    • 修复了错误 GH-8082(当观察到时,带有临时 run_time_cache 的 op_arrays 会泄漏内存)。
  • GD
    • 修复了加载隔行图像时的 libpng 警告。
  • FPM
    • 修复了错误 #76109(对 fpm 记分板的不安全访问)。
  • Iconv
    • 修复了错误 GH-7953(ob_clean() 仅不设置 Content-Encoding)。
    • 修复了错误 GH-7980(iconv_mime_decode 的意外结果)。
  • MBString
    • 修复了错误 GH-8128(mb_check_encoding 对 7bit 的错误结果)。
  • MySQLnd
    • 修复了错误 GH-8058(mysqlnd 包中的空指针取消引用)。
  • Reflection
    • 修复了错误 GH-8080(ReflectionClass::getConstants() 取决于 def. 顺序)。
  • Zlib
    • 修复了错误 GH-7953(ob_clean() 仅不设置 Content-Encoding)。

版本 8.1.3

  • 核心
    • 修复了错误 #81430(属性实例化留下悬空指针)。
    • 修复了错误 GH-7896(环境变量在 Windows 上可能会被破坏)。
    • 修复了错误 GH-7883(INI 文件不可读时出现段错误)。
  • FFI
    • 修复了错误 GH-7867(从指针到数组的 FFI::cast() 已损坏)。
  • Filter
    • 修复 #81708:由于 php_filter_float() 对整数失败导致的 UAF。(CVE-2021-21708)
  • FPM
    • 修复了无效端口上的内存泄漏。
    • 修复了错误 GH-7842(FPM 状态页面返回的 OpenMetrics 响应格式无效)。
  • MBString
    • 修复了错误 GH-7902(mb_send_mail 可能会仅用 LF 分隔标头)。
  • MySQLnd
    • 修复了错误 GH-7972(MariaDB 版本前缀 5.5.5- 未被剥离)。
  • pcntl
    • 修复了 DragonFlyBSD 的 pcntl_rfork 构建。
  • Sockets
    • 修复了错误 GH-7978(套接字扩展编译错误)。
  • Standard
    • 修复了错误 GH-7899(unpack 对负整数的回归)。
    • 修复了错误 GH-7875(即使日志记录失败抛出异常,邮件也会被发送)。

版本 8.1.2

  • 核心
    • 修复了错误 #81216(空安全运算符泄漏动态属性名称)。
    • 修复了错误 #81684(将空合并赋值与 $GLOBALS["x"] 一起使用会导致操作码错误)。
    • 修复了错误 #81656(GCC-11 静默忽略 -R)。
    • 修复了错误 #81683(在最终或抽象接口方法上,误导性的“访问类型...必须是 public”错误消息)。
    • 修复了错误 #81585(在关闭时,cached_chunks 不会计入 real_size)。
    • 修复了错误 GH-7757(多继承的最终常量会导致致命错误)。
    • 修复了带有 ZEND_FIBER_UCONTEXT 的 zend_fibers.c 构建。
    • 为 fibers 添加了 riscv64 支持。
  • Filter
    • 修复了 FILTER_FLAG_NO_RES_RANGE 标志。
  • Hash
    • 修复了错误 GH-7759(hash() 和 hash_hmac() 的错误返回类型)。
    • 修复了错误 GH-7826(hash_hmac_file 和 hash_file 中的参数名称不一致)。
  • MBString
    • 修复了错误 #81693(mb_check_encoding(7bit) 出现段错误)。
  • MySQLi
    • 修复了错误 #81658(MYSQL_OPT_LOAD_DATA_LOCAL_DIR 在 MariaDB 中不可用)。
    • 引入了 MYSQLI_IS_MARIADB。
    • 修复了错误 GH-7746(mysqli_sql_exception->getSqlState())。
  • MySQLnd
    • 修复了大型 bigint 可能会被截断的错误。
  • OCI8
    • 修复了错误 GH-7765(php_oci_cleanup_global_handles 在第二次调用时出现段错误)。
  • OPcache
    • 修复了错误 #81679(重新附加时,跟踪 JIT 崩溃)。
  • Readline
    • 修复了错误 #81598(无法在 PHP 8 交互式 shell 中输入 Unicode 字符)。
  • Reflection
    • 修复了错误 #81681(ReflectionEnum 抛出异常)。
  • PDO_PGSQL
    • 修复了 PDO PgSQL 的错误消息分配。
  • Sockets
    • 避免在 NetBSD 上的 sockets/multicast.c 中进行 void* 算术运算。
    • 修复了 Haiku 上的 ext/sockets 构建。
  • Spl
    • 修复了错误 #75917(使用 CSV 标志时,SplFileObject::seek 已损坏)。
    • 修复了错误 GH-7809(克隆伪造的 SplFileInfo 对象可能会导致段错误)。
  • Standard
    • 修复了错误 GH-7748(gethostbyaddr 输出二进制字符串)。
    • 修复了错误 GH-7815(php_uname 无法识别最新的 Windows 版本)。

版本 8.1.1

  • IMAP
    • 修复了错误 #81649(imap_(un)delete 接受序列,而不是单个数字)。
  • PCRE
    • 将捆绑的 PCRE2 更新到 10.39。
    • 修复了错误 #74604(php_pcre_replace_impl 中的越界)。
  • Standard
    • 修复了错误 #81659(stream_get_contents() 可能会不必要地过度分配)。

版本 8.1.0

  • 核心
    • 修复了 Windows 上 phpize 构建的文件包含顺序。
    • 为 arr/obj/ref 添加了缺少的哈希表插入 API。
    • 实现了 FR #77372(从上传的文件中删除了相对文件路径)。
    • 修复了错误 #81607(并发访问时的 CE_CACHE 分配)。
    • 修复了错误 #81507(Fiber 在 AIX 上无法编译)。
    • 修复了错误 #78647(zend_do_perform_implementation_check 中的段错误)。
    • 修复了错误 #81518(通过 default_mimetype / default_charset 进行标头注入)。
    • 修复了错误 #75941(使用 clang 在 Solaris 上修复编译失败)。
    • 修复了 bug #81380(观察者可能未正确初始化)。
    • 修复了错误 #81514(在 WeakMap 中使用 Enum 作为键会触发 GC + 段错误)。
    • 修复了错误 #81520(run-tests.php 中的 TEST_PHP_CGI_EXECUTABLE 设置错误)。
    • 修复了错误 #81377($GLOBALS 子键的 unset() 会产生警告)。
    • 修复了错误 #81342(新的 & 符号标记解析取决于其后的换行符)。
    • 修复了错误 #81280(cli.prompt 中的 Unicode 字符会导致段错误)。
    • 修复了错误 #81192(“声明应与...兼容”在使用 traits 时给出错误的行号)。
    • 修复了错误 #78919(CLI 服务器:如果请求启动失败,则清理不足)。
    • 修复了错误 #81303(匹配错误消息改进)。
    • 修复了错误 #81238(Solaris Sparc 缺少 Fiber 支持)。
    • 修复了错误 #81237(伪闭包的比较不起作用)。
    • 修复了错误 #81202(powerpc64 构建在 fibers 上失败)。
    • 修复了错误 #80072(TMPVAR 操作数中的循环反序列化可能会泄漏)。
    • 修复了错误 #81163(__sleep 允许返回非数组)。
    • 修复了错误 #75474(函数范围的静态变量未绑定到唯一的函数)。
    • 修复了错误 #53826(如果方法是私有的,则通过父级调用在基类中触发 __callStatic)。
    • 修复了错误 #81076(带有隐式绑定的闭包上的错误调试信息)。
  • CLI
    • 修复了 bug #81496(服务器记录了错误的请求方法)。
  • COM
    • 使用 LANG_NEUTRAL 而不是 LOCALE_SYSTEM_DEFAULT 进行分发。

  • Curl
    • 修复了错误 #81085(为证书字符串支持 CURLOPT_SSLCERT_BLOB)。
  • 日期
    • 修复了错误 #81458(时区更改后回归错误的差异)。
    • 修复了错误 #81500(自 7.3.14 / 7.4.2 以来,区间序列化回归)。
    • 修复了错误 #81504(POSIX 数据的时区转换详细信息不正确)。
    • 修复了错误 #80998(使用反向区间缺少秒)。
    • 加快查找时区偏移信息的速度。
    • 修复了错误 #79580(date_create_from_format 错过了闰年)。
    • 修复了错误 #80963(DateTimeZone::getTransitions() 被截断)。
    • 修复了错误 #80974(不同时区中两个日期之间的差异错误)。
    • 修复了错误 #80998(使用反向区间缺少秒)。
    • 修复了错误 #81097(DateTimeZone 在提供带秒的偏移量时静默回退到 UTC)。
    • 修复了错误 #81106(8.1 中的回归:add() 现在截断 ->f)。
    • 修复了错误 #81273(日期区间计算不正确)。
    • 修复了错误 #52480(使用 DateInterval 的差异不正确)。
    • 修复了错误 #62326(date_diff() 函数返回错误结果)。
    • 修复了错误 #64992(2038 年后未处理夏令时)。
    • 修复了错误 #65003(日期差异错误)。
    • 修复了错误 #66545(DateTime. diff 返回负值)。
    • 修复了错误 #68503(对设置了本地化的两个日期使用 date_diff 返回错误结果)。
    • 修复了错误 #69806(从时间戳获取的日期不正确)。
    • 修复了错误 #71700(2016 年 3 月初和月末之间的差异多了一天)。
    • 修复了错误 #71826(DateTime::diff 在时区“Asia/Tokyo”上混淆)。
    • 修复了错误 #73460(Datetime add 未意识到它已经应用了夏令时更改)。
    • 修复了错误 #74173(DateTimeImmutable::getTimestamp() 在错误的时间触发夏令时切换)。
    • 修复了错误 #74274(正确处理夏令时转换)。
    • 修复了错误 #74524(日期差异计算错误,在同一时区)。
    • 修复了错误 #75167(DateTime::add 只关心向后夏令时转换,不关心向前转换)。
    • 修复了错误 #76032(DateTime->diff 在 UTC 之前的时区的闰日上存在问题)。
    • 修复了错误 #76374(日期差异根据一天中的时间而变化)。
    • 修复了错误 #77571(DateTime 的 diff DateInterval 在从 UTC+01:00 到 UTC+12:00 的时区中不正确)。
    • 修复了错误 #78452(对于 Asia/Tehran,diff 在小时方面出错)。
    • 修复了错误 #79452(DateTime::diff() 在不同时区之间生成月份的方式不同)。
    • 修复了错误 #79698(timelib 处理未来时间戳的方式不正确(由“zic -b slim”触发))。
    • 修复了错误 #79716(创建了无效的日期时间(日期为“00”))。
    • 修复了错误 #80610(DateTime 使用 DateInterval 计算错误)。
    • 修复了错误 #80664(DateTime 对象在夏令时转换周围的行为不正确)。
    • 修复了错误 #80913(DateTime(Immutable)::sub 在夏令时转换周围产生不正确的时间)。
  • DBA
    • 修复了错误 #81588(TokyoCabinet 驱动程序泄漏内存)。
  • DOM
    • 修复了错误 #81433(DOMElement::setIdAttribute() 被调用两次可能会删除 ID)。
  • FFI
    • 修复了错误 #79576(当类型未定义时,“TYPE *”显示无帮助的消息)。
  • Filter
    • 修复了错误 #61700(FILTER_FLAG_IPV6/FILTER_FLAG_NO_PRIV|RES_RANGE 失败)。
  • FPM
    • 修复了错误 #81513(FPM zlog 中堆溢出的未来可能性)。
    • 修复了错误 #81026(PHP-FPM 在根进程中出现 OOB 读写导致权限提升)(CVE-2021-21703)。
    • 添加了 OpenMetrics 状态格式。
    • 在 macOS 上启用进程重命名。
    • 添加了 pm.max_spawn_rate 选项来配置最大生成子进程速率。
    • 修复了错误 #65800(事件端口机制)。
  • FTP
    • 将 resource<ftp> 转换为对象 \FTP\Connection。
  • GD
    • 修复了错误 #71316(imagecreatefromstring 产生的 libpng 警告)。
    • 将 resource<gd font> 转换为对象 \GdFont。
    • 添加了对 Avif 图像的支持
  • 哈希
    • 实现了 FR #68109(添加 MurmurHash V3)。
    • 实现了 FR #73385(添加 xxHash 支持)。
  • JSON
    • 修复了错误 #81532(PHP 8.1 中 json_encode() 的 $depth 行为变化)。
  • LDAP
    • 将 resource<ldap link> 转换为对象 \LDAP\Connection。
    • 将 resource<ldap result> 转换为对象 \LDAP\Result。
    • 将 resource<ldap result entry> 转换为对象 \LDAP\ResultEntry。
  • MBString
    • 修复了错误 #76167(mbstring 可能会使用来自某些先前请求的指针)。
    • 修复了错误 #81390(mb_detect_encoding() 回归)。
    • 修复了错误 #81349(mb_detect_encoding 在某些情况下错误检测 ASCII)。
    • 修复了错误 #81298(当指定 7 位编码时,mb_detect_encoding() 出现段错误)。
  • MySQLi
    • 修复了错误 #70372(为 libmysqlclient 模拟 mysqli_fetch_all())。
    • 修复了错误 #80330(替换 API 和源代码/文档中的语言)。
    • 修复了错误 #80329(添加选项以指定 LOAD DATA LOCAL 白名单文件夹(包括 libmysql))。
  • MySQLnd
    • 修复了错误 #63327(由于错误的对齐导致 mysqlnd 中发生崩溃(总线错误))。
    • 修复了错误 #80761(PDO 使用了过多的内存)。
  • Opcache
    • 修复了错误 #81409(ADD 与数组引用相关的 JIT 代码不正确)。
    • 修复了错误 #81255(使用功能性 JIT 时,PHPUnit 中存在内存泄漏)。
    • 修复了错误 #80959(在 JIT 编译期间构建 cfg 时出现无限循环)。
    • 修复了错误 #81225(启用 JIT 后,pow 运算符的结果错误)。
    • 修复了错误 #81249(启用 JIT 后,属性赋值间歇性失败)。
    • 修复了错误 #81256(对于“preload”和 JIT,断言“zv != ((void *)0)”失败)。
    • 修复了错误 #81133(使用 phpize 构建 opcache 失败)。
    • 修复了错误 #81136(未安装 opcache 头文件)。
    • 添加了继承缓存。
  • OpenSSL
    • 修复了错误 #81502(openssl_decrypt() 的 $tag 参数应接受 null/空字符串)。
    • 将最小 OpenSSL 版本提升到 1.0.2。
  • PCRE
    • 修复了错误 #81424(PCRE2 10.35 JIT 性能下降)。
    • 捆绑的 PCRE2 版本为 10.37。
  • PDO
    • 修复了错误 #40913(PDO_MYSQL:PDO::PARAM_LOB 不会绑定到流以获取 BLOB)。
  • PDO MySQL
    • 修复了错误 #80908(PDO::lastInsertId() 返回错误值)。
    • 修复了错误 #81037(PDO 丢弃了预处理语句的错误消息文本)。
  • PDO OCI
    • 修复了错误 #77120(支持连接时的“成功并包含信息”)。
  • PDO ODBC
    • 为 PDO::getAttribute() 实现了 PDO_ATTR_SERVER_VERSION 和 PDO_ATTR_SERVER_INFO。
  • PDO PgSQL
    • 修复了错误 #81343(pdo_pgsql:调用 closeCursor() 后,布尔值转换不一致)。
  • PDO SQLite
    • 修复了错误 #38334(PDO_SQLITE 的正确数据类型支持)。
  • PgSQL
    • 修复了错误 #81509(pg_end_copy 仍然期望一个资源)。
    • 将 resource<pgsql link> 转换为对象 \PgSql\Connection。
    • 将 resource<pgsql result> 转换为对象 \PgSql\Result。
    • 将 resource<pgsql large object> 转换为对象 \PgSql\Lob。
  • Phar
    • 默认使用 SHA256 进行签名。
    • 添加了对 OpenSSL_SHA256 和 OpenSSL_SHA512 签名的支持。
  • phpdbg
    • 修复了错误 #81135(未知帮助主题导致断言失败)。
  • PSpell
    • 将 resource<pspell> 转换为对象 \PSpell\Dictionary。
    • 将 resource<pspell config> 转换为对象 \PSpell\Config。
  • readline
    • 修复了错误 #72998(readline 完成中的无效读取)。
  • Reflection
    • 修复了错误 #81611(使用 new 时从 ReflectionParameter 获取默认值时出现 ArgumentCountError)。
    • 修复了错误 #81630(PHP 8.1:ReflectionClass->getTraitAliases() 出现内部错误而崩溃)。
    • 修复了错误 #81457(枚举:ReflectionMethod->getDeclaringClass() 返回一个 ReflectionClass)。
    • 修复了错误 #81474(使 ReflectionEnum 和相关类非最终类)。
    • 修复了错误 #80821(ReflectionProperty::getDefaultValue() 返回静态变量的当前值)。
    • 修复了错误 #80564(ReflectionProperty::__toString() 呈现当前值,而不是默认值)。
    • 修复了错误 #80097(ReflectionAttribute 不是 Reflector)。
    • 修复了错误 #81200(无法确定 Closure 是否为静态)。
    • 实现了 ReflectionFunctionAbstract::getClosureUsedVariables。
  • Shmop
    • 修复了错误 #81407(shmop_open 无法附加并导致 php 崩溃)。
  • SimpleXML
    • 修复了错误 #81325(zif_simplexml_import_dom 中出现段错误)。
  • SNMP
    • 为安全协议实现了 SHA256 和 SHA512。
  • Sodium
    • 添加了 XChaCha20 流密码函数。
    • 添加了 Ristretto255 函数,这些函数在 libsodium 1.0.18 中可用。
  • SPL
    • 修复了错误 #66588(SplFileObject::fgetcsv 在过早的 EOF 时错误地返回一行)。
    • 修复了错误 #80663(递归 SplFixedArray::setSize() 可能会导致 double-free)。
    • 修复了错误 #81477(8.0.1 中 LimitIterator + SplFileObject 回归)。
    • 修复了错误 #81112(SplFixedArray 的特殊 json_encode 行为)。
    • 修复了错误 #80945(在 unset() ArrayObject 不存在的键上出现“Notice: Undefined index”)。
    • 修复了错误 #80724(FilesystemIterator::FOLLOW_SYMLINKS 从位掩码中删除 KEY_AS_FILE)。
  • Standard
    • 修复了错误 #81441(在调用某些其他方法后,gethostbyaddr('::1') 返回 ip 而不是名称)。
    • 修复了错误 #81491(错误地使用 libsodium 进行 argon2 哈希)。
    • 修复了错误 #81142(PHP 7.3+ 在对关联数组使用 unserialize() 时出现内存泄漏)。
    • 修复了错误 #81111(在匿名类上意外允许使用 __serialize() 进行序列化)。
    • 修复了错误 #81137(hrtime 在 Sierra 之前的 OSX 上破坏构建)。
    • 修复了错误 #77627(Closure::__invoke 上的 method_exists 不一致)。
  • Streams
    • 修复了错误 #81475(stream_isatty 使用附加的流包装器发出警告)。
  • XML
    • 修复了错误 #79971(特殊字符破坏了 xml 函数中的路径)(CVE-2021-21707)。
    • 修复了错误 #70962(XML_OPTION_SKIP_WHITE 剥离嵌入的空格)。
  • Zip
    • 修复了错误 #81490(ZipArchive::extractTo() 可能会泄漏内存)。
    • 修复了错误 #77978(以冒号结尾的 Dirname 解压缩到错误的目录)。
    • 修复了错误 #81420(ZipArchive::extractTo 在目标目录之外解压缩)(CVE-2021-21706)。
    • 修复了错误 #80833(ZipArchive::getStream 不使用 setPassword)。

版本 8.0.30

  • Libxml
    • 修复了 GHSA-3qrf-m4j2-pcrr(在不启用外部实体加载的情况下,XML 中的外部实体加载的安全问题)。(CVE-2023-3823)
  • Phar
    • 修复了 GHSA-jqcx-ccgc-xwhv(phar_dir_read() 中的缓冲区管理不当)。(CVE-2023-3824)

版本 8.0.29

  • Soap
    • 修复了 bug GHSA-76gg-c692-v2mw(SOAP 的 HTTP Digest 身份验证中缺少错误检查且随机字节不足)。(CVE-2023-3247)

版本 8.0.28

  • 核心
    • 修复了 bug #81744(Password_verify() 在某些哈希下始终返回 true)。
    • 修复了 bug #81746(公共路径解析代码中出现 1 字节数组越界)。
  • SAPI
    • 修复了 bug GHSA-54hq-v5wp-fqgv(解析 multipart 请求体时出现拒绝服务漏洞)。(CVE-2023-0662)

版本 8.0.27

  • PDO/SQLite
    • 修复了 bug #81740(PDO::quote() 可能返回未加引号的字符串)。(CVE-2022-31631)

版本 8.0.26

  • CLI
    • 修复了 bug GH-9709(使用 -w/-s 选项时出现空指针解引用)。
  • 核心
    • 修复了错误 GH-9752(当使用额外的命名参数在参数求值过程中中断时,生成器崩溃)。
    • 修复了错误 GH-9801(当初始化期间内存限制超出时,生成器崩溃)。
    • 修复了 Windows shm*() 函数中潜在的空指针解除引用。
    • 修复了错误 GH-9750(当在参数求值过程中中断时,生成器内存泄漏)。
  • 日期
    • 修复了 bug GH-9763(DateTimeZone 构造函数错误地处理输入,如果参数是大于 100*60 分钟的偏移量,则添加空字节)。
  • FPM
    • 修复了错误 GH-9754(SaltStack(使用 Python 子进程)在运行 php-fpm 8.1.11 时挂起)。
  • mysqli
    • 修复了错误 GH-9841(mysqli_query 即使使用静默错误模式也抛出警告)。
  • OpenSSL
    • 修复了错误 GH-8430(使用 no-md2、no-md4 或 no-rmd160 编译的 OpenSSL 无法构建)。
  • SOAP
    • 修复了 GH-9720(序列化响应时出现空指针解引用)。

版本 8.0.25

  • GD
    • 修复了错误 #81739:由于 imageloadfont() 中输入验证不足导致的越界读取。(CVE-2022-31630)。
  • Hash
    • 修复了错误 #81738:hash_update() 中针对长参数的缓冲区溢出。(CVE-2022-37454)。
  • Session
    • 修复了错误 GH-9583(session_create_id() 对于没有 validateId() 方法的用户定义保存处理程序失败)。
  • Streams
    • 修复了 bug GH-9590(stream_select 在出现异常或有效的 fd 集为空时不会中止)。

版本 8.0.24

  • 核心
    • 修复了 bug GH-9323(ZEND_RETURN/GC/zend_call_function 中的崩溃)(Tim Starling)
    • 修复了 bug GH-9361(脚本退出时出现分段错误 #9379)。
    • 修复了错误 GH-9407(eval'd 代码中的 LSP 错误引用了静态类型的错误类)。
    • 修复了 bug #81727:不要修改与具有特定语义含义的 HTTP 变量名称冲突的 HTTP 变量名称。(CVE-2022-31629)
  • DOM
    • 修复了 bug #79451(DOMDocument->replaceChild 在 doctype 上会导致 double free)。
  • FPM
    • 修复了 bug GH-8885(带有 stderr 的 FPM access.log 在守护进程重新加载后开始将日志写入 error_log)。
    • 修复了 bug #77780(当先前连接中止时,“Headers already sent…”)。
  • GMP
    • 修复了错误 GH-9308(当将 GMP 对象传递给 gmp_init() 时,GMP 抛出错误)。
  • Intl
    • 修复了错误 GH-9421(NumberFormatter 中的 ValueError 参数数量错误)。
  • Phar
    • 修复了 bug #81726:phar 包装器:使用 quine gzip 文件时出现 DOS。(CVE-2022-31628)
  • PDO_PGSQL
    • 修复了错误 GH-9411(PgSQL 大对象资源被错误地关闭)。
  • Reflection
    • 修复了错误 GH-8932(ReflectionFunction 没有提供获取 Closure 的调用类的方法)。
    • 修复了错误 GH-9409(私有方法被错误地转储为“覆盖”)。
  • Streams
    • 修复了 bug GH-9316(对于长状态行,$http_response_header 不正确)。

版本 8.0.23

  • 核心
    • 修复了最新 clang 中不正确的双精度浮点数到长整数的转换。
  • DBA
    • 修复了 DB 创建失败时 LMDB 驱动程序的内存泄漏。
    • 修复了 bug GH-9155(dba_open("non-existing", "c-", "flatfile") 导致段错误)。
  • Intl
    • 修复了 IntlDateFormatter::formatObject() 参数类型。
  • OPcache
    • 修复了 bug GH-9033(加载黑名单文件可能会因长度为负而失败)。
  • PDO_SQLite
    • 修复了 bug GH-9032(SQLite3 授权程序在 NULL 值上崩溃)。
  • SQLite3
    • 修复了 bug GH-9032(SQLite3 授权程序在 NULL 值上崩溃)。
  • Standard
    • 修复了 bug GH-9017(php_stream_sock_open_from_socket 可能会返回 NULL)。
  • Streams
    • 修复了 bug GH-8472(stream_socket_accept 返回的资源可能具有不正确的元数据)。
    • 修复了 bug GH-8409(SSL 握手超时会导致持久连接挂起)。

版本 8.0.22

  • CLI
    • 修复了内置服务器通过 PHP_CLI_SERVER_WORKERS 环境变量可能出现的溢出问题。
  • 核心
    • 修复了 bug GH-8923(Windows 上的 error_log 可能会持有文件写入锁)。
    • 修复了 bug GH-8995(WeakMap 对象引用偏移导致 TypeError)。
  • 日期
    • 修复了 bug #80047(DatePeriod 在使用自定义 DateTimeImmutable 时不会发出警告)。
  • DBA
    • 修复了 LMDB 驱动程序在尝试删除不存在的键时挂起的问题。
  • FPM
    • 修复了 zlog 消息前缀,在错误的地址上释放。
    • 修复了配置加载失败时可能出现的 double free。
  • GD
    • 修复了 bug GH-8848(imagecopyresized() 错误引用了错误的参数)。
  • Intl
    • 修复了 ICU 69.x 及更高版本的构建。
  • OPcache
    • 修复了错误 GH-8847(在检查有效文件的 php 语法时,PHP 在 100% cpu 下无限期挂起)。
  • Standard
    • 修复了 clang > 12 版本下 crypt_sha256/512 api 的构建问题。
    • 在 macOS 上使用 CCRandomGenerateBytes 代替 arc4random_buf。

版本 8.0.21

  • 核心
    • 修复了 php_binary_init() 中潜在的释放后使用。
  • CLI
    • 修复了 GH-8827(不再可能有意关闭标准句柄)。
  • COM
    • 修复了 bug GH-8778(使用大数字变体进行整数算术运算失败)。
  • Curl
    • 修复了 CURLOPT_TLSAUTH_TYPE 未被视为字符串选项。
  • 日期
    • 修复了 bug #74671(DST 时区缩写具有错误的偏移量)。
    • 修复了 bug #77243(负数年份的星期几计算不正确)。
    • 修复了 bug #78139(timezone_open 接受无效的时区字符串参数)。
  • FPM
    • 修复了 bug #67764(fpm:syslog.ident 不起作用)。
  • MBString
    • 修复了 bug GH-8685(mbstring 启动时 pcre 未准备好)。
  • ODBC
    • 修复了对单键连接字符串的处理。
  • OpenSSL
    • 修复了 bug #50293(几个 openssl 函数忽略 VCWD)。
    • 修复了 bug #81713(在处理证书的几个 OpenSSL 函数中存在空字节注入)。
  • PDO_ODBC
    • 修复了 PDOStatement->execute() 成功时的 errorInfo() 结果。
    • 修复了对单键连接字符串的处理。
  • Zip
    • 修复了 bug GH-8781(ZipArchive::close 删除 zip 文件而不更新状态缓存)。

版本 8.0.20

  • CLI
    • 修复了 bug GH-8575(CLI 过早关闭标准流)。
  • 核心
    • 修复了 Haiku ZTS 构建。
  • 日期
    • 修复了 bug GH-8471(使用反射创建的不可变和可变 DateTime 实例转换时出现分段错误)。
  • FPM
    • 修复了 MacOS 上的 ACL 构建检查。
    • 修复了错误 #72185:php-fpm 写入空 fcgi 记录导致 nginx 502。
  • Mysqlnd
    • 修复了错误 #81719:mysqlnd/pdo 密码缓冲区溢出。(CVE-2022-31626)
  • OPcache
    • 修复了 bug GH-8466(当选项不存在时,ini_get() 被优化掉)。
  • Pcntl
    • 修复了 Haiku 构建。
  • Pgsql
    • 修复了错误 #81720:pg_query_params() 中的未初始化数组。(CVE-2022-31625)
  • Soap
    • 修复了错误 GH-8578(SoapHeader 构造函数参数错误时出现错误)。
    • 修复了错误 GH-8538(SoapClient 可能会删除 nmtoken 的一部分)。
  • SPL
    • 修复了错误 GH-8235(iterator_count() 可能会无限循环)。
  • Zip
    • 修复了 ZipArchive::replaceFile 中索引的类型。

版本 8.0.19

  • 核心
    • 修复了错误 GH-8289(在 yield from 迭代器中抛出的异常不会重新抛到生成器中)。
  • 日期
    • 修复了 bug GH-7979(DatePeriod 迭代器在检查是否有效时会前进)。
  • FFI
    • 修复了错误 GH-8433(在 FFI 中将函数指针赋值给结构体会导致内存泄漏)。
  • FPM
    • 修复了错误 #76003(FPM /status 报告错误的活动进程数)。
    • 修复了错误 #77023(FPM 无法关闭进程)。
    • 修复了 kqueue 删除回调日志消息中的注释。
  • Iconv
    • 修复了错误 GH-8218(ob_end_clean 不会重置 Content-Encoding 标头)。
  • Intl
    • 修复了错误 GH-8364(msgfmt_format $values 可能不支持引用)。
  • MySQLi
    • 修复了错误 GH-8267(MySQLi 在 Windows 上使用不受支持的格式说明符)。
  • SPL
    • 修复了错误 GH-8366(调用 __construct() 时,ArrayIterator 可能会泄漏)。
    • 修复了错误 GH-8273(SplFileObject:key() 返回错误的值)。
  • Streams
    • 修复了 php://temp 在切换到临时文件时不保留文件位置的问题。
  • zlib
    • 修复了错误 GH-8218(ob_end_clean 不会重置 Content-Encoding 标头)。

版本 8.0.18

  • 核心
    • 修复了内部属性参数的释放。
    • 修复了错误 GH-8070(内部函数属性哈希的内存泄漏)。
    • 修复了错误 GH-8160(Alpine 上的 ZTS 支持已损坏)。
  • Filter
    • 修复了 php_filter_validate_domain() 中的有符号数混淆。
  • Intl
    • 修复了错误 GH-8142(cygwin 上的编译错误)。
  • MBString
    • 修复了错误 GH-8208(mb_encode_mimeheader:$indent 功能已损坏)。
  • MySQLi
    • 修复了错误 GH-8068(mysqli_fetch_object 创建不可访问的属性)。
  • Pcntl
    • 修复了错误 GH-8142(cygwin 上的编译错误)。
  • PgSQL
    • 修复了 LLP64 架构上与 result_type 相关的堆栈损坏。
    • 修复了错误 GH-8253(pg_insert() 对于引用失败)。
  • Sockets
    • 修复了 Solaris 构建。
  • SPL
    • 修复了错误 GH-8121(SplFileObject - 使用 csv 文件的 seek 和 key 不一致)。
  • Standard
    • 修复了错误 GH-8048(强制 macOS 使用 statfs)。

版本 8.0.17

  • 核心
    • 修复了 Haiku ZTS 构建。
  • GD
    • 修复了加载隔行图像时的 libpng 警告。
  • FPM
    • 修复了错误 #76109(对 fpm 记分板的不安全访问)。
  • Iconv
    • 修复了错误 GH-7953(ob_clean() 仅不设置 Content-Encoding)。
    • 修复了错误 GH-7980(iconv_mime_decode 的意外结果)。
  • MySQLnd
    • 修复了错误 GH-8058(mysqlnd 包中的空指针取消引用)。
  • OPcache
    • 修复了错误 GH-8074(range() 结果的错误类型推断)。
  • Reflection
    • 修复了错误 GH-8080(ReflectionClass::getConstants() 取决于 def. 顺序)。
  • Zlib
    • 修复了错误 GH-7953(ob_clean() 仅不设置 Content-Encoding)。

版本 8.0.16

  • 核心
    • 修复了错误 #81430(属性实例化留下悬空指针)。
    • 修复了错误 GH-7896(环境变量在 Windows 上可能会被破坏)。
  • FFI
    • 修复了错误 GH-7867(从指针到数组的 FFI::cast() 已损坏)。
  • Filter
    • 修复 #81708:由于 php_filter_float() 对整数失败导致的 UAF。
  • FPM
    • 修复了无效端口上的内存泄漏。
  • MBString
    • 修复了错误 GH-7902(mb_send_mail 可能会仅用 LF 分隔标头)。
  • MySQLnd
    • 修复了错误 GH-7972(MariaDB 版本前缀 5.5.5- 未被剥离)。
  • Sockets
    • 修复了 Haiku 上的 ext/sockets 构建。
    • 修复了错误 GH-7978(套接字扩展编译错误)。
  • Standard
    • 修复了错误 GH-7875(即使日志记录失败抛出异常,邮件也会被发送)。

版本 8.0.15

  • 核心
    • 修复了错误 #81656(GCC-11 静默忽略 -R)。
    • 修复了错误 #81585(在关闭时,cached_chunks 不会计入 real_size)。
  • Filter
    • 修复了 FILTER_FLAG_NO_RES_RANGE 标志。
  • Hash
    • 修复了错误 GH-7759(hash() 和 hash_hmac() 的错误返回类型)。
    • 修复了错误 GH-7826(hash_hmac_file 和 hash_file 中的参数名称不一致)。
  • MySQLnd
    • 修复了大型 bigint 可能会被截断的错误。
  • OCI8
    • 修复了错误 GH-7765(php_oci_cleanup_global_handles 在第二次调用时出现段错误)。
  • OPcache
    • 修复了错误 #81679(重新附加时,跟踪 JIT 崩溃)。
  • PDO_PGSQL
    • 修复了 PDO PgSQL 的错误消息分配。
  • Sockets
    • 避免在 NetBSD 上的 sockets/multicast.c 中进行 void* 算术运算。
  • Spl
    • 修复了错误 #75917(使用 CSV 标志时,SplFileObject::seek 已损坏)。

版本 8.0.14

  • 核心
    • 修复了 bug #81582(如果 __toString() 来自 trait,则 Stringable 没有隐式声明)。
    • 修复了 bug #81591(致命错误在某些情况下未正确记录)。
    • 修复了 bug #81626(在包装到 Closure::fromCallable() 的 __сallStatic() 中使用 static:: 时出错)。
    • 修复了 bug #81631(带有动态类名的 ::class 可能会产生错误的行号)。
  • FPM
    • 修复了错误 #81513(FPM zlog 中堆溢出的未来可能性)。
  • GD
    • 修复了错误 #71316(imagecreatefromstring 产生的 libpng 警告)。
  • IMAP
    • 修复了错误 #81649(imap_(un)delete 接受序列,而不是单个数字)。
  • OpenSSL
    • 修复了 bug #75725(./configure:检测 RAND_egd)。
  • PCRE
    • 修复了错误 #74604(php_pcre_replace_impl 中的越界)。
  • SPL
    • 修复了 bug #81587(MultipleIterator 与附加的 SimpleXMLElement 出现分段错误)。
  • Standard
    • 修复了 bug #81618(dns_get_record 在 FreeBSD 上因缺少类型而失败)。
    • 修复了错误 #81659(stream_get_contents() 可能会不必要地过度分配)。

版本 8.0.13

  • 核心
    • 修复了错误 #81518(通过 default_mimetype / default_charset 进行标头注入)。
  • 日期
    • 修复了错误 #81500(自 7.3.14 / 7.4.2 以来,区间序列化回归)。
  • DBA
    • 修复了错误 #81588(TokyoCabinet 驱动程序泄漏内存)。
  • MBString
    • 修复了错误 #76167(mbstring 可能会使用来自某些先前请求的指针)。
  • Opcache
    • 修复了 bug #81512(数组和 JIT 的意外行为)。
  • PCRE
    • 修复了错误 #81424(PCRE2 10.35 JIT 性能下降)。
  • XML
    • 修复了 bug #79971(特殊字符破坏了 xml 函数中的路径)。(CVE-2021-21707)
  • XMLReader
    • 修复了 bug #81521(XMLReader::getParserProperty 可能会在属性有效时抛出异常)。

版本 8.0.12

  • CLI
    • 修复了 bug #81496(服务器记录了错误的请求方法)。
  • 核心
    • 修复了 bug #81435(Observer current_observed_frame 可能会指向旧的(已覆盖的)帧)。
    • 修复了 bug #81380(观察者可能未正确初始化)。
  • DOM
    • 修复了错误 #81433(DOMElement::setIdAttribute() 被调用两次可能会删除 ID)。
  • FFI
    • 修复了错误 #79576(当类型未定义时,“TYPE *”显示无帮助的消息)。
  • FPM
    • 修复了错误 #81026(PHP-FPM 在根进程中出现 OOB 读写导致权限提升)(CVE-2021-21703)。
  • Fileinfo
    • 修复了 bug #78987(编码检测期间内存使用量高)。
  • Filter
    • 修复了错误 #61700(FILTER_FLAG_IPV6/FILTER_FLAG_NO_PRIV|RES_RANGE 失败)。
  • Opcache
    • 修复了 bug #81472(读取 /proc/self/maps 时无法支持大型 Linux 主/次设备号)。
  • Reflection
    • ReflectionAttribute 不再是 final 的。
  • SPL
    • 修复了错误 #80663(递归 SplFixedArray::setSize() 可能会导致 double-free)。
    • 修复了错误 #81477(8.0.1 中 LimitIterator + SplFileObject 回归)。
  • Standard
    • 修复了 bug #69751(更改 sprintf/printf 中缺少/错别字位置说明符的错误消息)。
  • Streams
    • 修复了错误 #81475(stream_isatty 使用附加的流包装器发出警告)。
  • XML
    • 修复了错误 #70962(XML_OPTION_SKIP_WHITE 剥离嵌入的空格)。
  • Zip
    • 修复了错误 #81490(ZipArchive::extractTo() 可能会泄漏内存)。
    • 修复了错误 #77978(以冒号结尾的 Dirname 解压缩到错误的目录)。

版本 8.0.11

  • 核心
    • 修复了 bug #81302(删除流过滤器后的流位置)。
    • 修复了 bug #81346(不可寻址流在写入后不会更新位置)。
    • 修复了 bug #73122(连接字符串时出现整数溢出)。
  • GD
    • 修复了 bug #53580(在调整大小期间,gdImageCopyResampled 会导致颜色更改)。
  • Opcache
    • 修复了 bug #81353(使用预加载和静态绑定闭包时出现段错误)。
  • Shmop
    • 修复了错误 #81407(shmop_open 无法附加并导致 php 崩溃)。
  • Standard
    • 修复了 bug #71542(disk_total_space 不适用于相对路径)。
    • 修复了 bug #81400(dns_get_record() 结果中的字符串未终止)。
  • SysVMsg
    • 修复了 bug #78819(msg_send 中的堆溢出)。
  • XML
    • 修复了 bug #81351(xml_parse 可能会失败,但没有错误代码)。
  • Zip
    • 修复了错误 #80833(ZipArchive::getStream 不使用 setPassword)。
    • 修复了 bug #81420(ZipArchive::extractTo 将文件提取到目标目录之外)。

版本 8.0.10

  • 核心
    • 修复了 bug #72595(php_output_handler_append 非法写入访问)。
    • 修复了 bug #66719(使用 call_user_func() 和 get_called_class() 时的奇怪行为)。
    • 修复了 bug #81305(内置 Web 服务器丢弃带有“升级”头的请求)。
  • BCMath
    • 修复了 bug #78238(BCMath 返回“-0”)。
  • CGI
    • 修复了 bug #80849(HTTP 状态头截断)。
  • 日期
    • 修复了 bug #64975(AM/PM 不在末尾时解析错误)。
    • 修复了 bug #78984(DateTimeZone 接受无效的 UTC 时区)。
    • 修复了错误 #79580(date_create_from_format 错过了闰年)。
    • 修复了 bug #80409(DateTime::modify() 使用“weekday”参数时丢失时间)。
  • GD
    • 修复了 bug #51498(imagefilledellipse 不适用于大圆圈)。
  • MySQLi
    • 修复了 bug #74544(mysqli_real_escape_string() 中的整数溢出)。
  • Opcache
    • 修复了错误 #81225(启用 JIT 后,pow 运算符的结果错误)。
    • 修复了错误 #81249(启用 JIT 后,属性赋值间歇性失败)。
    • 修复了 bug #81206(启用 JIT 后,多个 PHP 进程崩溃)。
    • 修复了 bug #81272(启用 JIT 后,数组切片后 var[] 中出现段错误)。
    • 修复了错误 #81255(使用功能性 JIT 时,PHPUnit 中存在内存泄漏)。
    • 修复了 bug #80959(JIT 编译期间构建 cfg 时出现无限循环)(Nikita, Dmitry)
    • 修复了 bug #81226(启用 JIT 后,整数溢出行为不同)。
  • OpenSSL
    • 修复了 bug #81327(在 php 7.4.22 上构建 openssl 扩展时出错)。
  • PDO_ODBC
    • 修复了 bug #81252(PDO_ODBC 未考虑 SQL_NO_TOTAL)。
  • Phar
    • 修复了 bug #81211:创建 PHAR 存档时会跟踪符号链接
  • Shmop
    • 修复了 bug #81283(shmop 无法读取超过 2147483647 字节的数据)。
  • SimpleXML
    • 修复了错误 #81325(zif_simplexml_import_dom 中出现段错误)。
  • Standard
    • 修复了 bug #72146(substr_replace 上的整数溢出)。
    • 修复了 bug #81265(getimagesize 对 256px ICO 图像返回 0)。
    • 修复了 bug #74960(通过 str_repeat 导致的堆缓冲区溢出)。
  • Streams
    • 修复了 bug #81294(删除过滤器时出现段错误)。

版本 8.0.9

  • 核心
    • 修复了 bug #81145(copy() 和 stream_copy_to_stream() 对超过 4GB 的文件失败)。
    • 修复了 bug #81163(__sleep 中对间接变量的处理不正确)。
    • 修复了 bug #81159(使用对象作为字符串偏移量时出现对象到整数的警告)。
    • 修复了 bug #80728(PHP 内置 Web 服务器在可以杀死进程时重置超时)。
    • 修复了 bug #73630(内置 Web 服务器 - 覆盖 $_SERVER['request_uri'])。
    • 修复了 bug #80173(使用 zend_assign_to_variable() 的返回值不安全)。
    • 修复了 bug #73226(--r[fcez] 始终返回零退出代码)。
  • Intl
    • 修复了 bug #72809(Locale::lookup() 使用 canonicalize 选项时结果错误)。
    • 修复了 bug #68471(IntlDateFormatter 对“GMT+00:00”时区失败)。
    • 修复了 bug #74264(grapheme_strrpos() 对负偏移量无效)。
  • OpenSSL
    • 修复了 bug #52093(openssl_csr_sign 截断 $serial)。
  • PCRE
    • 修复了 bug #81101(PCRE2 10.37 显示意外结果)。
    • 修复了 bug #81243(为 preg_replace() 分配了过多的内存)。
  • Reflection
    • 修复了 bug #81208(从属性创建 newInstance 时出现分段错误)。
  • Standard
    • 修复了 bug #81223(flock() 仅锁定文件的第一个字节)。

版本 8.0.8

  • 核心
    • 修复了错误 #81076(带有隐式绑定的闭包上的错误调试信息)。
    • 修复了 bug #81068(realpath_cache_clean() 中出现双重释放)。
    • 修复了 bug #76359(通过添加“..”绕过 open_basedir)。
    • 修复了 bug #81090(使用 .= 运算符时,类型化属性性能下降)。
    • 修复了 bug #81070(内存限制比较中的整数下溢)。
    • 修复了 bug #81122(FILTER_VALIDATE_URL 中的 SSRF 绕过)。(CVE-2021-21705)
  • Bzip2
    • 修复了 bug #81092(在 stream_filter_remove 之前执行 fflush 会损坏流)。
  • Fileinfo
    • 修复了 bug #80197(函数“magic_stream”的隐式声明无效)。
  • GMP
    • 修复了 bug #81119(GMP 运算符使用错误的参数名称抛出错误)。
  • OCI8
    • 修复了 bug #81088(oci_fetch_object() 和 oci_fetch_array() 回归测试中的错误)。
  • Opcache
    • 修复了 bug #81051(递增引用后属性类型处理中断)。
    • 修复了 bug #80968(JIT 从所需文件中返回时出现段错误)。
  • OpenSSL
    • 修复了 bug #76694(本机 Windows 证书验证使用 CN 作为服务器名称)。
  • MySQLnd
    • 修复了错误 #80761(PDO 使用了过多的内存)。
  • PDO_Firebird
    • 修复了 bug #76448(firebird_info_cb 中的堆栈缓冲区溢出)。(CVE-2021-21704)
    • 修复了 bug #76449(firebird_handle_doer 中的 SIGSEGV)。(CVE-2021-21704)
    • 修复了 bug #76450(firebird_stmt_execute 中的 SIGSEGV)。(CVE-2021-21704)
    • 修复了 bug #76452(在 firebird_fetch_blob 中解析 blob 数据时崩溃)。(CVE-2021-21704)
  • readline
    • 修复了错误 #72998(readline 完成中的无效读取)。
  • Standard
    • 修复了 bug #81048(phpinfo(INFO_VARIABLES)“数组到字符串的转换”)。
    • 修复了错误 #77627(Closure::__invoke 上的 method_exists 不一致)。
  • Windows
    • 修复了 bug #81120(未使用主 PHP DLL 的 PGO 数据)。

版本 8.0.7

  • 核心
    • 修复了 bug #80960(opendir() 在 Windows 上失败时警告信息错误)。
    • 修复了 bug #67792(HTTP 授权方案被视为区分大小写)。
    • 修复了 bug #80972(无效字符串偏移量导致内存耗尽)。
  • FPM
    • 修复了错误 #65800(事件端口机制)。
  • FTP
    • 修复了 bug #80901(ftp 扩展中的信息泄漏)。
    • 修复了 bug #79100(错误的 FTP 错误消息)。
  • GD
    • 修复了 bug #81032(GD 安装受外部 libgd 安装的影响)。
  • Intl
    • 修复了 bug #81019(在 parse() 失败后无法克隆 NumberFormatter)。
  • MBString
    • 修复了 bug #81011(mb_convert_encoding 从数组中删除引用)。
  • ODBC
    • 修复了 bug #80460(ODBC 未考虑 SQL_NO_TOTAL 指示符)。
  • Opcache
    • 修复了 bug #81007(32 位 x86 上的 JIT“不受支持”——构建问题?)。
    • 修复了 bug #81015(Opcache 优化假设 if 条件中三元运算符的错误部分)。
    • 修复了 bug #81046(文字压缩合并了不相等的相关文字)。
  • PDO_MySQL
    • 修复了错误 #81037(PDO 丢弃了预处理语句的错误消息文本)。
  • PDO_ODBC
    • 修复了 bug #44643(绑定参数忽略显式类型定义)。
  • pgsql
    • 修复了 php_pgsql_fd_cast() 关于 php_stream_can_cast() 的问题。
  • SPL
    • 修复了 bug #80933(SplFileObject::DROP_NEW_LINE 对 NUL 和 CR 无效)。
  • XMLReader
    • 修复了 bug #73246(XMLReader:未检查编码长度)。
  • Zip
    • 修复了 bug #80863(ZipArchive::extractTo() 忽略引用)。

版本 8.0.6

  • PDO_pgsql
    • 撤销“修复错误 #80892(PDO::PARAM_INT 被视为与 PDO::PARAM_STR 相同)”

版本 8.0.5

  • 核心
    • 修复错误 #75776(使用压缩过滤器刷新流已损坏)。
    • 修复错误 #80811(不带 $output 但带 $restult_code 参数的 exec 函数崩溃)。
    • 修复错误 #80814(线程化 mod_php 无法在 FreeBSD 上加载:静态线程本地存储空间不足)。
    • 更改 Zend VM 使用的 PowerPC CPU 寄存器以解决 GCC 错误。旧寄存器 (r28/r29) 可能会被用于从使用 -Os 编译的 C 函数返回的 _restgpr 例程覆盖。
  • Dba
    • 修复错误 #80817(dba_popen() 可能会在 RSHUTDOWN 期间导致段错误)。
  • DOM
    • 修复错误 #66783(将 DOMDocument 附加到元素时出现 UAF)。
  • FFI
    • 修复错误 #80847(具有结构类型字段的 CData 结构体无法作为 C 函数参数传递)。
  • FPM
    • 修复错误 #80024(池移除后重复继承套接字的信息)。
  • FTP
    • 修复错误 #80880(关闭时 SSL_read,ftp/proc_open)。
  • IMAP
    • 修复错误 #80800(当 flags 参数包含 CL_EXPUNGE 时,imap_open() 失败)。
    • 修复错误 #80710(imap_mail_compose() 标头注入)。
  • Intl
    • 修复错误 #80763(msgfmt_format() 不接受 DateTime 引用)。
  • LibXML
    • 修复错误 #73533(php_libxml_xmlCheckUTF8 中的无效内存访问)。
    • 修复错误 #51903(simplexml_load_file() 不使用 HTTP 标头)。
  • MySQLnd
    • 修复错误 #80837(在 fetch 之后调用 stmt_store_result 不会抛出错误)。
  • Opcache
    • 修复错误 #80839(PHP 与 JIT 相关的问题)。
    • 修复错误 #80861(使用 JIT 时二维数组中错误的数组键溢出)。
    • 修复错误 #80786(使用 JIT 时 PHP 崩溃)。
    • 修复错误 #80782(PHP_INT_MIN-1 上的 DASM_S_RANGE_VREG)。
  • Pcntl
    • 修复错误 #79812(pcntl_exec() 中潜在的整数溢出)。
  • PCRE
    • 修复错误 #80866(当模式带有 \K 且具有 0 宽度全字符串匹配时,preg_split 忽略 limit 标志)。
  • PDO_ODBC
    • 修复错误 #80783(PDO ODBC 在每 256 个字节处截断 BLOB 记录)。
  • PDO_pgsql
    • 修复错误 #80892(PDO::PARAM_INT 被视为与 PDO::PARAM_STR 相同)。
  • Session
    • 修复错误 #80889(当 save_handler 无效时无法设置保存处理程序)。
    • 修复错误 #80774(session_name() 与反斜杠相关的问题)。
  • SOAP
    • 修复错误 #69668(SOAP 中命名空间 URI 中的特殊 XML 字符未编码)。
  • Standard
    • 修复错误 #80915(对 $_SERVER 获取引用会隐藏其在 phpinfo() 中的值)。
    • 修复错误 #80914('getdir' 意外地定义为 'dir' 的别名)。
    • 修复错误 #80771(phpinfo(INFO_CREDITS) 在 CLI 中不显示任何内容)。
    • 修复错误 #78719(http 包装器静默忽略较长的 Location 标头)。
    • 修复错误 #80838(HTTP 包装器在 HTTP 101 后等待 HTTP 1 响应)。
  • Zip
    • 修复错误 #80825(ZipArchive::isCompressionMethodSupported 不存在)。

版本 8.0.3

  • 核心
    • 修复错误 #80706(mail():Bcc 标头之后的标头可能会被忽略)。
  • DOM
    • 修复错误 #80600(DOMChildNode::remove() 不适用于 CharacterData 节点)。
  • Gettext
    • 修复错误 #53251(使用空目录的 bindtextdomain 不会返回旧值)。
  • MySQLnd
    • 修复错误 #78680(mysqlnd 的 mysql_clear_password 不会传输以 null 结尾的密码)。
    • 修复错误 #80713(禁用 ATTR_EMULATE_PREPARES 和 MySQL 8.0 时出现段错误)。
  • MySQLi
    • 修复错误 #74779(x() 和 y() 将浮点数截断为整数)。
  • Opcache
    • 修复错误 #80634(内部类的 write_property 处理程序在预加载的 JIT 代码中被跳过)。
    • 修复错误 #80682(opcache 不遵守 pcre.jit 选项)。
    • 修复错误 #80742(Opcache JIT 使某些布尔逻辑意外地为真)。
    • 修复错误 #80745(JIT 产生断言失败和涉及移位操作的代码中的 UNKNOWN:0 var_dumps)。
  • OpenSSL
    • 修复错误 #80747(提供小于 512 的 RSA 密钥大小会生成导致 PHP 崩溃的密钥)。
  • Phar
    • 修复错误 #75850(关于不带分号的 __halt_compiler() 的不明确错误消息)
    • 修复错误 #70091(Phar 不会在 ZIP 档案中标记 UTF-8 文件名)。
    • 修复错误 #53467(Phar 无法压缩大型档案)。
  • Socket
    • 修复错误 #80723(不同的套接字比较为相等(8.0 中的回归))。
  • SPL
    • 修复错误 #80719(在失败的 ArrayObject::setIteratorClass() 之后迭代会导致分段错误)。
  • Standard
    • 修复错误 #80654(file_get_contents() maxlen 在 (2**31)-1 字节以上失败)。
    • 修复错误 #80718(ext/standard/dl.c 回退代码路径带有语法错误)。

版本 8.0.2

  • 核心
    • 修复错误 #80523(大于 4GB 的源代码出现错误的解析错误)。
    • 修复错误 #80384(过滤器缓冲整个读取直到文件关闭)。
    • 修复错误 #80596(匿名类中无效的联合类型 TypeError)。
    • 修复错误 #80617(GCC 在 ZEND_TYPE_INIT_CODE 中抛出类型缩减警告)。
  • BCMath
    • 修复错误 #80545(bcadd('a', 'a') 不会抛出异常)。
  • Curl
    • 修复错误 #80595(将 POSTFIELDS 重置为空数组会破坏请求)。
  • 日期
    • 修复错误 #80376(每月的最后一天会导致失控的 CPU 使用率)。
  • DOM
    • 修复错误 #80537(DOMElement::removeAttributeNode 存根中的错误参数类型)。
  • Filter
    • 修复错误 #80584(filter_var() 将 0x 和 0X 视为有效的十六进制数字)。
  • GMP
    • 修复错误 #80560(仅包含基本前缀的字符串返回 0 对象)。
  • Intl
    • 修复错误 #80644(缺少资源会导致后续的 get() 调用失败)。
  • MySQLi
    • 修复错误 #67983(使用 MYSQLI_OPT_INT_AND_FLOAT_NATIVE 的 mysqlnd 无法解释位列)。
    • 修复错误 #64638(从使用游标的存储过程获取结果集失败)。
    • 修复错误 #72862(在使用游标的存储过程上使用预处理语句时出现段错误)。
    • 修复错误 #77935(在调用使用游标的 SP 时,mysqlnd_fetch_stmt_row_cursor 中崩溃)。
  • ODBC
    • 修复错误 #80592(ODBC 参数中的所有浮点数都相同)。
  • Opcache
    • 修复错误 #80422(在使用 Apache 2.4 和 JIT 时,php_opcache.dll 崩溃)。
  • PDO_Firebird
    • 修复错误 #80521(带有下划线的参数不再被识别)。
  • Phar
    • 修复错误 #76929(基于 zip 的 phar 不尊重 phar.require_hash)。
    • 修复错误 #77565(基于 ZIP 的 phar 中的错误定位符检测)。
    • 修复错误 #69279(压缩的 ZIP Phar extractTo() 创建垃圾文件)。
  • Phpdbg
    • 撤销错误 #76813(源操作数附近出现 NULL 时的访问冲突)的修复。
  • SOAP
    • 修复错误 #80672(SoapClient 中的空指针取消引用)。(CVE-2021-21702)

版本 8.0.1

  • 核心
    • 修复错误 #80345(PHPIZE 配置具有过时的 PHP_RELEASE_VERSION)。
    • 修复错误 #72964(CC/Bcc 标头未展开空格)。
    • 修复错误 #80391(Iterable 不是混合类型的协变)。
    • 修复错误 #80393(由于与 libtool 的配置差距,PHP 扩展的构建失败)。
    • 修复错误 #77069(流过滤器丢失数据块的最后一部分)。
  • Fileinfo
    • 修复错误 #77961(finfo_open 构建的魔术解析 SIGABRT)。
  • FPM
    • 修复错误 #69625(FPM 在没有 SCRIPT_FILENAME 环境变量的请求上返回 200 状态)。
  • IMAP
    • 修复错误 #80438(imap_msgno() 在 PHP 8 中错误地发出警告并在有效 UID 上返回 false)。
    • 修复 imap_savebody() 中与有效 UID 相关的回归。
    • 使函数之间无效消息编号/UID 的警告保持一致。
  • Intl
    • 修复错误 #80425(MessageFormatAdapter::getArgTypeList 重定义)。
  • Opcache
    • 修复错误 #80404(除法结果为浮点数时,错误的范围推断结果)。
    • 修复错误 #80377(Opcache 遗漏 executor_globals)。
    • 修复错误 #80433(使用 JIT 时无法禁用 AVX 指令的使用)。
    • 修复错误 #80447(使用 JIT 时出现奇怪的内存不足错误)。
    • 修复错误 #80480(启用 JIT 时出现分段错误)。
    • 修复错误 #80506(在 ini_set("opcache.jit_debug", 1) 后立即出现 SIGSEGV)。
  • OpenSSL
    • 修复错误 #80368(由于缺少 OCB 支持,OpenSSL 扩展无法针对 LibreSSL 构建)。
  • PDO MySQL
    • 修复错误 #80458(PDOStatement::fetchAll() 对 upsert 查询抛出异常)。
    • 修复错误 #63185(nextRowset() 忽略使用原生预处理语句时的 MySQL 错误)。
    • 修复错误 #78152(PDO::exec() - 多个命令的错误处理不佳)。
    • 修复错误 #66878(除非 PDO 语句对象被取消设置,否则不会返回多个结果集)。
    • 修复错误 #70066(意外的“在其他未缓冲的查询期间无法执行查询”)。
    • 修复错误 #71145(初始化命令中的多个语句触发未缓冲的查询错误)。
    • 修复错误 #76815(当 PROCEDURE 结果集 SIGNAL 时,PDOStatement 无法被 GC/closeCursor)。
    • 修复错误 #79872(无法执行带有挂起结果集的查询)。
    • 修复错误 #79131(当参数值丢失时,PDO 不会抛出异常)。
    • 修复错误 #72368(PdoStatement->execute() 失败但不会抛出异常)。
    • 修复错误 #62889(LOAD DATA INFILE 已损坏)。
    • 修复错误 #67004(多次执行 PDOStatement::fetch() 会阻止释放结果集)。

    • 修复了错误 #79132(PDO 重复使用先前对 execute() 的调用的参数值)。
  • Phar
    • 修复了错误 #73809(Phar Zip 解析崩溃 - mmap 失败)。
    • 修复了错误 #75102(`PharData` 对有效的 tar 显示无效校验和)。
    • 修复了错误 #77322(PharData::addEmptyDir('/') 可能出现整数溢出)。
  • Phpdbg
    • 修复了错误 #76813(源操作数附近出现访问冲突)。
  • SPL
    • 修复了错误 #62004(SplFileObject:seek 后 fgets 返回错误的行)。
  • Standard
    • 修复了错误 #80366(未检查 zend_fstat() 的返回值)。
    • 修复了错误 #77423(FILTER_VALIDATE_URL 接受具有无效用户信息的 URL)。(CVE-2020-7071)
  • Tidy
    • 修复了错误 #77594(ob_tidyhandler 从未重置)。
  • 词法分析器
    • 修复了错误 #80462(使用 TOKEN_PARSE 标志的空安全运算符标记化失败)。
  • XML
    • XmlParser 不透明对象重命名为 XMLParser,以与其他 XML 对象保持一致。
  • Zlib
    • 修复了错误 #48725(支持在 zlib 流中刷新)。

版本 8.0.0

  • BZ2
    • 修复了错误 #71263(fread() 未报告 bzip2.decompress 错误)。
  • CLI
    • 允许调试服务器通过 `-S localhost:0` 绑定到一个短暂端口。
  • COM
    • 修复了错误 #55847(DOTNET .NET 4.0 GAC 新位置)。
    • 修复了错误 #62474(com_event_sink 在某些参数上崩溃)。
  • 日历
    • 修复了错误 #80007(unixtojd() 参数解析中可能存在类型混淆)。
  • 核心
    • 修复了错误 #36365(scandir 在每个第 65535 个文件处重复文件名)。
    • 修复了错误 #49555(致命错误“函数必须是字符串”消息应重命名)。
    • 修复了错误 #62294(register_shutdown_function() 未正确处理退出代码)。
    • 修复了错误 #62609(允许在抽象类上实现 Traversable)。
    • 修复了错误 #65274(使用类名增强未定义的类常量错误)。
    • 修复了错误 #65275(在关闭函数中调用 exit() 不会更改 CLI 中的退出值)。
    • 修复了错误 #69084(在未实现重命名的抽象特性函数时,错误消息不清楚)。
    • 修复了错误 #70839(LSP 检查禁止将可选参数转换为可变参数)。
    • 修复了错误 #74558(无法重新绑定由 Closure::fromCallable() 返回的闭包)。
    • 修复了错误 #77561(未剥离非主脚本的 shebang 行)。
    • 修复了错误 #77619(MultipleIterator::__construct 的错误反射)。
    • 修复了错误 #77966(无法为名为“namespace”的方法创建别名)。
    • 修复了错误 #78236(在接收变量时出现重复 [ 时转换错误)。
    • 修复了错误 #78770(内部方法中的可调用性检查不正确)。
    • 修复了错误 #79108(引用函数中的参数使其在堆栈跟踪中成为引用)。
    • 修复了错误 #79368(“意外的文件结尾”不是可接受的错误消息)。
    • 修复了错误 #79462(method_exists 和 property_exists 的行为不一致)。
    • 修复了错误 #79467(data:// 包装器是可写的)。
    • 修复了错误 #79521(检查 __set_state 结构)。
    • 修复了错误 #79790(在 AST 评估期间未正确处理“非法偏移类型”异常)。
    • 修复了错误 #79791(在二元运算期间取消设置变量时出现断言失败)。
    • 修复了错误 #79828(尝试访问不存在的变量时出现段错误)。
    • 修复了错误 #79841(configure 中的语法错误/php.m4 中未转义的“[]”)。
    • 修复了错误 #79852(count(DOMNodeList) 与 count(IteratorIterator(DOMNodeList)) 不匹配)。
    • 修复了错误 #79867(提升的未类型化属性应获取 null 默认值)。
    • 修复了错误 #79897(具有属性的提升的构造函数参数导致崩溃)。
    • 修复了错误 #79927(生成器在多次 yield from 可迭代对象后不抛出异常)。
    • 修复了错误 #79946(由于未声明 UINT32_C 而导致构建失败)。
    • 修复了错误 #79948(自动预置文件中退出不会中止 PHP 执行)。
    • 修复了错误 #80045(两次使用 __call 调用 set_exception_handler 后出现内存泄漏)。
    • 修复了错误 #80096(嵌套调用中使用命名参数时出现分段错误)。
    • 修复了错误 #80109(启用扩展调试时无法跳过参数)。
    • 修复了错误 #80225(eval 代码中命名空间使用错误)。
    • 修复了错误 #80258(启用 Windows 重复数据删除,随机权限错误)。
    • 修复了错误 #80280(ADD_EXTENSION_DEP() 对 ext/standard 和 ext/date 失败)。
    • 修复了错误 #80334(assert() 与命名参数 - 令人困惑的错误)。
    • 修复了错误 #80055(返回“self”的抽象特性方法无法由特性实现)。
    • 修复了 yield from 导致的生成器清理错误。
    • 根据 RFC 中的最终投票实现 #[Attr] 属性语法 https://wiki.php.net/rfc/shorter_attribute_syntax_change
    • 实现了 FR #47074(phpinfo() 将某些扩展的“开启”报告为 1)。
    • 实现了 FR #72089(require() 抛出致命错误而不是异常)。
    • 删除了 pdo_odbc.db2_instance_name php.ini 指令。
    • 使用 SSE2 指令执行与区域设置无关的 strtolower。
  • Curl
    • 将所需的 libcurl 版本提升到 7.29.0。
    • 修复了错误 #80121(如果直接实例化 CurlHandle,则会出现空指针解除引用)。
  • DOM
    • 添加属性 DOMXPath::$registerNodeNamespaces 和构造函数参数,允许全局标志配置 query() 或 evaluate() 调用。
    • 修复了错误 #79968(DOMChildNode API 在未附加节点上崩溃)。
    • 修复了错误 #80268(loadHTML() 在 NUL 字节处截断)。
  • 日期
    • 修复了错误 #60302(DateTime::createFromFormat 应使用 new static(),而不是 new self())。
    • 修复了错误 #65547(日出/日落天顶的默认值仍然错误)。
    • 修复了错误 #69044(时间和微秒时间之间存在差异)。
    • 修复了错误 #80057(DateTimeImmutable::createFromFormat() 未填充时间)。
    • 实现了 FR #79903(日期时间:新的格式“p”,与“P”相同,但对于 UTC 返回“Z”)。
  • Enchant
    • 添加 LIBENCHANT_VERSION 宏。
    • 添加 enchant_dict_add 和 enchant_dict_is_added 函数。
    • 弃用 enchant_broker_set_dict_path、enchant_broker_get_dict_path、enchant_dict_add_to_personal 和 enchant_dict_is_in_session。
    • 在可用时使用 libenchant-2。
  • FFI
    • 添加了 FFI\CType::getName() 方法。
    • 修复了错误 #79177(FFI 未很好地处理回调中的 PHP 异常)。
    • 修复了错误 #79749(将 FFI 实例转换为布尔值失败)。
  • FPM
    • 添加 pm.status_listen 选项。
  • Fileinfo
    • 升级到 libmagic 5.39。
  • GD
    • 添加了 imagegetinterpolation()。
    • 修复了错误 #55005(imagepolygon num_points 要求)。
    • 使 php_imagepolygon 的 $num_points 参数可选。
    • 删除了已弃用的 image2wbmp()。
    • 删除了已弃用的 png2wbmp() 和 jpeg2wbmp()。
    • 将 gd 资源替换为对象。
  • IMAP
    • 修复了错误 #64076(imap_sort() 在失败时不返回 FALSE)。
    • 修复了错误 #76618(imap_reopen 出现段错误)。
    • 修复了错误 #80213(imap_mail_compose() 在某些 $bodies 上出现段错误)。
    • 修复了错误 #80215(imap_mail_compose() 可能会修改按值传递的参数)。
    • 修复了错误 #80216(imap_mail_compose() 未验证类型/编码)。
    • 修复了错误 #80220(imap_mail_compose() 可能会泄漏内存)。
    • 修复了错误 #80223(imap_mail_compose() 在格式错误的正文上泄漏信封)。
    • 修复了错误 #80226(imap_sort() 泄漏 sortpgm 内存)。
    • 修复了错误 #80239(imap_rfc822_write_address() 泄漏内存)。
    • 修复了错误 #80242(imap_mail_compose() 对包含 rfc822 的多部分内容出现段错误)。
    • 修复了修复错误 #80220 引起的轻微回归。
  • Iconv
    • 放弃了对不设置正确 errno 的 iconv 的支持。
  • Intl
    • 删除了已弃用的 INTL_IDNA_VARIANT_2003。
  • JIT
    • 修复了错误 #77857(如果使用 JIT 执行,则结果错误)。
    • 修复了错误 #79255(PHP 无法使用启用 JIT 进行编译)。
    • 修复了错误 #79582(当 opcache.jit=1235 且 opcache.jit_debug=2 时出现崩溃)。
    • 修复了错误 #79743(启用 JIT 时,为数组属性赋值时出现致命错误)。
    • 修复了错误 #79864(Symfony OptionsResolver 中的 JIT 段错误)。
    • 修复了错误 #79888(启用 JIT 时执行不正确)。
  • JSON
    • 根据 RFC,JSON 扩展现在是 PHP 的组成部分,无法禁用:https://wiki.php.net/rfc/always_enable_json (tandre)
  • LDAP
    • 修复了内存泄漏。
    • 删除了已弃用的 ldap_sort。
  • MBString
    • 修复了错误 #76999(mb_regex_set_options() 返回当前选项)。
    • 从 mb_decode_numericentity() 中删除了未使用的 $is_hex 参数。
  • MySQLi
    • 修复了错误 #76809(使用持久连接时不尊重 SSL 设置)。
  • Mysqlnd
    • 修复了错误 #60594(mysqlnd 在 phpinfo 中显示 160 行统计信息)。
  • OCI8
    • 弃用旧的 OCI8 函数别名。
    • 对 oci_register_taf_callback() 可调用参数解析实现进行了现代化改造。
    • 删除了已过时的无操作函数 oci_internal_debug()。
  • ODBC
    • 修复了错误 #22986(odbc_connect() 可能会重用持久连接)。
    • 修复了错误 #44618(获取可能依赖于未初始化的数据)。
  • Opcache
    • 修复了错误 #76535(Opcache 未重放编译时警告)。

    • 修复了错误 #78654(在包含非 ASCII 字符的文件上错误地计算了 opcache 校验和)。
    • 修复了错误 #79665(ini_get() 和 opcache_get_configuration() 不一致)。
    • 修复了错误 #80030(优化器在使用 isset 操作静态属性且动态类名未定义时出现段错误)。
    • 修复了错误 #80175(PHP8 RC1 - JIT 缓冲区无法工作)。
    • 修复了错误 #80184(while/if 语句中的复杂表达式错误地解析为 false)。
    • 修复了错误 #80255(8.0.0rc1 中的 Opcache 错误(错误的条件结果))。
    • 修复了预加载的动态声明函数的运行时绑定。
  • OpenSSL
    • 添加了对加密消息语法 (CMS) 的支持。
  • PCRE
    • 不再忽略无效的转义序列。
    • 更新到 PCRE2 10.35。
  • PDO
    • 将默认的 PDO 错误模式更改为异常。
    • 修复了错误 #77849(禁用克隆 PDO 处理程序/连接对象)。
  • PDO_Firebird
    • 修复了错误 #64937(Firebird PDO 预处理 SQL)。
  • PDO_OCI
    • 添加了对设置和获取 Oracle OCI 18c 调用超时的支持。
  • PDO_PGSQL
    • 将所需的 libpq 版本提升到 9.1。
  • PGSQL
    • 将所需的 libpq 版本提升到 9.1。
  • Phpdbg
    • 修复了错误 #76596(phpdbg 对 display_errors=stderr 的支持)。
    • 修复了错误 #76801(打开的文件过多)。
    • 修复了错误 #77800(phpdbg 在列出某些条件断点时出现段错误)。
    • 修复了错误 #77805(当 readline 为共享库时,phpdbg 构建失败)。
  • Reflection
    • 修复了错误 #64592(ReflectionClass::getMethods() 返回超出范围的方法)。
    • 修复了错误 #69180(Reflection 未遵守特性冲突解决/方法别名)。
    • 修复了错误 #74939(嵌套特性的别名方法被小写)。
    • 修复了错误 #77325(当扩展时,ReflectionClassConstant::$class 返回错误的类)。
    • 修复了错误 #78697(ReflectionClass::implementsInterface - 使用特性时错误信息不准确)。
    • 修复了错误 #80190(ReflectionMethod::getReturnType() 未将 static 作为联合类型的一部分进行处理)。
    • 修复了错误 #80299(ReflectionFunction->invokeArgs 在参数中出现混淆)。
    • 修复了错误 #80370(getAttributes 在动态属性上出现段错误)。
    • 实现了 FR #79628(为 ReflectionClass::getConstants 和 ReflectionClass::getReflectionConstants 添加 $filter 参数)(carusogabriel)
    • 实现 ReflectionProperty::hasDefaultValue 和 Reflection::getDefaultValue (beberlei)
  • SNMP
    • 修复了错误 #70461(当 net-snmp 中不支持 md5 代码时禁用它)。
  • SPL
    • 修复了错误 #65006(spl_autoload_register 使用多个可调用对象(使用 self,相同方法)时失败)。
    • 修复了错误 #65387(SPL 迭代器中的循环引用未被垃圾回收)。
    • 修复了错误 #71236(如果 spl_autoload_register() 没有参数,则第二次调用无效)。
    • 修复了错误 #79987(由于缺少 zend_restore_error_handling(),SplFileInfo 中存在内存泄漏)。
    • SplFixedArray 现在是 IteratorAggregate 而不是 Iterator。
  • SQLite3
    • 添加了 SQLite3::setAuthorizer() 和相应的类常量。
  • Session
    • 修复了错误 #73529(session_decode() 在输入错误时静默失败)。
    • 修复了错误 #78624(用户定义的会话处理程序的 session_gc 返回值)。
  • Shmop
    • 将 shmop 资源转换为对象。
  • SimpleXML
    • 修复了错误 #63575(根元素未被正确克隆)。
    • 修复了错误 #75245(不要设置仅包含空格的元素的内容)。
  • Sodium
    • 修复了错误 #77646(sign_detached() 字符串未终止)。
  • Standard
    • 当 HTTP 流包装器填充 $http_response_header 变量时,不再强制重建符号表。
    • 修复了错误 #47983(mail() 中混合使用 LF 和 CRLF 换行符)。
    • 修复了错误 #64060(lstat_stat_variation7.phpt 在某些文件系统上失败)。
    • 修复了错误 #75902(当 str_replace 与嵌套数组错误使用时,应发出警告)。
    • 修复了错误 #76859(如果 stream_get_line 与数据生成过滤器一起使用,则会跳过数据)。
    • 修复了错误 #77204(getimagesize(): Read error! 应提及文件路径)。
    • 修复了错误 #78385(当问号是最后一个字符时,parse_url() 不包含 'query')。
    • 修复了错误 #79868(使用 array_unique 进行排序会产生不希望的结果)。
    • 修复了错误 #80256(file_get_contents 在分块编码重定向时会去除第一行)。
    • 修复了错误 #80266(parse_url 静默丢弃端口号 0)。
    • 修复了错误 #80290(当 ASSERT_CALLBACK 与动态消息一起使用时出现双重释放)。
    • 实现了 FR #78638(__PHP_Incomplete_Class 应该为 final)。
    • 使 cmd 执行函数的引用一致。
  • Tidy
    • 删除了 tidy_repair_string() 中未使用的 $use_include_path 参数。
  • 词法分析器
    • 修复了错误 #80328(PhpToken::getAll() 名称混淆)。
  • XML
    • 修复了错误 #76874(xml_parser_free() 绝不应该泄漏内存)。
  • XMLWriter
    • 更改函数以接受/返回 XMLWriter 对象而不是资源。
    • 实现了 FR #79344(xmlwriter_write_attribute_ns: $prefix 应该可以为空)。
    • 删除了 XMLWriter 存根中的返回类型。
  • Zip
    • 在 ZipArchive::addGlob 和 addPattern 方法中添加“flags”选项,保持先前行为,默认情况下使用 FL_OVERWRITE。
    • 添加 ZipArchive::EM_UNKNOWN 和 ZipArchive::EM_TRAD_PKWARE 常量。
    • 添加 ZipArchive::isCompressionMethodSupported() 和 ZipArchive::isEncryptionMethodSupported() 方法(libzip 1.7.0)。
    • 添加 ZipArchive::replaceFile() 方法。
    • 添加 ZipArchive::setCancelCallback 方法(自 libzip 1.6.0 起)。
    • 添加 ZipArchive::setMtimeName 和 ZipArchive::setMtimeIndex 方法。
    • 添加 ZipArchive::setProgressCallback 方法(自 libzip 1.3.0 起)。
    • 在 ZipArchive 中添加 lastId 属性。
    • 在 ZipArchive::addEmptyDir、addFile 和 addFromString 方法中添加可选的“flags”参数。
    • 修复了错误 #50678(由 ZipArchive 类提取的文件丢失了其原始修改时间)。
    • 修复了错误 #72374(remove_path 去除文件名首字符)。
    • 实现了 FR #77960(为 ZipArchive::addGlob 和 ZipArchive::addPattern 添加压缩/加密选项)。
    • ZipArchive::status 和 ZipArchive::statusSys 属性以及 ZipArchive::getStatusString() 方法在归档文件关闭后仍然有效。
  • Zlib
    • 修复了错误 #71417(fread() 未报告 zlib.inflate 错误)。
    • 修复了错误 #78792(Content-Type: image/ 禁用了 zlib.output_compression)。
To Top