[PHP5] Bug avec include ?
10 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
[PHP5] Bug avec include ?
Je dois être fatigué... J'ai des soucis avec mes require_once()
J'ai, à la racine de mon site, un dossier /class (contenant mes classes) et un dossier /data (qui renferme notamment des fichiers .txt contenant une partie de mon contenu).
A la racine de mon site, le fichier /index.php inclut le fichier /class/user.php, qui doit donc appeler /class/db.php. Pour cela, un simple
dans le fichier /class/user.php marche très bien. (Donc, le moteur php semple partir du répertoire courant pour faire l'inclusion, et pas du répertoire racine.)
MAIS !
Si dans mon répertoire /class, je veux inclure un fichier du répertoire /data, admettons, /data/config.txt (n'allez pas chercher, je ne stocke pas ma config en txt sur mon serveur
),
Petit soucis, si j'utilise /data/config.txt , tout marchera bien au niveau racine, mais pas dans le dossier /admin/, puisque les chemins ne seront pas les mêmes. Je ne peux donc pas utiliser simplement mes objets partout: ça casse un peu le délire !
Je ne souhaite pas utiliser de chemins absolus avec $_SERVER['DOCUMENT_ROOT'] (ou autre), je SAIS qu'on peut faire en sorte que le chemin 'de base' de l'include soit celui du script courant (et non de l'appelant), mais je trouve pas dans ma config ce qui peut causer ceci (config tout simplement récupérée sur un serveur du boulot, où tout se passe comme prévu...).
Une idée ?
Merci d'avance, je sèche, et comme d'habitude, ça fait plusieurs heures que je me ruine là-dessus
J'ai, à la racine de mon site, un dossier /class (contenant mes classes) et un dossier /data (qui renferme notamment des fichiers .txt contenant une partie de mon contenu).
A la racine de mon site, le fichier /index.php inclut le fichier /class/user.php, qui doit donc appeler /class/db.php. Pour cela, un simple
- Code: Tout sélectionner
require_once 'db.php';
dans le fichier /class/user.php marche très bien. (Donc, le moteur php semple partir du répertoire courant pour faire l'inclusion, et pas du répertoire racine.)
MAIS !
Si dans mon répertoire /class, je veux inclure un fichier du répertoire /data, admettons, /data/config.txt (n'allez pas chercher, je ne stocke pas ma config en txt sur mon serveur
- Code: Tout sélectionner
require_once '../data/config.txt';
Petit soucis, si j'utilise /data/config.txt , tout marchera bien au niveau racine, mais pas dans le dossier /admin/, puisque les chemins ne seront pas les mêmes. Je ne peux donc pas utiliser simplement mes objets partout: ça casse un peu le délire !
Je ne souhaite pas utiliser de chemins absolus avec $_SERVER['DOCUMENT_ROOT'] (ou autre), je SAIS qu'on peut faire en sorte que le chemin 'de base' de l'include soit celui du script courant (et non de l'appelant), mais je trouve pas dans ma config ce qui peut causer ceci (config tout simplement récupérée sur un serveur du boulot, où tout se passe comme prévu...).
Une idée ?
Merci d'avance, je sèche, et comme d'habitude, ça fait plusieurs heures que je me ruine là-dessus
Je te garantis que sur les serveurs que j'utilise au travail, pour les sites en php5, c'est bel et bien le script appelant qui détermine le chemin des include et require. C'est un vrai régal pour jongler d'un répertoire à l'autre selon les besoins. Les classes définies dans /class/ sont utilisables partout (racine, admin, sous-répertoires, etc) sans avoir besoin de rajouter de $path.
Actuellement, quand j'ai /class/1.php et /class/2.php, je peux faire
Note bien que je parle de php5. J'ai remarqué pas mal de gens qui étaient "surpris" par ce nouveau comportement.
Actuellement, quand j'ai /class/1.php et /class/2.php, je peux faire
- Code: Tout sélectionner
include '2.php';
Note bien que je parle de php5. J'ai remarqué pas mal de gens qui étaient "surpris" par ce nouveau comportement.
ha oui ok, parent, pardon, je pensais au tout premier de la chaîne (grosse journée, je suis diminué
)
donc en théorie, tu me confirmes que, à partir de /class/2.php, pour accéder à /data/config.txt, je devrais faire ../data/config.txt ?
Parce que là visiblement ça marche pas, je suis assez surpris, même eclipse me confirme ../data/config.txt, mais je me mange une grosse erreur ligne 1 (celle qui fait mal)
en tout cas merci de tes réponses !
donc en théorie, tu me confirmes que, à partir de /class/2.php, pour accéder à /data/config.txt, je devrais faire ../data/config.txt ?
Parce que là visiblement ça marche pas, je suis assez surpris, même eclipse me confirme ../data/config.txt, mais je me mange une grosse erreur ligne 1 (celle qui fait mal)
en tout cas merci de tes réponses !
ça depend du script parent
celui appelé par le navigateur
/index
/class/1
/class/2
/conf/conf
1er include /class/1 depuis l'index
include(./class/1)
inclusion de class/1 depuis /class/2
include(./class/1)
inclusion de /conf/conf depuis /class/2
include(./conf/conf)
pas mis d'apostrophes mais je pense que tu as compris maintenant
le script parent est /index
donc toutes les inclusions doivent etre renseignées par un chemin relatif à partir de celui-ci
rog
celui appelé par le navigateur
/index
/class/1
/class/2
/conf/conf
1er include /class/1 depuis l'index
include(./class/1)
inclusion de class/1 depuis /class/2
include(./class/1)
inclusion de /conf/conf depuis /class/2
include(./conf/conf)
pas mis d'apostrophes mais je pense que tu as compris maintenant
le script parent est /index
donc toutes les inclusions doivent etre renseignées par un chemin relatif à partir de celui-ci
rog
Bon bah je voudrais pas faire le casse-machins, mais justement.
Il existe une solution pour que ce soit le dernier fichier inclus qui serve de référence, et pas le premier de la chaine.
Parce que dans le cas contraire, dès que tu créées un sous-dossier, tous tes includes sont morts, et tu te retrouves à élaborer des systèmes souvent un peu bancals (bancaux ?) en concaténant des morceaux de path, ou en repartant à chaque fois de Document_Root (et mélanger config serveur et config appli, en général, mieux vaut éviter)
On utilise ça PARTOUT sur les serveurs de mon taff, j'ai la même config, ça devrait marcher pareil !
(je peux te fournir des morceaux de code pour te "prouver" que ça marche, si ça te tente)
Il existe une solution pour que ce soit le dernier fichier inclus qui serve de référence, et pas le premier de la chaine.
Parce que dans le cas contraire, dès que tu créées un sous-dossier, tous tes includes sont morts, et tu te retrouves à élaborer des systèmes souvent un peu bancals (bancaux ?) en concaténant des morceaux de path, ou en repartant à chaque fois de Document_Root (et mélanger config serveur et config appli, en général, mieux vaut éviter)
On utilise ça PARTOUT sur les serveurs de mon taff, j'ai la même config, ça devrait marcher pareil !
(je peux te fournir des morceaux de code pour te "prouver" que ça marche, si ça te tente)
@ Didier_S : je te conseille de lire la doc PHP en ce qui concerne la directive de conf "include_path", tu trouveras l'explication à ton problème
@ rog : je te conseille de lire la doc PHP ... au lieu de créer des expressions comme "monofichier" et de répondre avec un ton hautain !
Et franchement, quand tu as parlé d'index tu m'as fait sourire
Potasse aussi la doc de ton httpd avec hein 
@ rog : je te conseille de lire la doc PHP ... au lieu de créer des expressions comme "monofichier" et de répondre avec un ton hautain !
Et franchement, quand tu as parlé d'index tu m'as fait sourire
merci PinkEye, je suis dessus et effectivement, c'est bien de ça dont j'avais besoin.
et j'aurais du me douter que les vrais pros codaient en monofichier pour éviter les problèmes de config apache, et mélangeaient un peu les server-side includes et les appels client
et j'aurais du me douter que les vrais pros codaient en monofichier pour éviter les problèmes de config apache, et mélangeaient un peu les server-side includes et les appels client
10 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Live Search corrige le problème de referrers
- Google Testing Blog : pour les développeurs
- L'API Google et les données DMOZ
- Mise à jour de l'affichage du PageRank
- AdSense Tracking : statistiques détaillées sur les clics AdSense
- Liste de quelques poissons d'avril en 2006
- Forum WebRankInfo : un membre du moteur de recherche Voila.fr vient discuter
- Commande site: sur Google et pages ignorées
- Concours WRI / Vivastreet : gagnez un voyage à New-York
- Easter Egg dans Google Chrome (fonctions cachées)
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités




le forum