Le serveur chez mon ancien employeur a été enraciné le week-end dernier et apparemment le fournisseur de serveur a apporté des modifications au serveur qui affecte le code PHP.Pourquoi les objets sont-ils transformés en chaînes lorsque d'autres objets non liés sont sérialisés?
Le problème qui s'est posé concerne la sérialisation des objets. Les objets en sérialisation et les autres objets n'étant pas sérialisés sont convertis en chaînes, ce qui brise le code. Ce code a fonctionné avant que le serveur ait été piraté.
Voici ce qui se passe:
$plate = new Plate();
$plate2 = clone $plate;
gettype($plate); // Prints "object"
gettype($plate2); // Prints "object"
$_SESSION['plate'] = serialize($plate);
gettype($plate); // Prints "string"
gettype($plate2); // Prints "string"
$plate = new Plate();
$plate2 = new Plate();
gettype($plate); // Prints "object"
gettype($plate2); // Prints "object"
$_SESSION['plate'] = serialize($plate);
gettype($plate); // Prints "string"
gettype($plate2); // Prints "string"
Comme vous pouvez le voir les objets, même ceux en cours de sérialisation, sont converties en chaînes. Des idées?
EDIT: Ils exécutent PHP 5.2.12 avec globals de registre sur.
register_globals semble être un coupable très probable basé sur mes tests avec votre code. Je reçois les mêmes résultats que vous maintenant (ils ont mentionné faire quelques changements à quelque chose sans préciser ce que "quelque chose" était). Je leur ai demandé de désactiver register_globals plus tôt aujourd'hui, mais ils ont en quelque sorte ignoré ma demande. Je leur donnerai un coup de pied à l'arrière un peu plus dur demain et je vous dirai comment ça se passe. –
register_globals ont été désactivés et tout fonctionne de nouveau correctement. Merci de votre aide. Je n'aurais pas pensé à register_globals comme étant le coupable. –