Uncaught exception 'Exception' with message 'Sérialisation de" SimpleXMLElement "n'est pas permis"
Je ne suis pas sûr de savoir pourquoi cela arrive. Je suis pas la sérialisation XML, mais mon tableau que j'ai créé à partir d'un flux RSS (remarque c'est juste un extrait):
$game_data = array (
'sysreqos' => $game->systemreq->pc->sysreqos,
'sysreqmhz' => $game->systemreq->pc->sysreqmhz,
'sysreqmem' => $game->systemreq->pc->sysreqmem,
'sysreqdx' => $game->systemreq->pc->sysreqdx,
'sysreqhd' => $game->systemreq->pc->sysreqhd,
);
Puis je sérialiser $some_var = serialize($game_data)
et écrire dans un fichier texte fputs($fh,$some_var)
.
Mais il n'est pas en arriver là, il erreurs sur le sérialiser ligne:
Uncaught exception 'Exception' with message 'Sérialisation de" SimpleXMLElement "n'est pas autorisé'
OriginalL'auteur user761088 | 2011-05-19
Vous devez vous connecter pour publier un commentaire.
Vous devez lancer les données XML à une chaîne, car en interne, ils sont tous
SimpleXMLElement
s.Ou peut-être un peu plus élégant:
Lorsque vous concat les données dans SQL
INSERT
chaîne de requête, il sera automatiquement intégré à une chaîne de caractères. Mais si vous mettez des données en PHP structure de données, il va la garder d'origine de type de données (qui est unSimpleXMLElement
).super! merci encore. btw. êtes-vous en mesure d'obtenir les votes. Je pensais que votre réponse a été simple et court et au point - aussi, je ne peux pas le trouver sur google mais en php commentaires je remarque que certaines personnes utilisent le @ sysmbol, pourquoi? et comment est-il utilisé
Le
@
est la suppression d'erreur de l'opérateur qui supprime tout message d'erreur qui peuvent se produire. Je ne sais pas pourquoi il est utilisé dans le code que vous avez vu sans voir le code.je désolé pour le retard dans la réponse, le @ est utilisé dans les commentaires. Je vois que beaucoup de. //@brow_cow - décrit une vache...
OriginalL'auteur Stefan Gehrig
Dans les Classes et les Objets docs, il y a ceci: afin d'être en mesure de unserialize() d'un objet, la classe de cet objet doit être défini.
Antérieures à PHP 5.3, ce n'était pas un problème. Mais après PHP 5.3 un objet fabriqué par l'SimpleXML_Load_String() ne peut pas être sérialisé. Une tentative de le faire se traduira par un échec, la levée d'une exception. Si vous stockez un tel objet dans $_SESSION, vous obtiendrez un post-exécution d'erreur qui dit ceci:
Fatal error: Uncaught exception 'Exception' with message 'Sérialisation de" SimpleXMLElement "n'est pas autorisée" dans [aucun fichier]:0 Stack trace: #0 {principal} jeté dans [aucun fichier] sur la ligne 0
La totalité du contenu de la session sera perdue. Espérons que cela sauve quelqu'un certain temps!
Par: Ray.Paseur
Ref: http://php.net/manual/en/function.unserialize.php
ce que je fais, c'est comme "Stefan Gehrig", a déclaré, la fonte de données XML à une chaîne
OriginalL'auteur abdulwadood