Se han introducido nuevos errores E_WARNING
y E_NOTICE
al forzar cadenas no válidas usando operadores
que esperan número (+ -
* / **
% << >>
| & ^) o sus
equivalentes de asignación. Se emite un E_NOTICE
cuando la
cadena comienza con un valor numérico pero contiene al final caracteres no
numéricos, y se emite un E_WARNING
cuando la cadena
no contiene ningún valor numérico.
<?php
'1b' + 'algo';
El resultado del ejemplo sería:
Notice: A non well formed numeric value encountered in %s on line %d Warning: A non-numeric value encountered in %s on line %d
Anteriormente, las secuencias de escape de cadenas octales de tres octetos desbordaban silenciosamente.
Ahora, siguen desbordando, pero se emite un
E_WARNING
.
<?php
var_dump("\500");
El resultado del ejemplo sería:
Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d string(1) "@"
Pese a que $this está considerada un variable especial en PHP, carece de comprobaciones apropiadas para asegurarse de que no se usó como un nombre de variable o fue reasignada. Ahora, esto se ha rectificado para asegurarse de que $this no puede ser una variable definida por el usuario, reasignada a un valor diferente, o globalizada.
Los ID de sesión ya no utilzarán 'hash' en su generación. Este cambio provoca la eliminación de los cuatro siguientes ajustes ini:
session.entropy_file
session.entropy_length
session.hash_function
session.hash_bits_per_character
Y la adición de los dos siguientes ajustes ini:
session.sid_length
- define la longitud del
ID de sesión, siendo 32 caracteres la predeterminada por retrocompatibilidad
session.sid_bits_per_character
- define el número
de bits a almacenar por carácter (esto es, aumenta el rango de caracteres
que se pueden utilizar en el ID de sesión), siendo 4 el predeterminado por
retrocompatibilidad
precision
Si el valor se establece a -1, se usará el modo dtoa 0. El valor predeterminado aún es 14.
serialize_precision
Si el valor se establece a -1, se usará el modo dtoa 0. Ahora se usa el valor -1 como predeterminado.
gd.jpeg_ignore_warning
El valor predeterminado de este ajuste de php.ini ha cambiado a 1, por lo que las advertencias predeterminadas de libjpeg son ignoradas.
Los ID de sesión ahora solamente serán generados con un CSPRNG.
NULL
Las exceptciones TypeError para comprobaciones de tipo arg_info ahora
proporcionan mensajes de error más informativos. Si el tipo de parámetro o el tipo
devuelto acepta NULL
(ya sea teniente un valor predeterminado de NULL
o siendo
un tipo «nullable»), el mensaje de error ahora mencionará esto con un mensaje
"must be ... or null" o "must ... or be null."