PHP 8.5.10 і 8.4.25 виправляють падіння DOM, масивів та обробки HEIF
Стабільні patch-релізи усувають stack overflow у глибоких структурах, проблеми preloading, DOM, EXIF, Date та сокетів.

Команда PHP випустила PHP 8.5.10 та 8.4.25 — паралельні стабільні оновлення з виправленнями падінь, некоректної роботи DOM, витоків пам’яті, перевірок сокетів і обробки метаданих зображень. Це не функціональний реліз: новий синтаксис або API тут шукати не варто. Його цінність — у меншій кількості аварій на нетипових або ворожих вхідних даних, тому оновлення доречно провести через звичайний patch-релізний pipeline.

Глибокі структури більше не повинні валити процес
У PHP 8.5.10 виправлено stack overflow під час порівняння глибоко вкладених масивів. Схожа група проблем була у DOM: нормалізація дуже глибокого DOMDocument або Dom\XMLDocument, а також порівняння вкладених вузлів через DOMNode::isEqualNode() могли переповнити стек.
Для прикладного коду це особливо важливо у сервісах, які приймають XML, HTML або рекурсивний JSON із зовнішніх джерел. Сам patch не скасовує необхідність обмежувати глибину, розмір документа та час обробки: виправлена аварія runtime не означає, що довільно складне дерево стало дешевим. Ліміти reverse proxy, parser options і application validation мають залишатися.
Preloading, EXIF і керування пам’яттю
Core отримав виправлення crash для first-class callable у constant expression під час preloading. Такі дефекти можуть проявлятися лише після рестарту FPM або application server із увімкненим OPcache preload, тому staging без preloading не відтворює production-поведінку. Перевірку треба робити з тією самою конфігурацією OPcache та тим самим preload script.
exif_read_data() більше не має виділяти HEIF meta box, більший за сам вхідний файл. Це знижує ризик неконтрольованого споживання пам’яті на спеціально сформованих медіа. Але upload pipeline однаково повинен перевіряти MIME за вмістом, обмежувати bytes і dimensions, обробляти файл в ізольованому worker та не довіряти розширенню.
У Date виправлено витік під час повторного виклику DatePeriod::__construct(). Для короткого web request він міг бути майже непомітним, а для queue worker або resident process — накопичуватися. Після оновлення корисно повторити довгий тест із вимірюванням RSS, особливо якщо застосунок масово будує recurring schedules.
DOM, атрибути та сокети
DOMElement::setAttribute() тепер коректно працює, коли DTD оголошує default value для атрибута: раніше виклик міг завершитися без явної помилки, але не дати очікуваного результату. Системам, які підписують або трансформують XML, варто повторити fixtures із DTD і перевірити serialized output byte-for-byte.
Гілка PHP 8.4.25 отримала споріднені стабілізаційні зміни, зокрема точніші validation messages для socket_set_option(). Окремі набори виправлень у 8.4 і 8.5 не варто змішувати в документації: команда має читати changelog саме своєї гілки та оновлювати patch-рівень без неявного переходу між minors.
Як оновлювати без сюрпризів
Patch-релізи PHP зазвичай не вимагають міграції application API, але змінена поведінка на помилкових даних може проявити приховану залежність тестів від crash, warning або silent failure. Найкращий порядок — оновити base image із digest, перебудувати extensions, очистити й заново прогріти OPcache, а потім виконати smoke tests для web, CLI та worker-процесів.
- Запустити тестовий набір із production
php.ini, OPcache, JIT і preload. - Перевірити глибоко вкладені масиви, DOM/XML fixtures та завантаження HEIF.
- Порівняти список і ABI сторонніх extensions після rebuild контейнера.
- Провести rolling deployment із контролем 5xx, RSS worker, latency та restart rate.
- Зберегти швидкий rollback на попередній digest, не повертаючи стару схему даних.
Практичний висновок: для підтримуваної гілки це нормальне планове оновлення, але його не слід відкладати лише тому, що немає нових функцій. Виправлення crash і небезпечних edge cases найбільш цінні саме на публічних endpoints.
Обмеження
Офіційний changelog описує виправлені дефекти, а не гарантує безпеку будь-якої конфігурації. Він не замінює обмеження ресурсів, валідацію, sandbox для конвертації медіа та підтримувані версії бібліотек. Якщо застосунок уже на непідтримуваній minor-гілці, встановлення одного patch не розв’язує проблему життєвого циклу.
Джерело та права
Матеріал є самостійним українським перекладом-переказом офіційного PHP 8 ChangeLog для 8.5.10, сторінки стабільних завантажень PHP та release announcement. PHP 8.5.10 і 8.4.25 датовані 27–28 серпня 2026 року. Матеріали репозиторію php-src поширюються за PHP License 3.01 та BSD-3-Clause для окремих компонентів. Перекладено, адаптовано й доповнено редакцією «Бібліотеки програміста». Обкладинка створена редакцією за допомогою AI і не входить до першоджерела.
Матеріал перекладено, переказано та доповнено редакцією українською мовою.
Читайте далі — ми вже розбираємо наступну важливу тему.


