Інші зміни

Зміни у модулях SAPI

CLI

Использование**-a**безмодуля readline тепер призведе до помилки. Раніше використання -a без модуля readline було аналогічним виклику php без жодних аргументів, за винятком виведення додаткового повідомлення "Interactive mode enabled". Цей режим був не інтерактивним.

PHPDBG

Можливість дистанційного налагодження в phpdbg було видалено.

Змінені функції

Ядро

Порядок властивостей, що використовуються в foreach var_dump() serialize(), у порівнянні об'єктів тощо. був змінений. Тепер властивості впорядковані природним чином відповідно до їх оголошення та спадкування. Властивості, оголошені у батьківському класі, будуть перед дочірніми.

Цей порядок відповідає внутрішньому розташуванню властивостей у структурі zend_object і повторює порядок у default_properties_table[]иproperties_info_table[]. Старий лад не був задокументований і був викликаний деталями реалізації спадкування класів.

Фільтрування

Флаг**FILTER_FLAG_ALLOW_OCTALфильтраFILTER_VALIDATE_INT** тепер приймає вісімковий рядок з початковим вісімковим префіксом ("0o" "0O"

GMP

Усі функції GMP тепер приймають вісімковий рядок з початковим вісімковим префіксом ("0o" "0O"

PDO ODBC

Виклик PDO::getAttribute() з константою PDO::ATTR_SERVER_INFO і PDO::ATTR_SERVER_VERSION тепер поверне значення замість генерації винятку PDOException

Reflection

Виклик ReflectionProperty::setAccessible() і ReflectionMethod::setAccessible() більше не потрібно. Властивості та методи тепер завжди вважаються доступними під час роботи через Reflection.

Стандартні функції

syslog() тепер безпечний для бінарних файлів.

Інші зміни у модулях

GD

imagewebp() тепер може виконати кодування WebP без втрат, якщо передати **IMG_WEBP_LOSSLESS**параметру quality.

Ця константа визначається тільки в тому випадку, якщо libgd, що використовується, підтримує кодування WebP без втрат.

MySQLi

При складанні PHP з бібліотекою libmysqlclient тепер доступні функції mysqli_stmt::next_result() і mysqli::fetch_all()

OpenSSL

  • Длямодуля OpenSSLтепер потрібно OpenSSL версії не нижче 1.0.2.

  • Тепер підтримується OpenSSL 3.0. Майте на увазі, що багато шифрів більше не включені за умовчанням (частина застарілого провайдера) і перевірка параметрів (наприклад, мінімальні розміри ключів) стала суворішою.

Phar

  • За промовчанням для підписів тепер використовується SHA256.

  • Додано підтримку підписів OpenSSL_SHA256 та OpenSSL_SHA512.

SNMP

  • Додана підтримка SHA256 та SHA512 для протоколу безпеки.

Стандартні модулі

--with-password-argon2 Тепер використовує pkg-config для виявлення libargon2. Таким чином, альтернативний шлях до libargon2 тепер повинен бути вказаний у PKG_CONFIG_PATH.

Зміни в обробці INI-файлів

  • INI-директиваlog_errors_max_lenвидалено. Починаючи з PHP 8.0.0, вона вже перестала працювати.

  • Долар на початку рядка в лапках тепер можна екранувати:"\${"тепер інтерпретуватиметься як рядок із вмістом${

  • Зворотні сліші в рядках з подвійними лапками тепер більш послідовно розглядаються як символи, що екранують. Раніше"foo\\", за яким було щось, крім нового рядка, не вважалося завершеним рядком. Тепер це інтерпретується як рядок із вмістомfoo\. Однак, як виняток, рядок"foo\", за якою слідує новий рядок, як і раніше розглядатиметься як коректний рядок із вмістомfoo\, а не як незавершений рядок. Цей виняток потрібний для простого використання шляхів до файлів Windows, таких як"C:\foo\"