Require / include

Résolu/Fermé
Lankou79 Messages postés 13 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 12 août 2010 - 19 sept. 2009 à 19:47
Lankou79 Messages postés 13 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 12 août 2010 - 22 sept. 2009 à 21:46
Bonjour,

Tout d'abord je tiens à m'excuser si cette question à déjà été posté. J'ai recherché sur le forum et notre ami Google.

Pour vous expliqué ma question, je vous présente le contexte. En regardant des fichier PHP, les personnes qui les ont développé on écrit par exemple :

require_once('monfichier.php')

Je connais et je comprends ce qu'ils font mais le fichier.php en question ne se trouve pas du tout au même niveau que le fichier en php qui l'inclue (monfichier2.php).

- <dossier_include>
     - monfichier.php
- <dossier_script>
    - monfichier2.php


Je pense que tout ça est dû à la configuration de Apache. Ils doivent faire un lien (un alias par exemple) entre le dossier qui contient le fichier.php et le dossier qui contient le fichier php qui l'appelle.

Ma question est, si je me suis bien exprimé, que si quelqu'un qui connais le procédé utilisé pouvais me l'expliqué en détails.

Je vous remercie par avance de vos réponse.

PS : si la question a déjà été posée (je m'excuse si c'est le cas), ne me renvoyé pas boulé, m'était juste le lien.

10 réponses

En creusant un peu la doc, je viens d'apprendre quelque chose

Tu peux modifier la variable de configuration include_path avec la fonction ini_set
Si tu mets dedans le chemin "qui va bien", tu peux ensuite faire des include sans avoir besoin de rappeler les chemins des fichiers inclus

Tu dois pouvoir vérifier si le script que tu as marchait comme ça, mais il y a de fortes chances
1
Bonjour

Je ne pense pas qu'Apache y soit pour grand chose. Un include PHP est une histoire de fichiers, géré par le système de fichiers de l'ordinateur, pas par le serveur web.
Le comportement que tu décris s'explique si monfichier2.php est lui-même inclus dans un fichier qui est dans le même dossier que monfichier.php. Car le répertoire courant qui sert pour les adressages relatifs est déterminé par le script appelé et reste le même quand on "entre" dans les include.
0
Lankou79 Messages postés 13 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 12 août 2010
19 sept. 2009 à 22:09
Merci pour ta réponse.

Mais en faite, le fichier à inclure se trouve dans un dossier en l'autre fichier dans un autre. Le truc c'est que dans le dernier, il est écrit require_onde('monfichier.php'). Moi j'écrirai plutôt requi_once('../include/monfichier.php')
en disant que mon fichier à inclure se trouve dans /include.
0
J'avais bien compris ce que tu voulais dire.
Le scipt appelé était bien monfichier2.php, ou bien monfichier2.php était-il lui-même inclus dans un autre script ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
19 sept. 2009 à 22:38
si j'ai bien tout compris tu fait un include qui ne fonctionne pas ???
Comme le dis tres justement le père , apache n'y est absolument pour rien.Ce n'est qu'une question de chemin
dans la page ou tu a besoins de ton include tu met simplement
require_once('monfichier1.php');
require_once('monfichier2.php');
etc...


ca c'est une solution à la sauvage, tu a une autre solution plus propre , faire un fichier fonctions.php dans lequel tu met toutes tes fonctions
et a chaque debut de script tu n'appelle qu'un seul fichier..fonctions.php
require_once('fonctions.php');
0
Lankou79 Messages postés 13 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 12 août 2010
19 sept. 2009 à 23:15
Je suis d'accord avec toi lewis34 mais le truc en faite, c'est que j'ai un dossier include avec function.php par exemple. Ensuite, j'ai un dossier script qui contient lui même un dossier contact et un dossier aganda par exemple. C'est deux derniers dossiers contient des fichier.php qui doivent inclure function.php.

Le truc c'est que j'ai déja vu des fichier php avec seulement require_once('function.php') alors qu'il est dans un autre dossier. Normalement, il faudrai faire requi_once('../../include/function.php') pour que cela fonctionne.

/include et /script se trouvent au même niveau d'arborescence.
0
Lankou79 Messages postés 13 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 12 août 2010
19 sept. 2009 à 23:52
Voila c'est exactement ça que je voulais. Par contre, le chemin fonctionnera aussi bien pour include que pour require ?
0
Lankou79 Messages postés 13 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 12 août 2010
20 sept. 2009 à 01:11
Bon voila j'ai suivi les indications que tu m'a donné et j'ai trouvé la solution.

Dans le fichier php.ini qui se trouve dans Apache2/bin/

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

; UNIX: "/path1:/path2"
;include_path = ".:***** Le chemin du dossier qui contient tous les fichiers include.*****"
;
; Windows: "\path1;\path2"
include_path = ".; ***** Le chemin du dossier qui contient tous les fichiers include.*****" 


Attention sous UNIX, c'est des '/' et pour Windows c'est des '\' dans le chemin.
0
Je n'ai pas fait l'essai spécialement pour le include_path, mais toutes les commandes relatives aux chemins en Apache et PHP fonctionnent aussi bien avec / qu'avec \ pour windows. C'est étonnant qu'il y ait besoin d'une distinction à ce niveau là. As-tu fait l'essai ?
0
Lankou79 Messages postés 13 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 12 août 2010
22 sept. 2009 à 21:46
Non effectivement, il ne fait pas distinction. Avant que je modifie le script php.ini, le chemin pour Windows était avec '\' donc j'en au conclu qu'il fallait les utiliser. Souvent on a des problèmes à cause de ça.

En tout cas, j'ai trouvé la réponse à ma question avec ton aide. Je te remercie.
0