10 сентября 2026 года была выпущена третья бета-версия PHP 8.6.0. Это последняя бета-версия перед тем, как ветка перейдёт в стадию Release Candidate. Основное внимание в релизе уделено устранению ошибок в ядре и расширениях. Также были добавлены новые функции, такие как chunked-fetch для работы с PDO PostgreSQL, поддержка KEM API из библиотеки libsodium версии 1.0.22 и обновлённые параметры для сокетных буферов.

PHP 8.6 перешёл к финальной стадии бета-тестирования
PHP 8.6.0 Beta 3 продолжает стабилизацию будущей основной ветки языка перед жёсткой заморозкой функциональности. В официальном NEWS версия датирована 10 сентября 2026 года, а график разработки PHP 8.6 предусматривает hard feature freeze 22 сентября, RC1 — 24 сентября и общий релиз PHP 8.6.0 — 19 ноября.
Beta 3 остаётся тестовой сборкой. Использовать её в production-среде не следует: задача этого этапа — проверить совместимость приложений и расширений, найти регрессии и выявить проблемы до формирования Release Candidate.
В сравнении с предыдущими альфа- и бета-сборками в Beta 3 меньше крупных языковых новшеств и больше точечных исправлений. Полный список изменений опубликован в официальном NEWS тега php-8.6.0beta3.
Исправления памяти затронули ядро, Intl, Phar и потоки
PHP 8.6.0 Beta 3 закрывает сразу несколько ошибок, связанных с выходом за границы буфера, use-after-free и некорректным управлением памятью. Эти изменения не оформлены как отдельный security-релиз, однако разработчикам расширений и приложений с интенсивной обработкой внешних данных стоит проверить новую сборку заранее.
В ядре исправлено чтение за пределами допустимой области памяти при автоматическом определении UTF-16/UTF-32. В BCMath устранён out-of-bounds read в bc_is_zero_for_scale(), возникавший при значении scale, превышающем внутренний n_scale.
Расширение Intl получило сразу несколько исправлений:
- устранена утечка памяти при выводе объектов
IntlCalendar; - исправлена утечка при обходе результатов
IntlBreakIterator::getPartsIterator(); - устранён use-after-free при создании
IntlRuleBasedBreakIteratorиз скомпилированных правил; Collator::sortWithSortKeys()больше не выделяет фиксированный буфер размером 2 МиБ независимо от размера массива;- исправлены обработка ошибок ICU и поведение функций IDN.
В Phar устранён use-after-free при обращении к смонтированным каталогам и утечка памяти при дублирующихся native-элементах манифеста. В стандартной библиотеке исправлены segfault в stream filter callback и out-of-bounds read при обработке HTTP-перенаправления с пустым заголовком Location.
| Компонент | Изменение в Beta 3 | Практический смысл |
| Core | Исправлено out-of-bounds чтение при определении UTF-16/UTF-32 | Более корректная обработка некорректных или обрезанных входных данных |
| BCMath | Исправлено чтение за границами в bc_is_zero_for_scale() | Стабильнее работа с нетипичными значениями scale |
| Intl | Устранены утечки памяти и use-after-free | Полезно для долгоживущих процессов и приложений с ICU |
| Phar | Исправлены use-after-free и утечка памяти | Снижается риск сбоев при работе с Phar-архивами |
| Streams | Исправлены segfault и ошибки HTTP redirect | Надёжнее сетевые операции и пользовательские фильтры потоков |
is_a() и is_subclass_of() получили новое предупреждение о будущем поведении
В Beta 3 изменена диагностика вызовов is_a() и is_subclass_of(): передача строки первым аргументом при $allow_string = false теперь считается устаревающим поведением. Это изменение стоит проверить в библиотеках, где имена классов передаются как строки динамически.
Такой код теперь относится к deprecated-сценарию:
is_a(SomeClass::class, ParentClass::class, false);
is_subclass_of(SomeClass::class, ParentClass::class, false);Если проект использует подобные проверки, тестовая миграция на PHP 8.6 поможет заранее обнаружить предупреждения до выхода стабильной версии.
Ещё одно исправление ядра касается автозагрузки: одиночный разделитель namespace больше не должен приводить к попытке загрузить класс с пустым именем.
PDO PostgreSQL научился получать большие выборки порциями
Расширение PDO_PGSQL в PHP 8.6.0 Beta 3 получило Pdo\Pgsql::ATTR_CHUNK_SIZE, позволяющий задавать количество строк, получаемых за один фрагмент результата. Изменение ориентировано на сценарии, где запрос возвращает большой набор данных и его невыгодно обрабатывать как единый массив.
Для приложений с PostgreSQL это даёт дополнительный инструмент управления потреблением памяти и обработкой крупных выборок. Перед внедрением параметра в реальные сервисы стоит протестировать его вместе с используемыми режимами курсора и конкретной версией PostgreSQL-драйвера.
Параллельно исправлены сообщения об ошибках pg_insert(), pg_update() и pg_delete(): теперь они корректнее указывают допустимые флаги.
Sodium добавил X-Wing и ML-KEM768
PHP 8.6.0 Beta 3 добавляет поддержку KEM API, появившихся в libsodium 1.0.22: X-Wing и ML-KEM768. Речь идёт об интерфейсах механизма инкапсуляции ключей, которые становятся доступны через расширение Sodium при наличии соответствующей версии библиотеки.
Для большинства веб-приложений изменение не требует немедленных действий. Оно интереснее разработчикам криптографических библиотек, инфраструктурных компонентов и систем, которым требуется экспериментировать с современными схемами согласования и инкапсуляции ключей.
На текущем этапе это также повод проверить сборочные окружения: обновление системной libsodium может влиять на доступность новых API при компиляции PHP.
Потоки получили управление размерами socket-буферов
В stream socket context появились параметры so_rcvbuf и so_sndbuf. Они позволяют задавать размер системного буфера приёма и отправки сокета в байтах.
Изменение полезно для приложений, работающих с большим количеством сетевого трафика, собственными протоколами или высоконагруженными потоковыми соединениями. Раньше для более тонкой настройки таких параметров приходилось опускаться на уровень расширения Sockets или внешней конфигурации.
В Io\Poll\Context::wait() также изменена проверка $maxEvents: значения выше INT_MAX теперь отклоняются вместо неявного усечения.
CLI, DOM, MBString, SOAP и SimpleXML получили точечные исправления
PHP 8.6.0 Beta 3 исправляет ряд ошибок, которые могут проявляться в тестовых серверах, XML-приложениях, обработке Unicode и интеграциях на основе SOAP.
В CLI development server появилась корректная поддержка HTTP-механизма Expect: 100-continue. Это делает встроенный сервер PHP ближе к поведению обычных HTTP-серверов при загрузке тела запроса клиентами, использующими предварительное подтверждение.
В DOM исправлено устаревание кэша результатов getElementsByClassName() и других списков узлов после изменения className, classList или удаления атрибутов. Также скорректирована работа NamedNodeMap::getNamedItemNS() с пустым URI пространства имён.
MBString больше не должен выдавать NUL-байты или читать данные за границами буфера в mb_ereg_replace() при некорректной именованной обратной ссылке без закрывающего разделителя.
В SOAP исправлены повреждение WSDL-кэша при использовании soap:header с headerfaults и переполнение стека на самоссылочных schema group или attributeGroup.
SimpleXML получил исправления для создания атрибутов через attributes() и для доступа к дочерним элементам после SimpleXMLElement::addChild() при использовании пространств имён.
Вывод
Beta-версия PHP 8.6.0, релиз 3, ориентирована на разработчиков фреймворков, Composer-пакетов, расширений и команд, которые намерены поддерживать PHP 8.6 сразу после официального выхода. Использование этой версии для рабочих серверов не рекомендуется.
Приоритет тестирования выше у проектов, которые используют:
is_a()иis_subclass_of()со строковыми именами классов;- PostgreSQL через PDO и обрабатывают крупные выборки;
- Intl и ICU в долгоживущих worker-процессах;
- Phar, SOAP, DOM, SimpleXML или MBString;
- пользовательские stream filters и сетевые потоки;
- расширение Sodium и актуальные версии libsodium.
Для быстрой проверки приложения можно поднять отдельное окружение с Beta 3 и прогнать unit-, integration- и статические тесты. Доступность сборки также можно проверить через CLI-контейнер:
docker run --rm php:8.6.0beta3-cli php -vПосле Beta 3 планируется, что 22 сентября PHP 8.6 будет заморожен с точки зрения новых функций, а 24 сентября выйдет RC1. Если проект планирует официально поддерживать PHP 8.6 с момента его General Availability 19 ноября, то ближайшие две недели — это оптимальное время для выявления возможных несовместимостей до того, как ветка перейдёт в стадию Release Candidate.