Maison >développement back-end >Problème PHP >Concernant le problème que php ne peut pas obtenir la valeur de session
La solution au problème selon lequel PHP ne peut pas obtenir la valeur de session : créez d'abord un dossier nommé "session_temp" ; puis définissez ses autorisations sur "inscriptible" et enfin redémarrez Apache.
Recommandé : "Tutoriel vidéo PHP"
Aujourd'hui, j'ai écrit un morceau de code et testé le session , mais j'ai constaté que la valeur de session écrite ne pouvait pas être obtenue. Après avoir vérifié pendant un moment, j'ai finalement trouvé le problème :
Mon environnement est windows7+apache2.22+php5.2.17
Code de valeur de session spécifique
page1.php <?php echo "what are you doing now?"; session_start(); $_SESSION['a'] = 'wangzhong'; $_SESSION['b'] = 'liyu'; ?> page2.php <?php echo "I am testing"; session_start(); echo $_SESSION['who'].'<br/>'; echo$_SESSION['hiswife'],'<br/>; ?>
Les pages lues par ces deux sessions de test ont révélé que page2.php n'a pas pu obtenir la valeur enregistrée dans page1.php. Quelle est la raison spécifique ?
J'ai vérifié la configuration de la session dans Apache, les détails sont les suivants :
Session Support | enabled |
Registered save handlers | files user |
Registered serializer handlers | php php_binary wddx |
Directive | Local Value | Master Value |
---|---|---|
session.auto_start | Off | Off |
session.bug_compat_42 | Off | Off |
session.bug_compat_warn | On | On |
session.cache_expire | 180 | 180 |
session.cache_limiter | nocache | nocache |
session.cookie_domain | no value | no value |
session.cookie_httponly | Off | Off |
session.cookie_lifetime | 0 | 0 |
session.cookie_path | / | / |
session.cookie_secure | Off | Off |
session.entropy_file | no value | no value |
session.entropy_length | 0 | 0 |
session.gc_pisor | 1000 | 1000 |
session.gc_maxlifetime | 1440 | 1440 |
session.gc_probability | 1 | 1 |
session.hash_bits_per_character | 5 | 5 |
session.hash_function | 0 | 0 |
session.name | PHPSESSID | PHPSESSID |
session.referer_check | no value | no value |
session.save_handler | files | files |
session.save_path | D:/php/session_temp | D:/php/session_temp |
session.serialize_handler | php | php |
session.use_cookies | On | On |
session.use_only_cookies | Off | Off |
session.use_trans_sid | 0 | 0 |
Ensuite, j'ai trouvé que la session est entièrement ouverte, la session I a vérifié le chemin de sauvegarde et a constaté que le répertoire session_temp n'était pas trouvé dans le répertoire php. Cela peut être un problème ici. J'ai essayé de créer un dossier avec le même nom et de le rendre accessible en écriture. Ensuite, j'ai redémarré Apache et je l'ai testé à nouveau. . Cette fois, j'ai trouvé que la valeur de la session peut être lue.
Vraiment, ce simple petit problème doit aussi être soigneusement étudié. Je trouve que j'ai été un peu impétueux ces derniers temps.
Il n'y a pas de problème s'il y a htmldom avant la méthode session_start(), et cela n'affectera pas la lecture de la valeur de session. De même, s'il y a une instruction de sortie echo avant la méthode session_start(), cela n'affectera pas la lecture de la valeur de session. n'affectera pas la lecture de la valeur de la session.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!