Інші зміни
Зміни у модулях 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\"