OVH Cloud OVH Cloud

[PHP]include() et adresses rel. pour les ss-rep.

2 réponses
Avatar
Loïc Prouvèze
Bonsoir,

En voulant structurer mon site grâce à la fonction (je ne
sais pas si c'est le terme exact, je débute...) include(),
j'ai décomposé mes page comme ceci :
-- logo
-- titre
-- menu
-- texte
-- pied de page
-- ...

Malheureusement, je me suis rendu bien vite compte que cette
solution fonctionne bien uniquement si tous les répertoires
se situent à la racine du site... Dès que l'on veux inclure
des sous-répertoires pour ordonner son site, l'adresse
relative du menu ne fonctionne plus :-/

N'y a t-il donc que deux solutions ?
-- Mettre des adresses absolu dans le fichier du menu ?
Et si on change d'adresse web :-/
-- Ne faire que des répertoires à la racine ?
Et s'il y en a trop :-/

Est-ce que je suis suffisamment clair ou faut-il que
j'ajoute des précisions ?

Quelqu'un aurait il une autre solution s'il vous plaît ?

Ne pourrait-on pas mettre des variables à la place des
adresses par exemple ?

--
@+,
LoX

2 réponses

Avatar
Free
Re,

Je viens de faire une recherche dans mon fichier
/etc/php.ini est j'ai trouver ça :
safe_mode_include_dir > C'est donc ici que je peu mettre mes repertoires include ?



Non. C'est ici :

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "path1;path2"
;include_path = ".;C:EasyPHPphppear"
include_path = ".;C:EasyPHP"

Mais en fait, ça ne résout pas mon problème principal: le
fichier menu.php restera identique, quelque soit le niveau
de sous-répertoire où il sera appelé donc si je laisse les
liens du fichier menu.php en relatif, il ne seront bon que
pour un seul niveau de répertoire.



Ecoute, sur mon site j'utilise les pseudos frames, mon menu est appelé par
un include et je n'ai pas de problème.
Mes liens sont sous la forme :
index.php?page¬tu/actu
ou
index.php?page=contrib/modelisme/delam/index
et je n'ai pas de problèmes :-)

On peut donc indiquer plusieurs répertoire include... Ça ne
risque pas de créer des conflits ?



Logiquement oui, on peut en créer plusieurs, mais çà va ralentir le site vu
qu'à chaque appel par include, le serveur va voir tous les répertoires
indiqués dans le include_path.

Si on marque <?Php include "./rep/fichier.php";?> cela évite de mettre ce
fichier.php dans le répertoire include. çà ira le chercher directement dans
le répertoire rep.

--
Free
Avatar
Loïc Prouvèze
"Free" <bonbec at free.fr> a écrit le Vendredi 19 Décembre
2003 17:42 dans fr.comp.infosystemes.www.auteurs :

Re,



Salut,

Je viens de faire une recherche dans mon fichier
/etc/php.ini est j'ai trouver ça :
safe_mode_include_dir >> C'est donc ici que je peu mettre mes repertoires include
?



Non. C'est ici :

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "path1;path2"
;include_path = ".;C:EasyPHPphppear"
include_path = ".;C:EasyPHP"



Je l'ai trouvé. Merci. Mais ça ne me plaît pas trop :
Je suis allé voir les fichiers qui sont dans les chemin déjà
indiqué (/usr/lib/php/ et /usr/share/pear/) et il me semble
que cela ne serait pas très propre d'y ajouter un
répertoire, juste pour un utilisateur est son site web. Ce
que je veux dire, c'est que si l'on doit mettre un chemin
pour chaque utilisateur, ce n'est pas très élégant. A moins
que l'on puisse mettre un chemin avec un joker du style :
/home/*/public_html/includes/ et chaque utilisateur se
débrouille avec ça ?

Mais en fait, ça ne résout pas mon problème principal: le
fichier menu.php restera identique, quelque soit le
niveau de sous-répertoire où il sera appelé donc si je
laisse les liens du fichier menu.php en relatif, il ne
seront bon que pour un seul niveau de répertoire.



Ecoute, sur mon site j'utilise les pseudos frames, mon
menu est appelé par un include et je n'ai pas de problème.



Qu'est ce que sont les pseudos frames ?

Mes liens sont sous la forme :
index.php?page¬tu/actu
ou
index.php?page=contrib/modelisme/delam/index
et je n'ai pas de problèmes :-)



Les liens de tes pages où les liens qu'il y a dans tes pages
en interne ?

On peut donc indiquer plusieurs répertoire include... Ça
ne risque pas de créer des conflits ?



Logiquement oui, on peut en créer plusieurs, mais çà va
ralentir le site vu qu'à chaque appel par include, le
serveur va voir tous les répertoires indiqués dans le
include_path.

Si on marque <?Php include "./rep/fichier.php";?> cela
évite de mettre ce fichier.php dans le répertoire include.
çà ira le chercher directement dans le répertoire rep.



ok. Merci :-)

--
@+,
LoX