[RESOLU] $_SESSION est-il supporté par la dernière versionnde PHP, 7.5 ? Je buggue !!!

Eléphanteau du PHP | 42 Messages

26 août 2017, 14:34

Bonjour à tous,
après de nombreuses années de fonctionnement le passage de mon hébergeur à la dernière version de PHP 7.5, semble ne plus fonctionner.
j'utilise :
session_cache_limiter('private');
session_start();
$MotDePasse = $_SESSION["MotDePasse"];
dans les deux premiers programmes après initialisation, je tente de récupérer $MotDePasse ça fonctionne puis TERMINE finito la comedia !!!

Pouvez-vous m'aider ?
merci d'avance, j'ai ça dans plus de 300 programmes...
A bientôt, comme d'habitude....

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7420 Messages

26 août 2017, 19:15

La dernière version de PHP (stable) est la 7.1.8, visible en haut à droite de la page : http://php.net/
La version 7.5 n'existe pas.

Regarde dans les logs d'erreur de ton serveur pour voir si il n'y aurait pas un message d'erreur.
Si tu ne sait pas où est situé le fichier de log, fait un phpinfo() et ça sera indiqué ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 42 Messages

27 août 2017, 15:03

Bonjour Arthur,
OK pour la Version.

Par ailleurs, Je n'ai pas d'erreur. Pour les tests j'ai limité aux instructions ci-dessus, plus l'affichage du contenu de la variable "$MotDePasse".
Les deux premiers programmes ont bien accès à cette variable issue de la SESSION, puis brusquement avec les mêmes instructions : la variable est vide !

Je ne comprends pas !!!
merci de tes idées.
Cordialement

Eléphanteau du PHP | 42 Messages

27 août 2017, 17:44

Suite de ma réponse:
qu'est-ce qui peut mettre une variable de Session à blanc ?
Merci encore

Eléphanteau du PHP | 42 Messages

28 août 2017, 14:13

Suite de mes recherches, vaines...
Il semble voir https://stackoverflow.com/questions/345 ... s-in-php-7 qu'il y ait des pbs entre certaines version de Apach et PHP 7.0 qui en fait est le niveau de mon hébergeur.
Est-ce que ça vous cause ???
Merci d'avance

Eléphanteau du PHP | 42 Messages

29 août 2017, 14:03

Aide urgente espérée..Certains programmes récupèrent bien la valeur contenue dans une variable de SESSION, d'autres pas. Je ne sais pas pourquoi !
Pour aider j'ai construit les Test 1 à partir d'un programme qui fonctionne et je l'ai simplifié au maximum.
Le MotDePasse est créé à partir d'un programme en html par POST.
Test 1
<?php
// transfert des données initiales
session_cache_limiter('private');
session_start();
header('Content-Type: text/html; charset=iso-8859-1');
$MotDePasse = $_SESSION["MotDePasse"];
echo ("<p align=center><font size=2 face='Verdana, Arial, Helvetica, sans-serif'color='$CouleurTexte'>
<br><br><b>Test 1<br>
Mot de Passe = $MotDePasse");
exit;
?>
ça marche.
Ensuite je lance Test 2
<?php
// transfert des données initiales
session_cache_limiter('private');
session_start();
header('Content-Type: text/html; charset=iso-8859-1');
$MotDePasse = $_SESSION["MotDePasse"];
echo ("<p align=center><font size=2 face='Verdana, Arial, Helvetica, sans-serif'color='$CouleurTexte'>
<br><br><b>Test 2: <br>
Mot de Passe = $MotDePasse ");
exit;
?>
qui est une copie du précédent et qui ne marche pas !!!

Vous avez une idée de recherche ?
PS: aucun message système.
je ne sais plu quoi envisager !!!
je compte sur vos idées,
merci de votre aide

Eléphanteau du PHP | 41 Messages

29 août 2017, 15:43

Hello. Par défaut l'id de session vivra dans un cookie, il faut comprendre qu'un cookie n'est qu'une entête http de plus. Donc s'il y a quelque chose en sortie avant <?php pouvant être uniquement un blanc tel qu'un espace ou 1 retour à la ligne ou encore si le script a été sauvegardé avec BOM, etc... alors l'entête http de réponse sera envoyée au navigateur (sauf s'il y a configuration contraire) avant même d'arriver à la ligne session_start(); Donc aucune récupération de l'id de session et donc aucune récupération du fichier/enregistrement liée à cet id où vivent les variables de session. Ce qui expliquerait la différence de comportement entre TEST1 et TEST2 s'ils ont été fait avec le même navigateur sur le même serveur. La différence de comportement entre PHP5 et PHP7 viendrait à mon avis d'une configuration différente sur output_buffering

Eléphanteau du PHP | 42 Messages

29 août 2017, 17:54

Bonjour Tesmet,
je ne comprends pas tout ce que tu sous-entends (je ne suis ps un pro simple amateur) mais je pense que c'est une voie de recherche intéressante.
Par contre je ne sais pas ce que je peux faire.
Est-ce que je maîtrise "output_buffering" sachant que mon hébergeur st un gros site US et si oui que faire et comment ?

Ton idée de cookie me fait me rappeler que par le passé de temps en temps un programme ne fonctionnait plus et que pour qu'il "remarche" je devais nettoyer tous les cookies et fichiers temporaires et recharger une nouvelle version.
Est-ce que cela te parait aller dans le même sens ou est-ce faux ?
Merci de ton aide, car je suis complètement bloqué !!!

Eléphanteau du PHP | 41 Messages

29 août 2017, 18:33

Oui, ça m'apparait être le plus probable selon les explications données et les comportements observés.

output_buffering est une configuration possible dans "php.ini" sachant que par défaut il est désactivé. On peut faire un appel phpinfo() dans un script et regarder dans la section "core" ou encore var_dump(ini_get('output_buffering'));

S'il est désactivé (off ou vide) alors il faudra donc regarder les possibilités de configuration de ton hébergeur.

Eléphanteau du PHP | 42 Messages

30 août 2017, 08:06

Bonjour Tesmet,
j'ai l'impression qu'on approche du but !
Dans hpp.init il y a "OFF".

Je peux demander à mon hébergeur de mettre la valeur que je souhaite. Que faut-il mettre selon toi ?
Merci de ton aide salvatrice...

Eléphanteau du PHP | 42 Messages

30 août 2017, 14:17

Hello Tesmet,
you are the best !!!
J'ai fait mettre OUTPUT_BUFFERING ON et... TOUT marche !

Encore un grand merci pour ton aide ainsi que celle d'Arthur.
Sans ce Forum on ne pourrait rien faire.
Super