|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
Salut a tous,
j'ai une petite question à vous poser. Car je suis en train de m'arrancher les cheveux pour trouver une solution correcte. J'ai donc besoin de vous Voilà, mon problème est par rapport aux chemins dans les sites. Il est conseillé d'utiliser des chemins relatifs pour une meilleurs portabilité (on peut les déplacer, il marcheront toujours correctement, alors qu'avec les chemins absolus il faut les redéfinir à chaque fois). En plus apparement il est plus lourd d'appeler un chemin absolu qu'un chemin relatif. (à cause du http). Le problème est que le site que je fais est beaucoup modularisé. Ce qui fait que j'ai des includes un peu partout. Le poblème viens lorsque je dois inclure un même fichier à partir de location différente. Par exemple prenons un fichier qui sera inclu: Code :
Ma question est donc, est-ce que l'on peut se débrouiller pour avoir ses liens relatifs? Pour le moment j'ai crée une variable globale $rootpath que je met devant tout les chemins, j'ai donc des chemins absolus. Voilà, merci d'avance pour vos réponses! |
||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Emmanuel ThierryIngénieur systèmes et réseaux Inscription : décembre 2003 Messages : 216 ![]() |
Fait une variable rootpath du chemin de la racine relativement au script..
Genre : $rootpath = '../../'; |
|
|
00
|
|
|
#3 |
![]() ![]() Développeur Web Inscription : août 2006 Messages : 2 700 ![]() |
Pour être sûr de ne pas redéfinir ta racine, je conseillerais même de la mettre dans une constante plutôt qu'une variable.
Il y sûrement d'autres moyens imaginables, mais cette technique est très simple et tu pourras remarquer qu'elle est beaucoup utilisée, dans les scripts de forums par exemple. |
|
|
00
|
|
|
#4 | |
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
Citation:
En fait la j'ai définit ma variable rootpath dans un fichier de configuration que j'inclu dans toute les pages. L'avantage de cette méthode est que j'ai juste une ligne à changer pour redéfinir tout les chemins. Si je fait avec ta méthode il faut que redéfinisse $rootpath dans toute les pages, c'est pas très pratique :/. |
|
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 72 ![]() |
Bien sur que non, ton $rootpath tu le redéfini seulement dans les scripts qui sont dans des sous-dossiers de ton site...
Actuellement, je ne connais pas d'autres méthodes pour parer à ce probléme. |
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
dans mes développement, j'utilise un seul script qui se trouve à la racine du site donc je n'avais pas de problème de lien
http://www.developpez.net/forums/sho...160#post449160 Le problème est que la personne qui travaille avec moi a besoin d'autres fichiers dans des répertoires donc j'ai fini par utiliser le même système que toi. J'ai une valeur de configuration qui contient le chemin de l'application par rapport à la racine du serveur
__________________
Modérateur PHP |
|
|
00
|
|
|
#7 | |||
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
Citation:
Je sais pas si ca marche en mettant ../../ dans les pages concerné. Car si les pages inclusent en inclusent d'autres je sais pas comment ca se passera. Par exemple. j'ai ma page d'index. Code :
Est ce que ca marchera comme ca? Du point de vu de la page toto.php c'est bon car elle est dans le même repertoire. Mais si j'appel la page toto.php d'une autre page qui est dans un autre repertoire, est ce que ca marchera ou bien est ce que l'appel devra être différent à chaque fois? |
|||
|
|
00
|
|
|
#8 | |||
|
Membre régulier
![]() Inscription : janvier 2005 Messages : 71 ![]() |
Citation:
- URL (http://www.truc.com/include/toto.php), appelées via le wrapper d'URL, qui effectivement et un peu lourd et pas trop consseillé, mais utile si tu as besoin du code HTML généré par un script PHP sur un autre serveur - chemin du fichier sur le disque (/home/truc/include/toto.php ou c:\truc\include\toto.php) où il n'y a pas de différences significatives entre chemin relatif et absolu Dans le 2ème cas (ce dont tu as à priori besoin), tu peux utiliser une constante comme jlm94 l'explique Code :
|
|||
|
00
|
|
|
#9 |
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
Oki je vais essayer ca ce soir, par contre j'ai comme l'impression qu'il risque d'avoir un problème avec les chemins pour les images.
|
|
|
00
|
|
|
#10 | ||
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
Comme je le disait ca marche pas top. Enfin pour les includes ca marche mais avec les autres opérations ca ne marche plus.
par exemple dans une page que j'inclu à différent niveau hiérarchique j'ai : Code :
Avec le chemin sur le disque ca ne marche pas. |
||
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Inscription : mai 2003 Messages : 140 ![]() |
Pour les liens publiés online ce mécanisme ne fonctionne pas. Tu dois alors définir une autre constante de type :
Code :
$sBasePathOnline = 'http://ton.site.com/'; Code :
define ('BASE_PATH_ONLINE', 'http://ton.site.com/'); |
|
|
00
|
|
|
#12 | |
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
Citation:
Il y a pas moyen de se bébrouiller avec des chemins plus ou moins relatif? |
|
|
|
00
|
|
|
#13 | ||
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
Bon j'ai mélangé les 2 alors.
J'ai mis ca dans mes headers: Code :
Cependant j'ai une dernière petite question. Pour une image ca en reviens au même niveau performance de faire: <img src="images/image.jpg" alt="#"/> et <img src="http://www.truc.com/images/image.jpg" alt="#"/> ? |
||
|
|
00
|
|
|
#14 |
![]() ![]() Développeur Web Inscription : août 2006 Messages : 2 700 ![]() |
J'opterais pour le première solution : pas de résolution de nom dans les DNS si le nom n'est pas dans le fichier hosts.
Mais de toutes façons, je ne pense pas que ce soit visible ailleurs que dans un programme de bench. |
|
|
00
|
|
|
#15 | |
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
Citation:
|
|
|
|
00
|
|
|
#16 |
|
Membre régulier
![]() Inscription : janvier 2005 Messages : 71 ![]() |
Effectivement, j'ai pas pensé au cas des images
![]() Par contre, je ne pense pas qu'il y a une réellement une différence entre le chemin absolu et relatif (merci les cache DNS |
|
00
|
|
|
#17 |
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
Je relance mon post car j'ai un problème du au variables globales que j'ai utilisé (ROOTPATH et ONLINE_ROOTPATH).
En effet, dans mon script j'utilise à plusieurs moment des if(file_exists(ROOTPATH...)) Le problème est que ( je crois) que l'on ne peut utiliser d'adresse d'image absolue. Comment faire dans ce cas la? En sachant toujours que j'inclue ce fichier à plusieurs niveau hiérarchique différents dans mes repertoires. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com