Correction d'un bug SPIP 3.1.1 avec PHP 7

Jusqu’à PHP 5.2, on pouvait passer un argument par référence dans une fonction PHP. Par défaut, les arguments sont passés par valeur. La valeur de l’expression passée en paramètre est copiée dans une variable locale. C’est cette variable qui est utilisée pour faire les calculs dans la fonction appelée. La variable ne peut être modifiée. Si la variable est passée par référence, alors celle-ci peut être modifiée par la fonction, on indique à la fonction l’adresse de la variable. La variable a alors un comportement global.

Correction inc/utils.php dans SPIP
Petite correction dans SPIP

Pour passer une variable par référence en PHP, on écrit un & devant la variable: &$var.

A partir de PHP 5.3, on reçoit une alerte disant que call-time pass-by-reference est obsolète, lorsque vous utilisez un & dans foo(&$a);. Et à partir de PHP 5.4.0, call-time pass-by-reference a été supprimé, l’exécution lève une erreur fatale.

Dans SPIP 3.1.1, on trouve dans /ecrire/inc/utils.php à la ligne 193, la fonction minipipe():

&val est passée par référence et lève une erreur fatale lorsqu’elle est passée en argument dans la fonction call_user_func dans PHP 7.

Pour corriger cela, on remplace par:

J’ai passé les lignes à changer en commentaire, et ai fait les corrections aux lignes suivantes.

Et hop, une erreur corrigée dans SPIP 3.1.1 pour tourner sous PHP 7.

Soumettre un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *