Рекомендуем
VPS на Windows и Linux — от 49 ₽ за 7 дней Быстрый запуск сервера на NVMe для сайтов, ботов и других задач.
Выбрать VPS

PHP 8.6.0 RC2 вышел вместо RC1 — исправления JIT, DOM и ошибок работы с памятью

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

PHP 8.6.0 RC2 вышел вместо RC1
PHP 8.6.0 RC2 вышел вместо RC1

Ошибка при подготовке 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 пока предназначен для тестирования и не рассчитан на производственные серверы. Насколько окончательная версия будет отличаться от нынешней сборки, покажут результаты оставшихся этапов проверки.

При использовании материалов сайта необходимо указывать ссылку на TGLand.ru. Если вы копируете фрагменты текста в интернете, прямая гиперссылка, доступная для индексации поисковыми системами, должна быть размещена в начале материала.

Вам также может понравиться