8791 sujets

Développement web côté serveur, CMS

Pages :
Comme le précise le tuto des includes (http://css.alsacreations.com/Tutoriels-PHP/Inclure-un-fichier-dans-un-autre-grace-a-PHP), il est de bon ton d'utiliser des adresses absolues et non relatives.

Mon problème est le suivant :

Je développe en local avec easyphp et je cherche à faire des includes de certains fichiers (bibliothèque, tetiere, pied de page etc...), seulement lorsque je suis à la racine de mon site dans une bête page index.php et que je vais mon include de cette façon :
<?php include('/html_include/tetiere.htm'); ?>
, j'ai cette belle erreur :
Warning: main(/html_include/tetiere.htm): failed to open stream: No such file or directory in d:\easyphp1-8\www\index.php on line 10

Warning: main(): Failed opening '/html_include/tetiere.htm' for inclusion (include_path='.;d:/EasyPHP1-8\php\pear\') in d:\easyphp1-8\www\index.php on line 10[code]

le dossier html_include se trouvant au même endroit que index.php (à la racine quoi...)

lorsque je passe mes fichiers en ligne, les chemins absolus sont reconnus sans aucun soucis (ce qui me semble super logique d'ailleurs !! c'est plutôt la logique d'easyphp qui m'échappe...)

J'ai essayé plusieurs solutions, créer des alias avec apache, mettre tout mon site dans le dossier www d'easyphp, j'ai toujours le même problème...

A noter tout de même que lorsque j'inclus ma css avec le chemin absolu dans mon html, ça passe Smiley rolleyes .

Est-ce une mauvaise config d'apache ? (je n'ai rien bidouillé à ce niveau si ce n'est créer un alias...)

Est-ce que quelqu'un a une idée ?

NB: je refuse de faire des includes de ce type : http://localhost/monsite/html_include , car pas envie de me prendre la tête avec ça au moment des mises en ligne et surtout on perdrait de l'intérêt de faire des includes avec des chemins absolus...

Merci d'avance pour votre aide Smiley smile
Modifié par daftdef (04 Jul 2007 - 20:43)
Bonjour,

J'ai une petite question stupide : tu as bien sûr enregistré tes fichiers dans le dossier racine d'Easyphp, n'est-ce pas ?!?
Car sinon, effectivement, il ne risque pas de trouver tes fichiers !

nota : le dossier racine d'Easyphp est indiqué dans ton message d'erreur, à savoir d:\easyphp1-8\www\.
Modifié par Cygnus (04 Jul 2007 - 10:01)
question pas stupide, mais :

a écrit :
J'ai essayé plusieurs solutions, créer des alias avec apache, mettre tout mon site dans le dossier www d'easyphp, j'ai toujours le même problème...


La réponse est donc oui Smiley smile

les includes sont effectués dans le fichier index.php qui se trouve dans le dossier www. Les fichiers à includer se trouvent dans un sous dossier html_include qui se trouve lui aussi dans le dossier www.
je pense avoir trouvé d'où vient le problème et il s'avère que c'est bien apache.

Il faudrait que je déclare mon site en tant que virtual host (un alias ne sert à rien dans ce cas présent) pour que ça marche.

Je n'ai pas encore eu l'occasion de tester, mais je vais faire ça ce soir et revenir mettre la solution ici (si ça fonctionne bien sûr Smiley cligne )

bref easyphp c'est bien, mais apparement, ça a ses limites pour un cas on ne peut plus banal il me semble (surtout si on veut faire les choses proprement...)
Oups...
J'avais zappé cette ligne. Smiley sweatdrop

Enfin, l'essentiel c'est que ça marche ! Smiley cligne
Un petit [Résolu] pour fêter ça ? Smiley murf
Pas encore testé, mais je n'y manquerai pas si le problème a été résolu ,) (<- oui c'est un smiley borgne... Smiley smile )
bon là je sèche...

J'ai rajouté ces lignes dans mon httpd.conf :


NameVirtualHost *

<VirtualHost *>
     ServerName  http://127.0.0.1/monsite/
 
    DocumentRoot D:/EasyPHP1-8/www/monsite/
</VirtualHost>


j'essaye d'accéder à mon site via cette adresse dans mon navigateur :
http://127.0.0.1/monsite/

mais il me sort une erreur 404.

et quand j'essaye d'y accéder avec http://127.0.0.1/, le site apparait bien mais avec des erreurs d'include
Smiley ohwell
Bonsoir,

Si tu n'y arrive vraiment pas, essayes WAMP5 (c'est ce que j'ai installé sur un serveur dans ma boite, en créant deux alias, ça roule niquel pour l'accès en local et externe)
Bon en fait j'y suis arrivé.

Deux choses : le problème ne venait pas d'apache, le problème ne venait pas vraiment d'easyphp.

Bon les mauvaises langues diront que le problème venait de moi... En un sens c'est un peu vrai.

Le problème est que php ne prend pas en considération la conf apache... Je pouvais donc toujours m'escrimer à faire comprendre à php où aller chercher la racine, il ne voyait rien...

La réponse se trouve tout simplement dans ce petit bout de code à rajouter devant tous mes chemins d'include :

$_SERVER['DOCUMENT_ROOT']

...

C'est idiot, ça règle mon problème, et j'ai vraiment honte de ne pas avoir trouvé ça plus tôt... enfin bon, problème résolu ^^
Il y a une configuration d'apache derrière, normalement, tu n'as pas à utilisé cette commande d'apache, mais enfin, si ça règle ton problème, tant mieux Smiley cligne
super_baloo : de quelle commande d'apache parles-tu ? as-tu confondu avec php (et $_SERVER['DOCUMENT_ROOT']) ?

Mais de toute façon, ne vaut-il pas mieux utiliser la solution php plutôt que celle d'apache ?
Pardon, il faut utiliser dans la plupart des cas, les SuperGlobales lorsqu'on en a besoin, dans ton cas, pour les includes, tu n'en as pas besoin, c'est un réglages au niveau d'apache, au niveau de ton http.conf
Modifié par Super_baloo8 (04 Jul 2007 - 21:44)
saurais-tu me donner cette fameuse conf si tu t'en souviens ?
Je suis loin d'être un pro d'apache (c'est un tort je l'admet !!), mais en même temps, j'ai écumé les forums pendant 2 soirées sans réellement trouver de solutions à mon problème... Smiley decu
Pourquoi vous embêter avec des chemins absolus ?
Franchement je ne vois pas le problème à utiliser des chemins relatifs. Suffit d'être un temps soit peu organisé, et après c'est nettement plus souple.
Personnellement, j'ai banni les chemins absolus de tous mes développements (je conserve toutefois les chemins semi-absolus commençant par / pour les inclusions de CSS côté client par exemple).


On évite ce genre d'include pas terrible à mon goût :
include("D:\\easyphp18\\www\\dossier\\fichier-include.php");
Ou bien :
include("/home/usr/.../dossier/fichier-include.php");

Parce que $_SERVER['DOCUMENT_ROOT'] ne fait rien d'autre que d'ajouter le "D:\\easyphp18\\www" ou le "/home/usr/...".
l'intérêt d'utiliser des chemins absolus est avant tout de pouvoir faire des includes dans n'importe quel niveau de ton arborescence. Ainsi, si je fais un include au niveau de la racine, je peux décider de placer le fichier concerner dans un sous dossier sans avoir à modifier le fichier.

Le problème avec les chemins relatifs est que dès que tu changes un peu l'arborescence de ton site, tu dois modifier tous tes fichiers pour qu'ils respectent la nouvelle arborescence...
a écrit :

Le problème avec les chemins relatifs est que dès que tu changes un peu l'arborescence de ton site, tu dois modifier tous tes fichiers pour qu'ils respectent
la nouvelle arborescence...

Certes, mais il vaut mieux prendre un peu plus de temps pour concevoir une arborescence correcte dès le début, je trouve.
Enfin bref, on va arrêter là, je viens de m'apercevoir que j'ai lancé un troll malgré moi... quelle honte, un jeudi.
QuentinC a écrit :
Enfin bref, on va arrêter là, je viens de m'apercevoir que j'ai lancé un troll malgré moi... quelle honte, un jeudi.

Bouuuuh !
honte à toi !

Bon... Au moins tu reconnais ton erreur.
Tu auras donc le droit de choisir ton arme : pelle ou fouet ?!? Smiley lol Smiley lol Smiley lol
Un troll ? Si on continue dans ton sens Quentin, en faisant des chemins relatif, on obtient des pages moins lourdes ...



... J'ai une préférence pour le fouet Smiley sm
Super_baloo8 a écrit :
... J'ai une préférence pour le fouet Smiley sm

Y a qu'à demander ...
C'est ma tournée !

Smiley sm

D'autres volontaires ?!?

upload/3738-frotte.gif
Modifié par Cygnus (05 Jul 2007 - 18:10)
pas moi merci... Par contre baloo, et avant que le topic ne soit clos parce que ça part en vrille, je serai curieux de connaitre la conf apache appliquer ou du moins, un lien vers un site qui l'explique (j'ai zyeuté le site off d'apache, mais j'ai peut-être pas bien cherché ou ça n'y est pas, en tout cas j'ai rien trouvé dedans...)

merci Smiley smile
Pages :