Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 20/01/2011, 11h46   #1
Membre du Club
 
Inscription : avril 2004
Messages : 278
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 278
Points : 57
Points : 57
Par défaut Comment gérer les includes

Bonjour,

J’ai fais un site, mais j’ai un gros problème au niveau de mes includes.
La majorité de mes pages sont à la racine, et ca commence a devenir compliqué d’autant que certaines pages ont rien faire à la racine comme une page cron ou des pages pour des api.

Le problème c’est que si je place tout un des dossiers bien ranger tout les includes sont perdus.
Car les includes prennent en parametre des chemins relatifs, mais en se basant sur la page parent et non celle en cours.

Je m’explique :

/ Index.php > avec dedans:
Code php :
1
2
 require_once('includes/Logger.php');
require_once('includes/appli.php');

/includes/appli.php > avec dedans:
Code php :
1
2
require_once('includes/mybase.php');
require_once('includes/security.php');

Si jamais je créer une page /cron/moncron.php qui appel /includes/appli.php, j’ai une erreur :
Citation:
Fichier 'includes/mybase.php' non trouvé
car mybase.php est vu de cron.php sur ../includes/mybase.php.

Je souhaite trouver une solution permettant de faire marché Index.php et cron.php en même temps.
On pourrait mettre tout les includes possible dans Index.php et cron.php, mais je ne trouve pas sa propre, car on ne sait pas les includes vraiment nécéssaire par les autres pages, donc on en inclus de trop (voir pas assez).

Comment puis je gérer cela sans tout mettre à la racine ?

Merci d’avance
laclac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 12h34   #2
Membre actif
 
Inscription : décembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 184
Points : 198
Points : 198
en ajoutant ./ qui est la racine du site

Code php :
require_once('./includes/mybase.php');
Helfima est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 20/01/2011, 17h26   #3
Membre à l'essai
 
Mickael
Inscription : août 2007
Messages : 19
Détails du profil
Informations personnelles :
Nom : Mickael

Informations forums :
Inscription : août 2007
Messages : 19
Points : 20
Points : 20
Tu peut définir un chemin qui pointe vers la racine de ton application/site web, dans index.php par exemple

Code :
define('ROOT_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
et ajuster les require_once en conséquence

Code :
require_once(ROOT_PATH . 'includes/appli.php');
Le fichier /cron/moncron.php devra d'abord inclure le fichier dans lequel est défini ROOT_PATH
bash88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 10h25   #4
Membre du Club
 
Inscription : avril 2004
Messages : 278
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 278
Points : 57
Points : 57
Bonjour,


Ce n'est qu'après 0.5j de taff à changer tout mes includes et mon arborescence que je me suis aperçu que la solution de Helfima, n'était que fantaisie.

Merci donc à bash88 qui me réconforte dans ma peine par sa solution qui je pense est viable.

J'ai fais une solution intermédiaire. Mettre partout:
Code :
1
2
	define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT']);
	require_once( ROOT_PATH.'includes/appli.php');
laclac est dé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 00h01.


 
 
 
 
Partenaires

Hébergement Web