IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sessions et Cgi


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut Sessions et Cgi
    Bonjour,

    Dans le cadre d'un projet web pour la licence informatique, nous devons réalisé un site d'annonce en ligne en php5 avec notament la possibilité de s'authentifier (utilisation des sessions) mais également d'uploader des images (donc besoin du droit d'écriture, et pour cela le professeur souhaite que notre contrôleur .php soit transformé en .cgi afin qu'il puisse avoir les droits du propriétaire pour écrire l'image uploadée dans un répertoire).

    Les deux choses implémentées de manière séparée fonctionne :

    1) Nous avons fait tout notre site avec des <?php session_start().... où aucun espace n'est envoyé au navigateur pour éviter toute erreur avec les headers. Pas de problème, ça marche.

    2) Le script d'upload des fichiers fonctionne, mais pour le tester, nous avons dabord mis les droits d'écriture sur un répertoire pour pas s'embêter tout de suite avec les cgi.

    3) On avait fait un tp auparavant où on a réalisé un système d'upload avec cgi et sans session et idem, ça fonctionnait.

    Et voilà, qu'on décide de passer le contrôleur en .cgi
    On ajoute en première ligne du fichier le #!/usr/lib/cgi-bin/php5
    On ajoute le droit d'éxécuter par chmod 755
    On ne fait pas de dos2unix, car on travaille sur unix de toute façon.

    Après tout ça, les sessions ne fonctionnent plus. L'erreur indiqué, je pourrais vous la dire plus précisément demain (lorsque je retournerais à la fac) mais il me semble que c'était une erreur avec les headers. J'ai pensé que la première ligne #!/usr/lib/cgi-bin/php5 devait poser problème pour le session_start mais pour le prof, ça n'est pas ça le problème, pour lui cela devrait très bien fonctionner.

    quelqu'un serait-il au courant d'une quelconque précaution supplémentaire à prendre lorsqu"on passe du php au cgi, ou bien d'une erreur qu'on aurait pu faire que le php nous a pardonné mais que le cgi ne pardonne généralement pas...
    J'essaierais toutes les manoeuvres qu'on me proposera demain. Sauf modif de la config du php.ini du cgi dont je ne suis pas le propriétaire.

    Merci d'avance !

  2. #2
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut
    Pour + de précisions :
    Voilà mon erreur :

    Warning: session_start() [function.session-start]: open(/var/lib/php5/sess_fa7f71a06bd661a9b024b33e6d2794a4, O_RDWR) failed: Permission denied (13) in /users/etu/2007/l3/jsmit/public_html/devoirWeb/inscrit/index.cgi on line 22

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/etu/2007/l3/jsmit/public_html/devoirWeb/inscrit/index.cgi:22) in /users/etu/2007/l3/jsmit/public_html/devoirWeb/inscrit/index.cgi on line 22


    Et voilà le début de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    #!/usr/lib/cgi-bin/php5
    <?php 
     
    /* ZONE INSCRIT */
    /* ###################### INCLUSION DES FICHIERS ###################### */
    require_once("../config/config.php");
    require_once("../outils/fonctions.php");
    require_once("../outils/autoload.php");
     
     
    /* ###################### INITIALISATION DES VARIABLES ###################### */
    // variables de contenu 
    $titre = "";
    $contenu = "";
    // variables dépendant de la zone
    $menuDroit = "../ui/templates/menuAbonne.frg.html";
    $squelette = "../ui/affiche.html.php";
    $zone="inscrit";
     
    /* ###################  RÉINITIALISATION DE LA SESSION #################### */
    session_name("jsmit");
    session_start();
    .........
    La réponse de notre prof à ce problème :
    le session_start doit être placé avant tout envoi de contenu, mais il
    peut y avoir 1000 lignes de code avant !

    En tout cas en ce qui concerne les CGI, la première ligne d'un cgi est
    celle qui permet de dire quel exécutable utiliser, donc ce n'est pas du
    contenu envoyé au navigateur ! Par contre il faut que le PHP commence à
    la ligne immédiatement après :
    #!/usr/lib/cgi-bin/php5
    <?php
    require(......);
    session_start();


    Si ça ne marche pas le pb est ailleurs. Votre fichier est bien en
    extension .cgi au moins ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut
    Problème résolu. Il s'agissait d'un conflit entre les sessions crées par www-data (par php) et celles crées par cgi. L'une n'ayant pas les droits pour lire les sessions crées par l'autre. Il faut donc que tous vos contrôleurs soient en cgi ou tous en php, bien effacer les cookies et les informations de session, tester le log.. Bref, une suite de manoeuvre allant dans ce sens.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Creer une session en CGI
    Par link66 dans le forum C
    Réponses: 4
    Dernier message: 10/12/2010, 09h40
  2. Session Perl/CGI avec MySQL
    Par LiNuXaDDiKt dans le forum Web
    Réponses: 3
    Dernier message: 18/02/2008, 07h24
  3. [session cgi] problème d'expiration de session
    Par LE NEINDRE dans le forum Web
    Réponses: 2
    Dernier message: 15/05/2006, 20h50
  4. [installation de modules]CGI::Session
    Par bakonu dans le forum Web
    Réponses: 5
    Dernier message: 05/10/2005, 15h54
  5. Module CGI::Session
    Par dclink dans le forum Modules
    Réponses: 2
    Dernier message: 02/02/2004, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo