PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 8.1.2 - Core: . Fixed bug #81216 (Nullsafe operator leaks dynamic property name). (Dmitry) . Fixed bug #81684 (Using null coalesce assignment with $GLOBALS["x"] produces opcode error). (ilutov) - MBString: . Fixed bug #81693 (mb_check_encoding(7bit) segfaults). (cmb) - MySQLi: . Fixed bug #81658 (MYSQL_OPT_LOAD_DATA_LOCAL_DIR not available in MariaDB). (devnexen) . Introduced MYSQLI_IS_MARIADB. (devnexen) - Reflection: . Fixed bug #81681 (ReflectionEnum throwing exceptions). (cmb) 02 Dec 2021, PHP 8.1.1 - IMAP: . Fixed bug #81649 (imap_(un)delete accept sequences, not single numbers). (cmb) - PCRE: . Update bundled PCRE2 to 10.39. (cmb) . Fixed bug #74604 (Out of bounds in php_pcre_replace_impl). (cmb, Dmitry) - Standard: . Fixed bug #81659 (stream_get_contents() may unnecessarily overallocate). (cmb) 25 Nov 2021, PHP 8.1.0 - Core: . Fixed inclusion order for phpize builds on Windows. (cmb) . Added missing hashtable insertion APIs for arr/obj/ref. (Sara) . Implemented FR #77372 (Relative file path is removed from uploaded file). (Björn Tantau) . Fixed bug #81607 (CE_CACHE allocation with concurrent access). (Nikita, Dmitry) . Fixed bug #81507 (Fiber does not compile on AIX). (Clément Chigot) . Fixed bug #78647 (SEGFAULT in zend_do_perform_implementation_check). (Nikita) . Fixed bug #81518 (Header injection via default_mimetype / default_charset). (cmb) . Fixed bug #75941 (Fix compile failure on Solaris with clang). (Jaromír Doleček) . Fixed bug #81380 (Observer may not be initialized properly). (krakjoe) . Fixed bug #81514 (Using Enum as key in WeakMap triggers GC + SegFault). (Nikita) . Fixed bug #81520 (TEST_PHP_CGI_EXECUTABLE badly set in run-tests.php). (Remi) . Fixed bug #81377 (unset() of $GLOBALS sub-key yields warning). (Nikita) . Fixed bug #81342 (New ampersand token parsing depends on new line after it). (Nikita) . Fixed bug #81280 (Unicode characters in cli.prompt causes segfault). (krakjoe) . Fixed bug #81192 ("Declaration should be compatible with" gives incorrect line number with traits). (Nikita) . Fixed bug #78919 (CLI server: insufficient cleanup if request startup fails). (cataphract, cmb) . Fixed bug #81303 (match error message improvements). (krakjoe) . Fixed bug #81238 (Fiber support missing for Solaris Sparc). (trowski) . Fixed bug #81237 (Comparison of fake closures doesn't work). (krakjoe) . Fixed bug #81202 (powerpc64 build fails on fibers). (krakjoe) . Fixed bug #80072 (Cyclic unserialize in TMPVAR operand may leak). (Nikita) . Fixed bug #81163 (__sleep allowed to return non-array). (krakjoe) . Fixed bug #75474 (function scope static variables are not bound to a unique function). (Nikita) . Fixed bug #53826 (__callStatic fired in base class through a parent call if the method is private). (Nikita) . Fixed bug #81076 (incorrect debug info on Closures with implicit binds). (krakjoe) - CLI: . Fixed bug #81496 (Server logs incorrect request method). (lauri) - COM: . Dispatch using LANG_NEUTRAL instead of LOCALE_SYSTEM_DEFAULT. (Dmitry Maksimov) - Curl: . Fixed bug #81085 (Support CURLOPT_SSLCERT_BLOB for cert strings). (camporter) - Date: . Fixed bug #81458 (Regression Incorrect difference after timezone change). (Derick) . Fixed bug #81500 (Interval serialization regression since 7.3.14 / 7.4.2). (cmb) . Fixed bug #81504 (Incorrect timezone transition details for POSIX data). (Derick) . Fixed bug #80998 (Missing second with inverted interval). (Derick) . Speed up finding timezone offset information. (Derick) . Fixed bug #79580 (date_create_from_format misses leap year). (Derick) . Fixed bug #80963 (DateTimeZone::getTransitions() truncated). (Derick) . Fixed bug #80974 (Wrong diff between 2 dates in different timezones). (Derick) . Fixed bug #80998 (Missing second with inverted interval). (Derick) . Fixed bug #81097 (DateTimeZone silently falls back to UTC when providing an offset with seconds). (Derick) . Fixed bug #81106 (Regression in 8.1: add() now truncate ->f). (Derick) . Fixed bug #81273 (Date interval calculation not correct). (Derick) . Fixed bug #52480 (Incorrect difference using DateInterval). (Derick) . Fixed bug #62326 (date_diff() function returns false result). (Derick) . Fixed bug #64992 (dst not handled past 2038). (Derick) . Fixed bug #65003 (Wrong date diff). (Derick) . Fixed bug #66545 (DateTime. diff returns negative values). (Derick) . Fixed bug #68503 (date_diff on two dates with timezone set localised returns wrong results). (Derick) . Fixed bug #69806 (Incorrect date from timestamp). (Derick) . Fixed bug #71700 (Extra day on diff between begin and end of march 2016). (Derick) . Fixed bug #71826 (DateTime::diff confuse on timezone 'Asia/Tokyo'). (Derick) . Fixed bug #73460 (Datetime add not realising it already applied DST change). (Derick) . Fixed bug #74173 (DateTimeImmutable::getTimestamp() triggers DST switch in incorrect time). (Derick) . Fixed bug #74274 (Handling DST transitions correctly). (Derick) . Fixed bug #74524 (Date diff is bad calculated, in same time zone). (Derick) . Fixed bug #75167 (DateTime::add does only care about backward DST transition, not forward). (Derick) . Fixed bug #76032 (DateTime->diff having issues with leap days for timezones ahead of UTC). (Derick) . Fixed bug #76374 (Date difference varies according day time). (Derick) . Fixed bug #77571 (DateTime's diff DateInterval incorrect in timezones from UTC+01:00 to UTC+12:00). (Derick) . Fixed bug #78452 (diff makes wrong in hour for Asia/Tehran). (Derick) . Fixed bug #79452 (DateTime::diff() generates months differently between time zones). (Derick) . Fixed bug #79698 (timelib mishandles future timestamps (triggered by 'zic -b slim')). (Derick) . Fixed bug #79716 (Invalid date time created (with day "00")). (Derick) . Fixed bug #80610 (DateTime calculate wrong with DateInterval). (Derick) . Fixed bug #80664 (DateTime objects behave incorrectly around DST transition). (Derick) . Fixed bug #80913 (DateTime(Immutable)::sub around DST yield incorrect time). (Derick) - DBA: . Fixed bug #81588 (TokyoCabinet driver leaks memory). (girgias) - DOM: . Fixed bug #81433 (DOMElement::setIdAttribute() called twice may remove ID). (Viktor Volkov) - FFI: . Fixed bug #79576 ("TYPE *" shows unhelpful message when type is not defined). (Dmitry) - Filter: . Fixed bug #61700 (FILTER_FLAG_IPV6/FILTER_FLAG_NO_PRIV|RES_RANGE failing). (cmb, Nikita) - FPM: . Fixed bug #81513 (Future possibility for heap overflow in FPM zlog). (Jakub Zelenka) . Fixed bug #81026 (PHP-FPM oob R/W in root process leading to privilege escalation) (CVE-2021-21703). (Jakub Zelenka) . Added openmetrics status format. (Cees-Jan Kiewiet) . Enable process renaming on macOS. (devnexen) . Added pm.max_spawn_rate option to configure max spawn child processes rate. (Paulius Sapragonas) . Fixed bug #65800 (Events port mechanism). (psumbera) - FTP: . Convert resource to object \FTP\Connection. (Sara) - GD: . Fixed bug #71316 (libpng warning from imagecreatefromstring). (cmb) . Convert resource to object \GdFont. (Sara) - hash: . Implemented FR #68109 (Add MurmurHash V3). (Anatol, Michael) . Implemented FR #73385 (Add xxHash support). (Anatol) - JSON: . Fixed bug #81532 (Change of $depth behaviour in json_encode() on PHP 8.1). (Nikita) - LDAP: . Convert resource to object \LDAP\Connection. (Máté) . Convert resource to object \LDAP\Result. (Máté) . Convert resource to object \LDAP\ResultEntry. (Máté) - MBString: . Fixed bug #76167 (mbstring may use pointer from some previous request). (cmb, cataphract) . Fixed bug #81390 (mb_detect_encoding() regression). (alexdowad) . Fixed bug #81349 (mb_detect_encoding misdetcts ASCII in some cases). (Nikita) . Fixed bug #81298 (mb_detect_encoding() segfaults when 7bit encoding is specified). (Nikita) - MySQLi: . Fixed bug #70372 (Emulate mysqli_fetch_all() for libmysqlclient). (Nikita) . Fixed bug #80330 (Replace language in APIs and source code/docs). (Darek Ślusarczyk) . Fixed bug #80329 (Add option to specify LOAD DATA LOCAL white list folder (including libmysql)). (Darek Ślusarczyk) - MySQLnd: . Fixed bug #63327 (Crash (Bus Error) in mysqlnd due to wrong alignment). (Nikita) . Fixed bug #80761 (PDO uses too much memory). (Nikita) - Opcache: . Fixed bug #81409 (Incorrect JIT code for ADD with a reference to array). (Dmitry) . Fixed bug #81255 (Memory leak in PHPUnit with functional JIT). . Fixed bug #80959 (infinite loop in building cfg during JIT compilation). (Nikita, Dmitry) . Fixed bug #81225 (Wrong result with pow operator with JIT enabled). (Dmitry) . Fixed bug #81249 (Intermittent property assignment failure with JIT enabled). (Dmitry) . Fixed bug #81256 (Assertion `zv != ((void *)0)' failed for "preload" with JIT). (Dmitry) . Fixed bug #81133 (building opcache with phpize fails). (krakjoe) . Fixed bug #81136 (opcache header not installed). (krakjoe) . Added inheritance cache. (Dmitry) - OpenSSL: . Fixed bug #81502 ($tag argument of openssl_decrypt() should accept null/empty string). (Nikita) . Bump minimal OpenSSL version to 1.0.2. (Jakub Zelenka) - PCRE: . Fixed bug #81424 (PCRE2 10.35 JIT performance regression). (cmb) . Bundled PCRE2 is 10.37. - PDO: . Fixed bug #40913 (PDO_MYSQL: PDO::PARAM_LOB does not bind to a stream for fetching a BLOB). (Nikita) - PDO MySQL: . Fixed bug #80908 (PDO::lastInsertId() return wrong). (matt) . Fixed bug #81037 (PDO discards error message text from prepared statement). (Kamil Tekiela) - PDO OCI: . Fixed bug #77120 (Support 'success with info' at connection). (Sergei Morozov) - PDO ODBC: . Implement PDO_ATTR_SERVER_VERSION and PDO_ATTR_SERVER_INFO for PDO::getAttribute(). (Calvin Buckley) - PDO PgSQL: . Fixed bug #81343 (pdo_pgsql: Inconsitent boolean conversion after calling closeCursor()). (Philip Hofstetter) - PDO SQLite: . Fixed bug #38334 (Proper data-type support for PDO_SQLITE). (Nikita) - PgSQL: . Fixed bug #81509 (pg_end_copy still expects a resource). (Matteo) . Convert resource to object \PgSql\Connection. (Máté) . Convert resource to object \PgSql\Result. (Máté) . Convert resource to object \PgSql\Lob. (Máté) - Phar: . Use SHA256 by default for signature. (remi) . Add support for OpenSSL_SHA256 and OpenSSL_SHA512 signature. (remi) - phpdbg: . Fixed bug #81135 (unknown help topic causes assertion failure). (krakjoe) - PSpell: . Convert resource to object \PSpell\Dictionary. (Sara) . Convert resource to object \PSpell\Config. (Sara) - readline: . Fixed bug #72998 (invalid read in readline completion). (krakjoe) - Reflection: . Fixed bug #81611 (ArgumentCountError when getting default value from ReflectionParameter with new). (Cameron Porter) . Fixed bug #81630 (PHP 8.1: ReflectionClass->getTraitAliases() crashes with Internal error). (Nikita) . Fixed bug #81457 (Enum: ReflectionMethod->getDeclaringClass() return a ReflectionClass). (Nikita) . Fixed bug #81474 (Make ReflectionEnum and related class non-final). (Nikita) . Fixed bug #80821 (ReflectionProperty::getDefaultValue() returns current value for statics). (Nikita) . Fixed bug #80564 (ReflectionProperty::__toString() renders current value, not default value). (Nikita) . Fixed bug #80097 (ReflectionAttribute is not a Reflector). (beberlei) . Fixed bug #81200 (no way to determine if Closure is static). (krakjoe) . Implement ReflectionFunctionAbstract::getClosureUsedVariables. (krakjoe) - Shmop: . Fixed bug #81407 (shmop_open won't attach and causes php to crash). (cmb) - SimpleXML: . Fixed bug #81325 (Segfault in zif_simplexml_import_dom). (remi) - SNMP: . Implement SHA256 and SHA512 for security protocol. (remi) - Sodium: . Added the XChaCha20 stream cipher functions. (P.I.E. Security Team) . Added the Ristretto255 functions, which are available in libsodium 1.0.18. (P.I.E. Security Team) - SPL: . Fixed bug #66588 (SplFileObject::fgetcsv incorrectly returns a row on premature EOF). (Aliaksandr Bystry) . Fixed bug #80663 (Recursive SplFixedArray::setSize() may cause double-free). (cmb, Nikita, Tyson Andre) . Fixed bug #81477 (LimitIterator + SplFileObject regression in 8.0.1). (cmb) . Fixed bug #81112 (Special json_encode behavior for SplFixedArray). (Nikita) . Fixed bug #80945 ("Notice: Undefined index" on unset() ArrayObject non-existing key). (Nikita) . Fixed bug #80724 (FilesystemIterator::FOLLOW_SYMLINKS remove KEY_AS_FILE from bitmask). (Cameron Porter) - Standard: . Fixed bug #81441 (gethostbyaddr('::1') returns ip instead of name after calling some other method). (Nikita) . Fixed bug #81491 (Incorrectly using libsodium for argon2 hashing). (Dan Pock) . Fixed bug #81142 (PHP 7.3+ memory leak when unserialize() is used on an associative array). (Nikita) . Fixed bug #81111 (Serialization is unexpectedly allowed on anonymous classes with __serialize()). (Nikita) . Fixed bug #81137 (hrtime breaks build on OSX before Sierra). (krakjoe) . Fixed bug #77627 (method_exists on Closure::__invoke inconsistency). (krakjoe) - Streams: . Fixed bug #81475 (stream_isatty emits warning with attached stream wrapper). (cmb) - XML: . Fixed bug #79971 (special character is breaking the path in xml function) (CVE-2021-21707). (cmb) . Fixed bug #70962 (XML_OPTION_SKIP_WHITE strips embedded whitespace). (Aliaksandr Bystry, cmb) - Zip: . Fixed bug #81490 (ZipArchive::extractTo() may leak memory). (cmb, Remi) . Fixed bug #77978 (Dirname ending in colon unzips to wrong dir). (cmb) . Fixed bug #81420 (ZipArchive::extractTo extracts outside of destination) (CVE-2021-21706). (cmb) . Fixed bug #80833 (ZipArchive::getStream doesn't use setPassword). (Remi)