Прочие изменения
Замечания и предупреждения при выполнении арифметических операций с некорректными строками
Новые ошибки уровней E_WARNING
и
E_NOTICE
были добавлены при использовании некорректных
строк с операторами, ожидающими числа (+
-
*
/
**
%
<<
>>
|
&
^
) и их эквивалентами с
присваиванием. Ошибка уровня E_NOTICE
выдается, когда строка
начинается с цифр, но далее содержит не цифровые символы, и ошибка уровня
E_WARNING
выдается тогда, когда строка вообще не содержит
цифр.
<?php
'1b' + 'что-то';
Результат выполнения данного примера:
Notice: A non well formed numeric value encountered in %s on line %d Warning: A non-numeric value encountered in %s on line %d
Предупреждение при переполнении экранированной восьмеричной последовательности
Ранее 3-октетная восьмиричная строка переполнялась никому ничего не сообщая.
Теперь при переполнении будет вызвана ошибка уровня
E_WARNING
.
<?php
var_dump("\500");
Результат выполнения данного примера:
Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d string(1) "@"
Исправлена несогласованность $this
В то время как $this
считается специальной переменной в PHP, ей не
хватало специальных проверок, что ее не используют в качестве переменной и не
переопределили. Теперь использовать $this
в качестве пользовательской
переменной запрещено. Также запрещено присваивать ей значение и использовать
в глобальном пространстве имен.
Генерация идентификаторов сессий без хеширования
Идентификаторы сессий больше не хешируются во время создания. Вместе с этим удалены следующие четыре параметра из ini-файла:
-
session.entropy_file
-
session.entropy_length
-
session.hash_function
-
session.hash_bits_per_character
И добавлены два других:
-
session.sid_length
- определяет длину идентификатора сессии. По умолчанию используется 32 символа для обеспечения обратной совместимости. -
session.sid_bits_per_character
- определяет количество бит на каждый символ идентификатора (то еть можно увеличить количество доступных для использования в идентификаторе символов). Для обратной совместимости по умолчанию используется 4 бита.
Изменения в обработке INI-файлов
-
precision
-
Если установлено в -1, то будет использован режим dtoa. Значение по умолчанию 14.
-
serialize_precision
-
Если установлено в -1, то будет использован режим dtoa. Теперь значение по умолчанию -1.
-
gd.jpeg_ignore_warning
-
Значение по умолчанию для этой настройки php.ini изменено на 1, так что, по умолчанию, предупреждения libjpeg будут игнорироваться.
-
opcache.enable_cli
-
В PHP 7.1.2 значение по умолчанию для этой настройки php.ini изменено на 1 (включено), а в PHP 7.1.7 возвращено значение 0 (выключено)
Генерация идентификаторов сессий только с помощью CSPRNG
Идентификаторы сессий теперь создаются только с помощью CSPRNG.
Более информативное сообщение TypeError, если допустим null
Теперь исключение TypeError для проверок типа arg_info
предоставляет более информативное сообщение об ошибке. Если тип параметра или
возвращаемое значение может быть null
(либо имеет значение null
по умолчанию или
имеет обнуляемый тип), то теперь в сообщении будет упомянуто "must be ... or null"
или "must ... or be null."