Session PHP effets secondaires d'avertissement avec des variables globales comme source de données
Je suis en train d'héberger un site web PHP qui m'a été donnée. Je vois cet avertissement:
Avertissement: Inconnu: Votre script éventuellement
s'appuie sur une session d'effets secondaires qui
existé jusqu'PHP 4.2.3. S'il vous plaît être
informés que la séance d'extension
ne pas les considérer comme des variables globales
une source de données, à moins que
register_globals est activé. Vous pouvez
désactiver cette fonctionnalité et c'
avertissement par la mise en
session.bug_compat_42 ou
session.bug_compat_warn off,
respectivement. dans Inconnu sur la ligne 0
Qu'est-ce que cela signifie? Comment pourrais-je retrouver la source de ce problème dans le code?
OriginalL'auteur Zack Peterson | 2008-10-06
Vous devez vous connecter pour publier un commentaire.
fondamentalement, vous avez une variable avec le même nom que votre session. ex:
qui va reproduire cette erreur. vous pouvez arrêter de PHP en essayant de trouver les variables et de vous avertir au sujet en ajoutant ces lignes dans votre script:
ces valeurs peuvent être définies en php.ini ou .htaccess ainsi
Pour les personnes qui ne sont pas que les grands, à la modification de php.les fichiers ini, le format ci-dessus n'est pas ce que vous utilisez. Il doit être "session.bug_compat_42 = 0" sur une ligne, "de la session.bug_compat_warn = 0" sur l'autre (pas de guillemets). Faire une recherche dans votre php.fichier ini mais d'abord. Il est probable que les deux ont déjà été définie comme 1 et vous avez juste besoin de passer à 0
wow, vous économiser de ma journée, merci!!!
OriginalL'auteur Owen
Il semble y avoir un peu problématique possibilités ici:
http://www.spiration.co.uk/post/1231/Your-script-possibly-relies-on-a-session-side-effect
dit que les cas de ce genre:
va déclencher l'alerte.
En outre, je interpréter ce bogue de php contenu: http://bugs.php.net/bug.php?id=41540 à dire que cette erreur peut également se produire lorsque vous affecter une variable à la session superglobale qui n'est pas encore initialisé, par exemple
OriginalL'auteur
C'est de la bonne information sur la recherche de la cause de l'avertissement, mais je vous recommande de ne PAS éteindre les avertissements Owen mentionne. Ces fonctions de runtime sont supprimé depuis PHP 5.4.0 et le développeur doit entrer dans la pratique d'éviter une telle utilisation de variables.
Pour résoudre ce problème, il peut être une douleur sur les développeurs fin, mais si vous avez
renommer la session de
Ou vice-versa aussi longtemps que le nom de la session et le nom de la variable sont différents. Pensez-y de cette façon: lorsque vous mettez à niveau vers la dernière version, vous aurez pour déboguer votre code de toute façon.
OriginalL'auteur Ian
Lorsque vous apportez des modifications à la .htaccess ini_set ne fonctionne pas. Vous aurez besoin de faire ça:
OriginalL'auteur Praveen Kannan
dans mon cas, php.ini changement de on à off
comme ceci :
si ne fonctionne pas, redémarrez apache
OriginalL'auteur TARA