24 сентября 2026 года разработчики PHP представили первую предварительную сборку PHP 8.6 в статусе Release Candidate, причём сразу под номером RC2. Причиной необычной нумерации стала ошибка при подготовке RC1. Новая версия содержит исправления JIT-компилятора, обработки HTML, работы с базами данных и нескольких проблем с памятью.

Ошибка при подготовке PHP 8.6 RC1 привела к пропуску версии
Первый кандидат на стабильный релиз PHP 8.6 появился с неожиданным номером. После трёх бета-версий команда готовилась выпустить RC1 24 сентября, однако при подготовке пакетов произошла ошибка. Разработчики пропустили этот номер и опубликовали RC2 в первоначально назначенный день.
Release Candidate — этап разработки, на котором основной набор возможностей уже сформирован. Разработчики сосредотачиваются на устранении обнаруженных ошибок, проверке совместимости и подготовке окончательного релиза.
Для PHP 8.6 этот этап начался 22 сентября, когда проект перешёл к жёсткой заморозке новых возможностей и выделил отдельную ветку разработки. Исправления, которые попадают в неё, помогают проверить поведение будущей стабильной версии в существующих приложениях.
В PHP 8.6 RC2 устранили ошибки JIT и обработки массивов
Среди исправлений RC2 есть ошибка трассирующего JIT-компилятора, при которой оптимизация сложения внутри цикла могла привести к неправильному результату. JIT преобразует части PHP-кода в машинные инструкции во время выполнения программы. Поэтому ошибки в его оптимизациях особенно трудно обнаруживать обычной проверкой исходного кода.
Разработчики исправили и положение внутренних указателей и итераторов foreach после уплотнения массивов с удалёнными элементами. Такая ситуация возникает, когда программа изменяет массив, а затем продолжает его обход. В RC2 устранили некорректные позиции, которые могли нарушать дальнейшую обработку данных.
Ещё одна группа изменений касается восстановления объектов из сериализованного представления. Команда поправила обработку ссылок на типизированные свойства внутренних классов и несколько сбоев, обнаруженных автоматическим тестированием OSS-Fuzz. Подробности перечислены в официальном журнале изменений PHP 8.6.0 RC2.
Исправления DOM и Lexbor затрагивают обработку HTML
В библиотеку Lexbor, которую PHP использует при разборе HTML, включили исправления переполнения буфера при обработке :lexbor-contains() и некорректных последовательностей декодирования. Переполнение возникает, когда программа пытается обратиться к памяти за пределами выделенной области. В журнале RC2 указаны устранённые дефекты, но отдельный идентификатор CVE для них в объявлении релиза не приводится.
В DOM исправили ситуацию, когда Dom\HTMLDocument::getElementById() не находил идентификаторы внутри SVG и MathML. Это касается документов, где HTML соседствует с векторной графикой или математическими формулами. Устранён также сценарий обращения к уже освобождённой памяти при повторном создании DOMXPath с зарегистрированными PHP-функциями.
Модуль mbstring получил таблицы Unicode 18.0 и исправление чтения за пределами строки в mb_strpos(), если текст завершался обрезанной последовательностью UTF-8. В intl поправили клонирование форматировщиков дат и сообщений, при котором ранее могла теряться часть настроек.
PDO, MySQLi и SQLite получили исправления нестандартных сценариев
В PDO исправили чтение за пределами памяти при запросе метаданных несуществующего столбца через PDOStatement::getColumnMeta(). Метод bindColumn() теперь корректно обрабатывает попытку привязать имя столбца, отсутствующее в результатах запроса. Эти изменения касаются библиотек, которые динамически разбирают результаты SQL-запросов.
В MySQLi устранён сбой внутренней проверки при обращении к свойствам объекта после неудачного переподключения. В SQLite исправлено аварийное завершение, которое могло возникнуть, если приложение вызывало SQLite3::close() из пользовательского обработчика обратного вызова. Отдельное исправление затронуло session_start(): при определённом сбое создания идентификатора сессии выполнение больше не продолжается по прежнему ошибочному пути.
Для Windows и встроенного PHP-сервера подготовили отдельные исправления
На Windows в RC2 исправили работу кэша потокового состояния в CLI-сборках ZTS, рассчитанных на многопоточность. Функция proc_open() получила исправления трёх платформенных дефектов, включая обработку неудачного создания файла. Эти изменения затрагивают запуск внешних процессов из PHP-приложений.
Встроенный веб-сервер PHP ранее мог оставлять открытый файловый дескриптор после каждого запроса HEAD к статическому файлу. В RC2 утечку устранили. Такой сервер обычно используют для локальной разработки и тестов, поэтому исправление упрощает длительные проверочные запуски.
Исходные архивы и экспериментальные сборки для Windows опубликованы на официальной странице предварительных версий PHP. Для Windows доступны варианты x86 и x64, с потокобезопасностью (Thread Safe) и без неё (Non Thread Safe), собранные с VS18.
PHP 8.6 RC3 запланирован на 8 октября, стабильная версия — на 19 ноября
RC2 продолжает цикл, начавшийся 2 июля с Alpha 1. Новые возможности, в том числе функция clamp() и частичное применение функций, появились на более ранних этапах. Нынешний выпуск сосредоточен на проверке уже подготовленного PHP 8.6 и устранении выявленных дефектов.
По официальному графику PHP 8.6, следующий кандидат RC3 намечен на 8 октября, RC4 — на 22 октября, RC5 — на 5 ноября. Выпуск стабильной PHP 8.6.0 запланирован на 19 ноября 2026 года. Команда отдельно предупреждает, что RC2 пока предназначен для тестирования и не рассчитан на производственные серверы. Насколько окончательная версия будет отличаться от нынешней сборки, покажут результаты оставшихся этапов проверки.