Version complète: sur le forum Webmaster Hub : problème avec include
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Bourinho
Bonjour à tous,

J'utilise actuellement EasyPHP 1.8 et j'ai quelques soucis avec un certains type d'include...

Dans mon dossier "MonSite" placé dans le dossier "www" de EasyPHP, j'ai un dossier "hidden" qui contient lui même un dossier "design" (ça donne MonSite/hidden/design)

J'ai un fichier "presentation.php" dans "design" dans lequel je souhaitrais inclure "parametres.php" qui lui est placé dans le dossier "hidden".

J'ai tenté le code suivant
CODE
include('../parametres.php');


et sur ma page, je lis:
Warning: main(../parametres.php): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\monsite\hidden\design\presentation.php on line 2

J'ai essayé avec un backslash , avec un seul point...et là, je n'ai plus trop d'imagination tongue.gif

Il est où le problème? je sais, vers la ligne 2... whistling.gif
Mais comment résoudre ce problème?

Par avance, merci!
Dan
Bonjour,

Ta syntaxe est correcte. Je ne vois qu'une erreur possible dans le nom de fichier parce qu'un include d'un fichier se trouvant à l'échelon supérieur se fait toujours comme ceci: include("../fichier.php");

N'as-tu pas nommé ce fichier "paramètres" ou "parameters" par hasard ? ?

Dan
Bourinho
Salut Dan,

J'ai bien vérifié les noms... et c'est visiblement les bons... wacko.gif

Par contre, j'ai l'impression que le message d'erreur prend en fait plusieurs lignes (je n'avais regardé que la première blush.gif )

Le voici en version complète :
Warning: main(../parametres.php): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\monsite\hidden\design\presentation.php on line 2

Warning: main(): Failed opening '../parametres.php' for inclusion (include_path='.;C:/Program Files/EasyPHP1-8\php\pear\') in c:\program files\easyphp1-8\www\monsite\hidden\design\presentation.php on line 2


Je vais devenir cinglé!

[Edit]En fait, quand je vais sur la page "presentation.php", y a pas de soucis... mais quand je souhaite l'inclure, le message d'erreur ci dessus apparait...Bizarre, non?[/Edit]
Dan
As-tu défini des VirtualHost sous easyphp ? Je te pose la question parce que nombre d'utilisateurs de easyphp ne le font pas...

Que donne la variable $_SERVER['DOCUMENT_ROOT'] ?

Dan
Bourinho
Merci de m'aider...

quand, depuis la racine de mon site, je fais
CODE
echo $_SERVER['DOCUMENT_ROOT']


J'obtiens :c:/program files/easyphp1-8/www (le résultat est le même si je pars de "hidden/design")

C'est ce qu'il faut?
Bourinho
Salut à tous,

Personne n'a eu ce type de problème auparavant??? Parce que là, c'est un petit peu génant...

En fait, je pourrais faire un include('http://.../parametres.php') mais le truc c'est que j'utilise une fonction includesec (pour éviter les inclusions dangereuses...) definie comme suit :
CODE
function includesec($Chaine)
{//Pour verifier les include...
    if (preg_match('!http|ftp!',$Chaine)) //pour ftp, je ne suis pas sur...
    {
        return false;
    }
    else
    {
        include($Chaine);
        return true;
    }
}

Alors, pour le coup, ça fout tout en l'air...

C'est quoi des VirtualHost??? A mon avis, je n'en ai pas défini car je ne sais même pas de quoi il s'agit... sad.gif
captain_torche
Tu pourrais lister les fichiers et dossiers que tu trouves avec la directive "../" ?
CODE
<?php
$dir = '../';
$handle = opendir($dir);
while($data = readdir($handle)) {
echo $data.'<br>';
}
closedir($handle);
?>


Si tout se passe normalement (et si j'ai bien compris le souci), tu devrais avoir quelque chose du genre :
CITATION
.
..
design
Bourinho
Salut,

Voilà ce qui s'affiche (parmi d'autres dossiers et fichiers...):
.
..

design
parametres.php

Donc, à priori, ça doit être OK...c'est quand même bizarre ce truc... En fait, ce qui m'étonne le plus, c'est que quand je charge la page presentation.php (qui est dans le dossier design), il n'y pas de message d'erreur... (comme quoi l'orthographe du fichier est OK, que le chemin est bon aussi...)

et quand je souhaite l'inclure, c'est là que les ennuis commencent!

Merci pour votre aide...
Bourinho
Salut,

Dans mon message précédent, j'ai indiqué :
CITATION
Voilà ce qui s'affiche (parmi d'autres dossiers et fichiers...):
.
..
design
parametres.php


Mais ça, c'est ce qui s'affiche lorsque je charge "presentation.php" qui fonctionne... par contre, je viens de charger la page "index.php" qui fait un
CODE
include('hidden/design/presentation.php')


Et là, ça donne :
.
..
MonSite


alors, j'ai l'impression que le
CODE
include('../parametres.php')
présent dans 'hidden/design/presentation.php' se fait à partir de là où se trouve 'index.php', c'est à dire la racine du site...

J'ai l'impression qu'il faut que je spécifie le dossier hidden/design dans le include_path... Bonne piste?

Merci captain_torche d'avoir trouvé la bonne piste...j'ai tout simplement dérapé en l'utilisant! Merci aux autres aussi... on y est presque là je crois!!!
captain_torche
Bah non, ça a l'air normal (si ta page index se trouve dans monSite, et que ce répertoire contient hidden/design).
Par contre, je crois comprendre :
Tu fais une tentative d'include de parametres.php depuis presentation.php, elle-même incluse dans index.php (c'est bien ça ?)
Dans ce cas, il faut que les chemins d'inclusions soient relatifs à index.php.
Bourinho
Salut,

En effet, c'est exactement ça...

Il faut donc que les chemins d'inclusions soient relatifs à 'index.php'... bon, bah je viens d'apprendre un truc là... C'est quand même pas très pratique cette affaire car on ne peut pas inclure 'presentation.php' depuis n'importe quel dossier... à moins de mettre une variable avant l'inclusion qui définit de combien de dossier on doit redescendre...

Sinon, ma fonction 'includesec' définie un peu plus haut permet d'être tranquille ou alors elle est incomplète?

Bon, bah merci à tous pour votre coup de main!!!
Anonymus
Tu devrais rajouter le chemin complet vers le dossier en question
Ca te permettrait de savoir exactement où tu en es.
Exemple :
echo $_SERVER['DOCUMENT_ROOT']."/chemin_absolu/autre_repertoire/index.php";

et donc :
include($_SERVER['DOCUMENT_ROOT']."/chemin_absolu/autre_repertoire/index.php");
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.