effacer les fichier de session...

Mammouth du PHP | 843 Messages

19 févr. 2007, 23:18

pour le problème évoqué dans le message precedant j'ai fait fileperms() sur le fichier à éffacer pour voir les droits et cela me renvoi 32206.

J'ai donc essayer ceci:
   // on definit l'ancien id de session
   $old_session_id = session_id();
   // on definit l'ancien nom de fichier de session
   $old_session_filename = "sess_$old_session_id";
   // on remplace l'identifiant de session courant par un nouveau à chaque action
   session_regenerate_id();
   // on supprime l'ancien fichier de session devenu obselete
   $dossier_session = opendir(session_save_path());
   $slash = ($_SERVER['SERVER_ADDR'] == '127.0.0.1') ? '' : '/'; // on definit le slash que pour version en ligne
   chown(session_save_path().$slash.$old_session_filename, 'root');
   chgrp(session_save_path().$slash.$old_session_filename, 'root');
   chmod(session_save_path().$slash.$old_session_filename, '0777');
   echo fileperms(session_save_path().$slash.$old_session_filename);
   echo '<br />';
   unlink(session_save_path().$slash.$old_session_filename);
   closedir($dossier_session);
   clearstatcache();
mais le fileperms() me renvoi toujours la même chose (33206) :?

Est ce que quelqu'un sait comment je pourrai faire pour avoir cette permission d'effacer le fichier?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
ViPHP | 1961 Messages

19 févr. 2007, 23:37

Bonsoir,

Le fichier ne t'apparient pas, donc tu ne peut changer ses droits.
quand tu fais un chamod() ou autre, teste la valeur de retour et tu verras qu'il est false.
if(!chmod(session_save_path().$slash.$old_session_filename, '0777')){
  echo 'Le changement des droits à échoué';
  exit();
}
EDIT :

Regarde les droits, propriétaire et groupe du dossier 'sessions'
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 843 Messages

19 févr. 2007, 23:52

mais pourtant sur mon winXP que j'utilise pour test en local via easyphp, je suis sous une session administrateur et j'ai tout les droits :?

je comprend pas pourquoi la permission m'est refusé :-k

si quelqu'un à une idée ;)

PS: comment fait on pour afficher les droits d'un dossier?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 684 Messages

20 févr. 2007, 11:36

Sous Windows les droits d'un dossier, hum.... Ca existe ?
Je dirais clic droit et proprietes mais c'est peut etre trop simple.
Zigz4g

Mammouth du PHP | 843 Messages

20 févr. 2007, 13:28

je commence à croire que ce n'est pas de windows que vient le problème mais plutot de la config d'apache par easyphp :-k

Si quelqu'un connait un paramètre d'apache sur la gestion des droits de fichier, merci d'avance pour le retour d'information ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 684 Messages

20 févr. 2007, 14:53

User apache
Group apache
Sous Linux je peut mettre ces directives.

EDIT: De toute facon si je comprend bien ton site est sous Linux.
Une moulinette pour faire le menage peut etre suffisant. Pour Windows, c'est une machine de dev, tu fais le nettoyage a la main.
Zigz4g

Mammouth du PHP | 843 Messages

20 févr. 2007, 20:20

Je sais que je peut faire le menage à la main mais j'aimerai mieux faire en sorte que tout fonctionne de la même façon en local comme en ligne afin de facilité le deboguage, ne pas avoir à commenter certaines lignes en local pour passer outre les message d'erreur...

Pour en revenir au problème de permission, j'ai trouvé ceci dans le httpd.conf :

Code : Tout sélectionner

# # Each directory to which Apache has access, can be configured with respect # to which services and features are allowed and/or disabled in that # directory (and its subdirectories). # # First, we configure the "default" to be a very restrictive set of # permissions. # <Directory /> Options FollowSymLinks Indexes AllowOverride All </Directory>
il n'y aurai pas quelque chose à faire de ce coté ?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 843 Messages

20 févr. 2007, 21:25

je me souvenais plus qu'il y avait un forum sur easyphp :oops:
je pense que je trouverai ma reponse de ce coté...

Merci à tous pour votre patience et vos conseils ;)

je ferme le sujet qui commencait à s'égarer d'ailleur...
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
ViPHP | 1380 Messages

20 févr. 2007, 22:46

Pourquoi ne pas laisser faire le Garbage Collection du serveur?

session.gc_divisor
session.gc_probability
http://be2.php.net/manual/fr/ref.sessio ... robability

Un session_destroy() ne fait que marquer le fichier pour un effacement. Il ne sera effacé que quand le GC l'aura décidé!

Mais attention, lire également ceci:
http://www.phpfrance.com/forums/voir_re ... .php#98462
ripat

Mammouth du PHP | 843 Messages

21 févr. 2007, 16:27

Merci ripat pour ces bons conseils ;)

j'ai essayé de mon coté en local via easyphp via un rapport 100% mais rien à faire :?

le problème doit etre le même que pour mon unlink qui passai pas. GC n'a pas la permission de supprimer à mon avis. Je rgarde du coté du forum d'easyphp mais je commence à douté :(

par contre sur mon hebergeur, le rapport est de 1/1000 :shock:
je suis en train de voir avc eux pour édité cela et voir aussi si le UID d'apache/php à les droits nessecaire...

Je vous tient au courant ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 843 Messages

22 févr. 2007, 23:43

Ok me revoilou :)

j'ai fini par résoudre ce problème de GC qui ne s'executait pas =D>

sous winXP via easyphp, c'était une grosse erreur de parametrage du php.ini.
Pour definir automatiquement les bons chemins de ce dernier en fonction du chemin d'installation de celui-ci, ${path} est utilisé mais vous remarquerez que celui-ci est suivit d'un / qui ne devrait pas y être...

Coté server, par chance il mon averti il y a un mois environ que certain paramètre du php.ini était désormais personnalisable et session.gc_probability et session.gc_divisor en font partie...
Sacrée coup de bol :langue:

j'ai donc maintenant mes fichiers de session qui s'efface bien automatiquement.

BeRoots, trop heureux!!! :D
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non: