Другие изменения

Изменения в модулях 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\".

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top