Otros cambios

Avisos y advertencias sobre aritmética con cadenas no inválidas

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

Advertencia de desbordamiento de secuencia de escape octal

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) "@"

Reparación de inconsistencias en $this

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.

Generación de ID de sesión sin 'hash'

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

Cambios en el manejo del fichero INI

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.

opcache.enable_cli

El valor predeterminado para este ajuste php.ini ha cambiado a 1 (habilitado) en PHP 7.1.2.

Generación de ID de sesión con un CSPRNG solamente

Los ID de sesión ahora solamente serán generados con un CSPRNG.

Mensajes TypeError más informativos cuando se permite NULL

Las excepciones 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."