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 :

erreur failed to open stream


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut erreur failed to open stream
    Bonjour,

    J'essaie, à partir d'un script, d'afficher une interface de manière conditionnelle : pour cela, je fais appel à une fonction membre de l'objet instancié.

    Voici le code incriminé dans mon script initial :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $patient->affDossier();
    Voici le code de la fonction appelée (fichier de classes situé dans un autre répertoire) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function affDossier()
       {
        $tab[0] = $this->id;
        $transaction = CtransactionsBdd::GetInstance("MYSQL", "neuropsy");
        $resuReq = $transaction->select("MYSQL_dossPat", $tab);
     
        if($transaction->getErreur() == "Aucun résultat")// Le patient n'a pas encore d'événement de créé => proposer créer un événement
          include_once("../interfaces/interface.php?titre=Choix de prise en charge&fichier=../fichiersInclusion/creatEve.inc");
        else
          include_once("../interfaces/interface.php?titre=Dossier&fichier=../fichiersInclusion/dossier.inc");  // Le patient a au moins un événement => afficher le dossier
       }

    Or, j'obtiens l'erreur suivante :

    Warning: CPatient::include_once(../interfaces/interface.php?titre=Dossier&fichier=../fichiersInclusion/dossier.inc) [function.CPatient-include-once]: failed to open stream: Invalid argument in C:\wamp\www\psy\fichiersInclusion\classes.php on line 413

    Warning: CPatient::include_once() [function.include]: Failed opening '../interfaces/interface.php?titre=Dossier&fichier=../fichiersInclusion/dossier.inc' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\psy\fichiersInclusion\classes.php on line 413
    La structure de mes répertoires est la suivante :

    fichiersInclusion -> fichier de classes
    images
    interfaces -> interfaces appelées
    transferts -> scripts

    Quelq'un aurait un idée quant à la source du problème?

    Merci d'avance.

    Christophe

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Bonjour,

    Vérifie le chemin de tes fichiers. Dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    include_once("../interfaces/interface.php?titre=Dossier&fichier=../fichiersInclusion/dossier.inc");
    il faut savoir que contrairement au comportement normal des includes, interface.php est ici d'abord exécuté, avant d'être inclus. Le problème vient peut être de là. Est-ce que le chemin de dossier.inc est correct par rapport à interface.php ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Bonjour et merci pour ton intérêt...

    Le chemin de dossier.inc est bien correct par rapport à interface.php.

    Ce qui me semble étrange, c'est qu'ailleurs dans ma classe CInterface qui gère mes interfaces, j'utilise la même technique pour créer mes liens dans le menu, et que là tout se déroule correctement. La seule différence est, qu'e là, je n'utilise pas include.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href='../interfaces/interface.php?popup=1&titre=" . $tabSousMenu[$cpt] . "&fichier=../fichiersInclusion/" . $liensSousMenu[$cpt]. "&sousMenu=" . $this->typeSousMenu . "'>" . $tabSousMenu[$cpt] . "</a>

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Pfff
    J'avais pas fait attention.
    Tu ne peux pas utiliser des arguments avec include de cette façon.
    La seule façon d'utiliser des arguments avec include est d'utiliser un url:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('http://www.example.com?test=true');
    mais cela implique que :
    - URL fopen wrappers est à On (il l'est par défaut)
    - le script appelé est d'abord exécuté avant que le résultat ne soit inclus, donc, contrairement à un include normal, les chemins doivent se faire par rapport au script inclus.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Bonjour et merci pour ton intérêt...

    Le chemin de dossier.inc est bien correct par rapport à interface.php.

    Ce qui me semble étrange, c'est qu'ailleurs dans ma classe CInterface qui gère mes interfaces, j'utilise la même technique pour créer mes liens dans le menu, et que là tout se déroule correctement. La seule différence est, qu'e là, je n'utilise pas include.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href='../interfaces/interface.php?popup=1&titre=" . $tabSousMenu[$cpt] . "&fichier=../fichiersInclusion/" . $liensSousMenu[$cpt]. "&sousMenu=" . $this->typeSousMenu . "'>" . $tabSousMenu[$cpt] . "</a>

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Est-ce normal que ton message revienne deux fois ?
    Sinon, comme je l'ai indiqué, utilise un url complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('http://www.example.com?blah=blah&file=blah.php')

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Bonjour et désolé pour la mauvaise manoeuvre (message double)...

    J'ai résolu mon problème de la façon suivante : comme je fais un "include", le code généré alors a toujours accès aux variables préalablement déclarées. Donc, il m'a suffit de déclarer et d'initialiser ces variables dans la fonction de ma classe et de les utiliser dans le code généré par l'include (interface.php).

    Voici le code dans mon script appelant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $patient->affDossier();
    Celui de ma fonction membre :

    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
    public function affDossier()
       {
        $tab[0] = $this->id;
        $transaction = CtransactionsBdd::GetInstance("MYSQL", "neuropsy");
        $resuReq = $transaction->select("MYSQL_dossPat", $tab);
     
        if($transaction->getErreur() == "Aucun résultat")// Le patient n'a pas encore d'événement de créé => proposer créer un événement
          {
    	   $titrePasse = "Choix de prise en charge";
    	   $fichierPasse = "../fichiersInclusion/creatEve.inc";
    	   include_once("../interfaces/interface.php");
    	   //include_once("../interfaces/interface.php?titre=Choix de prise en charge&fichier=../fichiersInclusion/creatEve.inc");
    	  }
        else
          {
    	   $titrePasse = "Dossier";
    	   $fichierPasse = "../fichiersInclusion/dossier.inc";
    	   include_once("../interfaces/interface.php");
    	   //include_once("../interfaces/interface.php?titre=Dossier&fichier=../fichiersInclusion/dossier.inc");  // Le patient a au moins un événement => afficher le dossier
    	  }
       }
    Et une partie de celui généré par l'"include" :

    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
    include_once("../fichiersInclusion/classes.php");
     
    $popup = 0;
    $typeSousMenu = "";
     
    if(!empty($_GET['titre']))    					 //utilisé pour les href (menu des interfaces)
     $titre = $_GET['titre'];
    elseif(!empty ($titrePasse))  					 //utilisé pour les include
     $titre = $titrePasse;
    else
     $titre = "Accueil";          					 //par défaut
     
    if(!empty($_GET['fichier']))  					 //utilisé pour les href (menu des interfaces)
     $fichier = $_GET['fichier'];
    elseif (!empty($fichierPasse))                   //utilisé pour les include
     $fichier = $fichierPasse;
    else
     $fichier = "../fichiersInclusion/accueil.inc";  //par défaut
    Encore merci pour ton aide et bonne journée.

    Christophe

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

Discussions similaires

  1. Erreur : require_once (failed to open stream)
    Par Amon dans le forum Langage
    Réponses: 2
    Dernier message: 13/10/2009, 13h56
  2. [MySQL] Erreur "failed to open stream" > suite requête MySQL via l'URL
    Par buenaventura dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/01/2009, 15h35
  3. Réponses: 4
    Dernier message: 29/12/2005, 19h35
  4. [FTP] Erreur "failed to open stream"
    Par Nefret dans le forum Langage
    Réponses: 2
    Dernier message: 04/11/2005, 19h53

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