Autres changements

Notices et avertisements sur opérations arithmétiques avec chaînes invalides

Des nouvelles erreurs E_WARNING et E_NOTICE ont été introduite quand des chaîne de caractères invalides sont contraint en utilisant des opérateurs s'attendant à des nombres (+ - * / ** % << >> | & ^) ou leurs assignements équivalent. Une E_NOTICE est émise quand la chaîne de caractères commence avec une valeur numérique mais contient des caractères non numériques de fin, et une E_WARNING est émise quand la chaîne de caractères ne contient pas une valeur numérique.

<?php
'1b' 'something';

L'exemple ci-dessus va afficher :

Notice: A non well formed numeric value encountered in %s on line %d
Warning: A non-numeric value encountered in %s on line %d

Avertir en cas de débordement de la séquence d'échappement octale

Auparavant, les séquences d'échappement de chaîne octale de 3 octets débordaient silencieusement. Désormais, ils déborderont toujours, mais une E_WARNING sera émise.

<?php
var_dump
("\500");

L'exemple ci-dessus va afficher :

Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d
string(1) "@"

Correction des incohérences de $this

Bien que $this est considéré une variable spéciale en PHP, elle lui manquait des contrôles appropriés pour s'assurer qu'elle n'était pas utilisé comme nom de variable ou réassigné. Ceci a été désormais rectifié pour s'assurer que $this ne peut pas être une variable définit par l'utilisateur, réassigné à une différente valeur, ou globalisé.

Génération d'ID de session sans hachage

Les IDs de session ne seront plus hashé dès la génération. Avec ce changement ceci amène à la suppression des quatres paramètres ini suivant :

  • session.entropy_file
  • session.entropy_length
  • session.hash_function
  • session.hash_bits_per_character

Et l'addition des deux paramètres ini suivant :

  • session.sid_length - définit la longeur de l'ID de session, par défaut 32 caractères pour la rétrocompatibilité.
  • session.sid_bits_per_character - définit le nombre de bits à enregistrer par caractère (c.à.d augmente l'intervale de caractères qui peuvent être utilisé dans l'ID de session), par défaut 4 pour la rétrocompatibilité.

Modifications apportées à la gestion des fichiers INI

precision

Si la valeur est définit à -1, alors le mode dtoa 0 est utilisé. La valeur par défaut est toujours 14.

serialize_precision

Si la valeur est définit à -1, alors le mode dtoa 0 est utilisé. La valeur -1 est désormais utilisé par défaut.

gd.jpeg_ignore_warning

La valeur par défaut de ce paramètre php.ini a été modifié à 1, donc par défaut les avertissements libjpeg sont ignorés.

opcache.enable_cli

La valeur par défaut de ce paramètre php.ini a été modifié à 1 (activé) en PHP 7.1.2.

Génération des IDs de sessions seulement avec un CSPRNG

Les IDs de sessions seront désormais seulement générés avec un CSPRNG (Crypto Secure Pseudo Random Number Generator)

Des messages TypeError plus informatifs quand NULL est permit

Les exceptions TypeError pour les vérifications de type arg_info fourniront désormais des messages d'erreurs plus informatifs. Si le type du paramètre ou la type de retour accepte NULL (soit en ayant une valeur par défaut de NULL soit en étant un type nullable), alors le message d'erreur mentionnera désormais ceci avec un message "must be ... or null" ou "must ... or be null."