Pourquoi la destruction de l'objet session a échoué
J'obtiens un "objet de Session destruction a échoué" lorsque j'utilise session_destroy().
session_start();
if(isset($_SESSION['user_id'])){
$_SESSION=array();
if(isset($_COOKIE[session_name()])){
setcookie(session_name(),'',0,"/");
}
session_destroy();
}
Quelles sont les causes de cette erreur?
source d'informationauteur Mahks
Vous devez vous connecter pour publier un commentaire.
Erreur:
C'est plutôt trivial, pas de session
a été commencéobjet a été partie prenante, de sorte que vous ne pouvez pas détruire.La
@
opérateur n'est pas toujours actif, par exemple avec l'erreur fonctions de production de rapports.Edit:
Cette erreur est normalement causée lorsque PHP essaie de supprimer le fichier de session, mais il ne peut pas le trouver.
Dans votre cas avec
session_destroy
il y a seulement une place en PHP qui provoque cela. C'est à ce moment lasession.save_handler
(voir ainsisession_set_save_handler
) renvoieFALSE
pour la détruire action. Cela peut dépendre du type de sauver de gestionnaire que vous utilisez, la valeur par défaut est fichiers. Avec celui-ci, quand lesession.save_path
paramètre est incorrect (par exemple, pas un répertoire accessible), ce serait la cause d'une telle erreur.Qui dépend de la façon dont la sortie est créée et sur la configuration de PHP.
@
ne fonctionne pas toujours. Par exemple rappels enregistrés avecset_error_handler
continuera de recevoir ces messages.Dans mon cas, j'ai essayé de détruire la session avant le cookie a été créé. En d'autres termes que j'ai fait quelque chose comme:
De sorte que le serveur n'ai pas eu la chance de "contact" avec le navigateur avant de détruire la session.
Solution Simple qui a fonctionné pour moi a été
Si vous utilisez un chargeur automatique, il peut être échec du chargement d'une classe qui est enregistrée dans la session.