Bonjour
je viens de mettre 30mn à réaliser qu'un chemin absolu dans un "scr=" ne prend pas les "H:/REPERTOIRE/chemin" mais uniquement "/chemin" alors que ça fonctionne dans les "include" en php.
Pourquoi ?
Bonjour
je viens de mettre 30mn à réaliser qu'un chemin absolu dans un "scr=" ne prend pas les "H:/REPERTOIRE/chemin" mais uniquement "/chemin" alors que ça fonctionne dans les "include" en php.
Pourquoi ?
Parce que (en admettant que « scr= » soit en fait « src= », pour « source », et que ce soit l'attribut d'une balise <IMG>) :
- Cet attribut attend un(e) URL qui sera interprétée par le navigateur de ton client. Il faut donc lui donner une adresse publique sur Internet à laquelle le client en question pourra aller chercher l'image en question, c'est-à-dire sur ton site. Donc soit tu travailles en absolu et dans ce cas, il faut indiquer l'adresse de l'hébergeur sur lequel il se trouve, soit tu restes en relatif et dans ce cas, ce sera par rapport à la position courante ou à la racine de ton site (flemme de vérifier), soit encore tu utilises la balises <base> pour indiquer ce chemin une fois pour toutes pour la page concernée ;
- H: se réfère à une partition de ton propre disque dur. Il est donc totalement privé et il n'y a aucune raison pour qu'il soit accessible, ni même que l'adresse ait un sens, pour quiconque ne se trouve pas en local sur ta machine ou n'y dispose pas d'un montage réseau ;
- Tout le monde ne travaille pas sous Windows. Dans le monde Unix et plus généralement sur Internet, les lettres de lecteurs comme C: ou H: n'existent pas.
Tout ceci est vrai si l'on considère que tu es en train de construire un vrai site web et que tu comptes le mettre en ligne. Si tu écris tes propres pages HTML (ou que tu les fais produire par le PHP) en local sur ta machine, alors ton navigateur va tenter de les afficher et — uniquement à la dernière étape — va tenter de résoudre l'URL qui aura alors du sens mais uniquement sur ton système (Windows) et sur ta machine (disposant non seulement d'un H: mais également des fichiers au bon endroit sur cette partition). Ça te donnera l'illusion que tes pages sont au point alors qu'elles cesseront de fonctionner dès que tu changeras d'environnement.
Même problème mais avec un cheminement différent. PHP est un langage de programmation à part entière en plus d'être un « Préprocesseur Hypertexte », sa fonction initiale. Le serveur web invoque donc l'interpréteur comme il le ferait avec du BASIC ou du Python, le programme s'exécute et renvoie in fine un résultat sur la sortie standard. Le serveur web considère ce résultat comme étant la page à renvoyer (avec ses éventuels headers) et retransmet le tout au client qui a demandé la page concernée.alors que ça fonctionne dans les "include" en php.
Donc cela ne va fonctionner que parce qu'il s'agit d'un programme interprété et parce que le serveur exécute l'interpréteur PHP sur la même machine que celle où se trouve ton répertoire. Dès que tu vas mettre en ligne ton site sur un serveur distant (celui de ton hébergeur) pour le rendre public, ton programme PHP ne fonctionnera plus non plus parce que tu ne seras plus sur le même disque (et probablement plus sur le même système non plus).
Enfin, DOS et Windows utilisent traditionnellement des antislashs « \ » plutôt que des slashs « / » pour séparer les répertoires. Ceci justement pour se distinguer du monde Unix. Cela avait conduit à avoir beaucoup d'URL malformées dans les premières années du web. mais comme le style Internet combiné à l'essor de Linux depuis les années 1990 et au fait que le slash simple soit à la fois plus naturel et plus facile à saisir, les gens ont fini par y revenir et c'est tant mieux.
OK je crois que j'ai pigé la différence entre html qui veut des url et un autre programme (ici l'interpréteur php) qui lui va accepter des chemins version ordi.
En fait, dans ma pratique je déclare au début
et tous mes chemins dans mes php utilise cette variable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $racine=$_SERVER['DOCUMENT_ROOT'];
Mon problème est arrivé lorsque j'ai voulu mettre en src des fichiers mp3 et que j'ai niaisement fait un copier/coller à partir du chemin. Comme ces chemins étaient écrit dans un js ...
je n'ai pas fait gaffe qu'ils allaient en fait devenir des src.
C'est une bonne chose d'exploiter DOCUMENT_ROOT et les variables serveur. C'est ce qu'il faut faire et cela veut dire que tu travailles déjà en relatif, par rapport à une base définie au départ.
Garde à l'esprit toutefois que si tu mets ton serveur en ligne, la machine sur laquelle s'exécuteront tes fichiers PHP ne sera plus non plus ta machine personnelle, mais celle de ton hébergeur. Si tu veux mettre des MP3 en ligne, il faut alors les mettre soit dans des espaces privés mis à ta disposition par ton hébergeur (pour pouvoir y placer tout ce qui doit pouvoir être lu par un script mais pas directement réclamé par le client), soit à défaut dans le dépôt lui-même avec tes pages web. Dans ce cas, il faudra veiller à la sécurité en ouvrant des répertoires dédiés et en configurant correctement tes fichiers .htaccess.
Dans ce dernier cas, il faudra être vigilant pour ne pas se retrouver « enfermé dehors » ou entrer des des boucles de redirection infinies. Il te faudra peut-être désactiver l'index automatique sur le répertoire en question. Il faudra aussi voir si tu souhaites en interdire totalement l'accès depuis l'extérieur, ce qui laisserait quand même à tes scripts la possibilité de les lire et d'en réémettre eux-mêmes le contenu, ou si tu veux faire des pages qui permettent de cliquer sur un lien pour les télécharger, auquel cas on supprimerait toujours l'index mais on maintiendrait l'accès en lecture à quiconque connaît la bonne URL.
Partager