OVH Community, votre nouvel espace communautaire.

Include : abolu/relatif sous php5


Daniel60
31/01/2009, 07h44
J'ai pourtant bien écrit qu'il ne fallait pas commencer par ./
Comment faire pour être bien lu ?

routard
30/01/2009, 21h31
oui mais encore une fois, lorsque l'on fait include("./monfichier.php"), il ne cherche que dans le répertoire en cours donc cela ne fonctionne pas lorsque les fichiers se baladent dans toute l'arborescence ! idem pour les "../../", cela dépend de la hiérarchie du fichier
a priori, la variable $_SERVER['DOCUMENT_ROOT'] est conseillé par un certain nombre de sites, donc je me suis rallié à la majorité ! et elle permet d'avoir systématiquement le même code ...

Daniel60
30/01/2009, 16h14
Pourquoi faire simple quand on peut faire compliqué
Avez-vous essayé ma proposition ?

routard
30/01/2009, 15h37
salut,
si bonne nouvelle
j'ai simplement fait :

include($_SERVER['DOCUMENT_ROOT']."/mondossier/mapage.php");

pour chaque include ... comme ça pas de problème quelque soit le type d'hébergement ou l'hébergeur. J'ai simplement du virer quelques URL rewritting qui gênaient, mais rien de très grave !

pour ce qui est de easyphp, on trouvera bien une solution plus tard (de toutes façons, je fais le code à la main et je le vérifie quasiment tout le temps en ligne !)

merci

Daniel60
30/01/2009, 13h15
Pas de nouvelle : bonne nouvelle ?

Daniel60
29/01/2009, 14h11
Personnellement je code simplement include("dossier/fichier") si c'est à partir du répertoire courant, sinon include("../dossier/fichier") s'il faut remonter d'un niveau, donc sans ./ au départ.

routard
29/01/2009, 12h26
Non mais c'est a priori normal : si le nom du fichier commence par ./ , il est cherché uniquement dans le dossier courant d'exécution. Je parle bien de PHP5 ! A priori, il y a quelques différences de comportement en PHP4 mais l'idée est de penser au futur et le développement de PHP4 est terminé depuis longtemps !

Serait-il possible :

- de définir UNE SEULE FOIS quelque part pour TOUT le site, une variable du type $root="/host/loginftp/www" qui soit connue par toutes les pages du site (par exemple à l'aide de htaccess)

ou

- avec un peu d'url rewritting, dès que l'on fait appel à un fichier ayant l'extension ".inc.php" , le rediriger vers le dossier "/home/loginftp/www/include" (il faut alors simplement nommer tous les fichier à inclure avec l'extension ".inc.php" et tous les stocker dans le dossier "/include" à la racine du site)

ou

- que quelqu'un me dise de manière définitive que tous mes includes doivent être du type include("/home/loginftp/www/mondossier/moninclude.inc.php"); et qu'il n'y a vraiment pas d'autre solution .........

Daniel60
29/01/2009, 09h05
Pourquoi include("./mondossier/mapage.php") ne fonctionne pas ?
Oui, pourquoi ? Cela marche normalement.

routard
29/01/2009, 00h11
up

routard
28/01/2009, 13h38
Bonjour,
J'ai une question à propos des include sous php5. J'ai bien compris que les url absolues, du style include("http://www.mondomaine.tld/mondossier/mapage.php") ne passent plus par défaut et c'est très bien (pour la sécurité ...).
Pour chaque page de mon site, j'ai un include pour la partie haute et un include pour le menu. Je ne veux pas utiliser de chemin relatif, il faudrait modifier chaque page au cas par cas selon sa position dans l'arborescence !

La solution qui consiste à faire include("/host/loginftp/www/mondossier/mapage.php") dans chaque fichier php du site fonctionne mais si je dois changer d'hébergement, je dois tout modifier à nouveau ... et puis cela ne fonctionne pas en local sous easyphp.

Quelqu'un aurait-il une solution à me proposer, afin de mettre le même code dans chaque fichier, et qui fonctionne aussi bien en local et en distant ? Pourquoi include("./mondossier/mapage.php") ne fonctionne pas ? Existe-t-il une variable type $_server qui fonctionnerait quelque soit l'hébergement ou l'hébergeur ?

Merci