Использование -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\"
.