Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/12/2007, 03h00   #1
Membre habitué
 
Avatar de Amnesiak
 
Geoffray
Inscription : août 2002
Messages : 137
Détails du profil
Informations personnelles :
Nom : Geoffray
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : août 2002
Messages : 137
Points : 122
Points : 122
Par défaut Problème de répertoire courant

Bonjour à tous,

Je vous expose brièvement l'arborescence des répertoires de mon application et ce que j'aimerais réaliser avec ça :
Code :
1
2
3
4
5
6
/projet
    /public_html
        /img
            hello.jpg
        template.html
    /index.php
Mon fichier template.html est une page HTML qui affiche une image via un chemin relatif
Code :
<b>Hello !</b><img src="img/hello.jpg" />
Et dans index.php qui est un niveau plus bas, j'aimerais simplement pouvoir afficher correctement mon template, sans devoir le modifier.
Code :
1
2
3
4
<?php
chdir('public_html/');
require('template.html')
?>
Ca paraît idiot, pourtant, bien que le fichier HTML soit correctement inclus, l'image ne s'affiche pas. Elle ne s'affiche que si je spécifie <img src="public_html/img/hello.jpg" />, comme si mon chdir() n'avait aucun effet. Est-il possible de trouver une solution pour ne pas devoir modifier les templates, ni l'arborescence actuelle ?

Merci
Amnesiak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2007, 09h49   #2
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
salut
extrait du manuel php http://no2.php.net/require
Citation:
La commande require() se remplace elle-même par le contenu du fichier spécifié
sa veut dire qu'il faut bien mettre <img src="public_html/img/hello.jpg" /> pour que sa fonctionne dans ton index.
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2007, 12h00   #3
Membre habitué
 
Avatar de Amnesiak
 
Geoffray
Inscription : août 2002
Messages : 137
Détails du profil
Informations personnelles :
Nom : Geoffray
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : août 2002
Messages : 137
Points : 122
Points : 122
Oui tu as tout a fait raison, mais n'existe-t-il pas un moyen pour changer le DocumentRoot d'Apache en fonction du projet en cours ?

Les idées de solutions que j'ai imaginé, mais plutôt lourdes à implémenter :
  • charger le fichier via par exemple file_get_contents au lieu d'un include, et remplacer toutes les occurences de [<img src="] par [<img src="public_html/], mais ça implique le même traitement pour tous les élements externes à la page (CSS, Javascript, Flash, etc...)
  • peut-être y a-t-il moyen en utilisant une règle de réécriture... mais je ne maîtrise pas bien cette technique
  • changer la config d'Apache pour déplacer le DocumentRoot, mais je préfère éviter cette solution, supposant que je n'aurai pas toujours forcément accès à ces options

D'autres idées ? Elles sont toutes les bienvenues, même les plus folles

Merci
Amnesiak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2007, 15h44   #4
Membre expérimenté
 
Inscription : janvier 2007
Messages : 622
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 622
Points : 555
Points : 555
Bonjour,
La seule solution que j'ai trouvé utilise la variable $_SERVER.


Code :
1
2
3
4
5
6
 
<?php
$path= $_SERVER[DOCUMENT_ROOT];
include ($path.'/includes/premiere.php');
include ($path.'/template/template.php');
?>
et dans ton template.php

Code :
1
2
3
4
5
6
 
<?php
$path= $_SERVER[DOCUMENT_ROOT];
?>
<b>Hello !</b>
<img src="<?php echo $path;?>/img/hello.jpg" />
kabkab est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h39.


 
 
 
 
Partenaires

Hébergement Web