Прочие изменения
Ядро PHP
Функция set(raw)cookie принимает аргумент $option
Функции setcookie() и setrawcookie() теперь также поддерживают следующее объявление (сигнатуру):
где$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() теперь также поддерживает следующее объявление (сигнатуру):
где$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, чтобы облегчить установку желаемого уровня сжатия.