8796 sujets

Développement web côté serveur, CMS

Salut à tous !

Supposons que j'aie 3 pages :

Dans page_1.php j'ai : include('page_2.php')
Dans page_2.php j'ai : include('page_3.php') (ou page_3.txt dans mon cas)

Quel chemin dois-je mettre pour inclure page_3 ? Le chemin à partir de page_2 ou à partir de page_1 ?

J'essaie bien de mettre le chemin absolu, i.e. avec un / au début, mais ça ne marche pas.

NB : peut-on utiliser ce slash pour un simple dossier, du genre include('/index.php') ? (Exemple idiot, je sais bien qu'on n'inclura jamais l'index).

Je suis chez Free.

Quand je mets le chemin absolu avec http://etc. ça bugue parce que j'appelle des fonction qui ont besoin de $_SERVER['REMOTE_ADDR'] et du coup elles récupèrent l'adresse du serveur.

Help ! Smiley biggol

Merci ! Smiley biggrin
Je crois avoir trouvé.

J'avais du mal à inclure un fichier .txt en écrivant dedans, parce que ça interdit de passer par http (si on utilise ce chemin on peut pas écrire dans le fichier : message d'erreur : bla bla bla "does not support writeable connection").

J'ai donc mis :

$monfichier = fopen($_SERVER['DOCUMENT_ROOT'] .'/fichier_ou_ecrire.txt

Et ça marche !
Cela dit tout n'est pas très clair dans ma tête au sujet de ces bugs d'inclusion...
J'ai rencontré ce problème des inclusions il y a quelque temps, pour un projet que je dois reprendre et qui inclue tout et n'importe quoi, de partout et n'importe où...
Au final, j'ai trouvé une solution qui me permet de faire correctement mes inclusions que que soit la page qui inclue.

Soit 2 fichiers :
fichier1.php : situé dans www/bidule/truc/fichier1.php
fichier2.php : situé dans www/machin/fichier2.php
On souhaite inclure fichier2 dans fichier 1 :
fichier1.php
------------

include(realpath(dirname(__FILE__).'/../../machin/fichier2.php'));
__FILE__ est une constante magique PHP.
dirname() retourne le nom du dossier de fichier1.php.
realpath() retourne lui le chemin complet après avoir converti les . et .. en un chemin correct. Il agit sur la concaténation du dossier en cours avec le chemin du fichier à inclure.

De cette façon, même si fichier 1 est inclu lui même autre part, l'inclusion se fera correctement.

Mais avec une bonne arborescence normalement ce genre de problème doit rester rare.