Использование -a без модуля readline теперь приведёт к ошибке.
Ранее использование -a без модуля readline было аналогичным вызову php без каких-либо аргументов,
за исключением вывода дополнительного сообщения "Interactive mode enabled"
.
Этот режим был не интерактивным.
Возможность дистанционной отладки в phpdbg была удалена.
Порядок свойств, используемых в foreach, var_dump(), serialize(), при сравнении объектов и т.д. был изменён. Теперь свойства упорядочены естественным образом в соответствии с их объявлением и наследованием. Свойства, объявленные в родительском классе, будут перед дочерними.
Этот порядок соответствует внутреннему расположению свойств в структуре
zend_object
и повторяет порядок в
default_properties_table[]
и properties_info_table[]
.
Старый порядок не был задокументирован и был вызван деталями реализации наследования классов.
Флаг FILTER_FLAG_ALLOW_OCTAL
фильтра
FILTER_VALIDATE_INT
теперь принимает
восьмеричную строку с начальным восьмеричным префиксом
("0o"
/"0O"
).
Все функции GMP теперь принимают восьмеричную строку с начальным восьмеричным префиксом
("0o"
/"0O"
).
Вызов PDO::getAttribute() с константой
PDO::ATTR_SERVER_INFO
и
PDO::ATTR_SERVER_VERSION
теперь вернёт значение вместо генерации исключения PDOException.
Вызов ReflectionProperty::setAccessible() и ReflectionMethod::setAccessible() больше не требуется. Свойства и методы теперь всегда считаются доступными при работе через Reflection.
syslog() теперь безопасен для двоичных файлов.
imagewebp() теперь может выполнить кодирование WebP без потерь,
если передать IMG_WEBP_LOSSLESS
параметру quality.
Эта константа определяется только в том случае, если используемый libgd поддерживает кодирование WebP без потерь.
При сборке PHP с библиотекой libmysqlclient теперь доступны функции mysqli_stmt::next_result() и mysqli::fetch_all().
Для модуля OpenSSL теперь требуется OpenSSL версии не ниже 1.0.2.
Теперь поддерживается OpenSSL 3.0. Имейте в виду, что многие шифры больше не включены по умолчанию (часть устаревшего провайдера) и проверка параметров (например, минимальные размеры ключей) стала более строгой.
По умолчанию для подписей теперь используется SHA256.
Добавлена поддержка подписей OpenSSL_SHA256 и OpenSSL_SHA512.
Добавлена поддержка SHA256 и SHA512 для протокола безопасности.
--with-password-argon2
теперь использует pkg-config для обнаружения libargon2.
Таким образом, альтернативный путь к libargon2 теперь должен быть указан в
PKG_CONFIG_PATH.
INI-директива log_errors_max_len удалена. Начиная с PHP 8.0.0 она уже перестала работать.
Доллар в начале строки в кавычках теперь можно экранировать: "\${"
теперь будет
интерпретироваться как строка с содержимым ${
.
Обратные слеши в строках с двойными кавычками теперь более последовательно
рассматриваются как экранирующие символы. Раньше "foo\\"
,
за которым следовало что-то, кроме новой строки, не считалось завершённой строкой.
Теперь это интерпретируется как строка с содержимым foo\
.
Однако, как исключение, строка "foo\"
, за которой следует новая строка,
будет по-прежнему рассматриваться как корректная строка с содержимым foo\
,
а не как незавершённая строка.
Это исключение необходимо для поддержки простого использования путей к файлам Windows,
таких как "C:\foo\"
.