Прочие изменения

Ядро PHP

Функция set(raw)cookie принимает аргумент $option

Функции setcookie() и setrawcookie() теперь также поддерживают следующее объявление (сигнатуру):

setcookie ( string $name , string $value = "" , array $options = [] ) : bool
где $options - ассоциативный массив, который может иметь любой из ключей "expires", "path", "domain", "secure", "httponly" и "samesite".

Новые ini-директивы syslog

Следующие ini-директивы добавлены для настройки логирования, если для опции error_log установлено значение syslog:

syslog.facility
Указывает тип программы, регистрирующей сообщение.
syslog.filter
Задает тип фильтра для фильтрации сообщений. Поддерживаются три типа фильтров - all, no-ctrl и ascii.
syslog.ident
Задает строку ident, добавляемую перед каждым сообщением.

Сборщик мусора

Улучшен сбор циклических ссылок, что может привести к значительным улучшениям производительности.

Разное

Функция var_export() теперь экспортирует объекты stdClass в качестве массива, приведенных к объекту ((object) array( ... )), вместо использования несуществующего метода stdClass::__setState().

Функция debug_zval_dump() изменена для отображения рекурсивных массивов и объектов так же, как и var_dump(). Теперь она не отображает их дважды.

Функции array_push() и array_unshift() теперь также могут быть вызваны с одним аргументом, что особенно удобно в сочетании с оператором распространения.

Интерактивный отладчик PHP

Удалены неиспользуемые константы PHPDBG_FILE, PHPDBG_METHOD, PHPDBG_LINENO и PHPDBG_FUNC.

Менеджер процессов FastCGI

Теперь также доступна функция getallheaders().

Библиотека Client URL (cURL)

Теперь требуется библиотека libcurl версии ≥ 7.15.5.

Фильтрация данных

FILTER_VALIDATE_FLOAT теперь также поддерживает параметр thousand, который определяет набор разрешенных символов-разделителей для тысяч. Значение по умолчанию ("',.") полностью обратно совместимо с предыдущими версиями PHP.

FILTER_SANITIZE_ADD_SLASHES был добавлен в качестве псевдонима фильтра magic_quotes (FILTER_SANITIZE_MAGIC_QUOTES). Фильтр magic_quotes подлежит удалению в будущих версиях PHP.

FTP

Режим по умолчанию изменен на binary.

Функции интернационализации

Константа Normalizer::NONE объявлена устаревшей, когда PHP скомпилирован с ICU версии ≥ 56.

Введена константа Normalizer::FORM_KC_CF в качестве аргумента Normalizer::normalize() для нормализации NFKC_Casefold; доступна, когда есть ICU ≥ 56.

Объектная нотация JavaScript (JSON)

Добавлен новый флаг JSON_THROW_ON_ERROR, который можно использовать с json_decode() или json_encode() и заставляет эти функции выбрасывать новое исключение JsonException при ошибке, вместо того, чтобы устанавливать глобальное состояние ошибки, которое извлекается с помощью json_last_error() и json_last_error_msg(). JSON_PARTIAL_OUTPUT_ON_ERROR имеет приоритет над JSON_THROW_ON_ERROR.

Мультибайтовые строки

Конфигурационная опция --with-libmbfl больше недоступна.

ODBC (Unified)

Поддержка ODBCRouter и Birdstep, включая ini-директиву birdstep.max_links была удалена.

OPcache

Удалена ini-директива opcache.inherited_hack. Это значение уже игнорировалось с PHP 5.3.0.

OpenSSL

Добавлены опции потока ssl min_proto_version и max_proto_version, а также соответствующие с ними константы для возможных значений протокола TLS.

Регулярные выражения (совместимые с Perl)

Расширение PCRE было обновлено до PCRE2, что может привести к незначительным изменениям в поведении (например, диапазоны символов в классах теперь интерпретируются более строго) и дополняет существующий синтаксис регулярных выражений.

Функция preg_quote() теперь также экранирует символ '#'.

Microsoft SQL Server и функции Sybase (PDO_DBLIB)

Добавлен атрибут PDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS для автоматического пропуска пустых наборов строк.

Добавлен атрибут PDO::DBLIB_ATTR_TDS_VERSION который представляет версию TDS.

Столбцы DATETIME2 теперь обрабатываются как столбцы DATETIME.

Функции SQLite (PDO_SQLITE)

Базы данных SQLite3 теперь можно открыть в режиме только для чтения, установив новый атрибут PDO::SQLITE_ATTR_OPEN_FLAGS на значение PDO::SQLITE_OPEN_READONLY.

Обработка сессий

Функция session_set_cookie_params() теперь также поддерживает следующее объявление (сигнатуру):

session_set_cookie_params ( array $options ) : bool
где $options - ассоциативный массив, который может иметь любой из ключей "lifetime", "path", "domain", "secure", "httponly" и "samesite". Соответственно, возвращаемое значение session_get_cookie_params() теперь также имеет элемент с ключом "samesite". Кроме того, новая ini-опция session.cookie_samesite для установки по умолчанию директивы SameSite для cookies. По умолчанию используется значение "" (пустая строка), поэтому директива SameSite не задана. Может быть установлена на значение "Lax" или "Strict", которое устанавливает соответствующее значение директиве SameSite.

Tidy

Сборка вместе » tidyp теперь также поддерживается прозрачно. Поскольку tidyp не предлагает API для получения даты релиза, tidy_get_release() и tidy::getRelease() возвращает значение 'unknown' в этом случае.

XML-парсер

Возвращаемое значение callback-функции xml_set_external_entity_ref_handler() больше не игнорируется, если модуль был собран с библиотекой libxml. Ранее возвращаемое значение игнорировалось, а парсинг никогда не прекращался.

Zip

Сборка с использованием libzip, входящего в PHP, не рекомендуется, но все же возможна путем добавления --without-libzip в конфигурацию.

Сжатие Zlib

Добавлен параметр контекста zlib/level для обертки compress.zlib, чтобы облегчить установку желаемого уровня сжатия.