Aller au contenu

problème avec include


Sujets conseillés

Posté

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

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 :P

Il est où le problème? je sais, vers la ligne 2... :whistling:

Mais comment résoudre ce problème?

Par avance, merci!

Posté

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

Posté (modifié)

Salut Dan,

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

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: )

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]

Modifié par Bourinho
Posté

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

Posté (modifié)

Merci de m'aider...

quand, depuis la racine de mon site, je fais

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?

Modifié par Bourinho
Posté (modifié)

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 :

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... :(

Modifié par Bourinho
Posté

Tu pourrais lister les fichiers et dossiers que tu trouves avec la directive "../" ?

<?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 :

.

..

design

Posté (modifié)

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...

Modifié par Bourinho
Posté

Salut,

Dans mon message précédent, j'ai indiqué :

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

include('hidden/design/presentation.php')

Et là, ça donne :

.

..

MonSite

alors, j'ai l'impression que le

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!!!

Posté

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.

Posté

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!!!

Posté

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");

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...