Emplacement des fichiers PHP. [Réglé]
Problème lors du placement de certains fichiers PHP ailleurs qu'à la racine
Créations de Modules
AiYori Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre AiYori
- Inscrit le : 23/08/2012
Bonjour,
Afin de bien structurer un module que je suis en train de développer, je souhaiterais placer certains fichiers PHP ailleurs qu'à la racine de mon module. Je crains en effet d'avoir au final un répertoire racine qui soit surchargé de fichiers.
Concrètement, j'ai créé un répertoire pages directement sous la racine du module, puis un répertoire main sous pages. Je place le fichier main.php dans ce dernier répertoire. Le fichier index.php placé à la racine du module pointe vers ce fichier main.php.
Voici en synthèse l'architecture de mon module.
Code :
/index.php
/pages
/main
main.php
La seule précaution que j'ai prise a consisté à définir correctement la constante PATH_TO_ROOT.
Voici le contenu du fichier main.php.
Code PHP :
<?php define('PATH_TO_ROOT','../../..'); require_once(PATH_TO_ROOT . "/kernel/begin.php"); require_once(PATH_TO_ROOT . "/kernel/header.php"); // require_once(PATH_TO_ROOT . "/kernel/footer.php"); ?>
Il me semble, mais je me trompe peut-être, que c'est le fichier PHP minimal. Malheureusement, l'affichage que j'obtiens est fortement dégradé : les menus sont altérés, la boîte de recherche également. J'ai l'impression que cela vient du choix que j'ai fait quant à l'emplacement de mon fichier main.php. Au mieux, il me manque une directive particulière, à l'instar de la définition de PATH_TO_ROOT ; au pire, il n'est pas possible de placer ces fichiers en dehors de la racine du module.
Je suis preneur de toute recommandation et de toute correction de code.
Par avance, merci.
Édité par AiYori Le 27/09/2012 à 21h46
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Aurais un screen à nous montrer ou le lien vers la page en question ?
AiYori Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre AiYori
- Inscrit le : 23/08/2012
Voici une capture d'écran.
.Cordialement,
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
define('PATH_TO_ROOT','../../..');
mais :
define('PATH_TO_ROOT','../..');
Tu peux tester, et me donner le contenu de tes deux fichiers ? Et me dire lequel tu exécutes ?
AiYori Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre AiYori
- Inscrit le : 23/08/2012
Lorsque je mets define('PATH_TO_ROOT','../..');, la page ne s'affiche pas.
Voici ce que j'obtiens alors dans /var/log/apache2/error.log
Code :
[Fri Sep 28 16:48:00 2012] [error] [client 127.0.0.1] PHP Warning: require_once(../../kernel/begin.php): failed to open stream: No such file or directory in /home/yul/public_html/PMG/pages/main/main.php on line 34, referer: http://127.0.0.1/~yul/PMG/pages/main/main.php
[Fri Sep 28 16:48:00 2012] [error] [client 127.0.0.1] PHP Fatal error: require_once(): Failed opening required '../../kernel/begin.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/yul/public_html/PMG/pages/main/main.php on line 34, referer: http://127.0.0.1/~yul/PMG/pages/main/main.php
Voici de manière plus concrète mon arborescence (PMG étant le nom du module).
Code :
/PMG
/index.php
/pages
/main
main.php
Le menu pointe vers le fichier index.php. Voici son contenu.
Code PHP :
<?php header('location: ./pages/main/main.php'); ?>
Voici à nouveau le contenu du fichier pages/main/main.php.
Code PHP :
<?php define('PATH_TO_ROOT','../..'); require_once(PATH_TO_ROOT . "/kernel/begin.php"); require_once(PATH_TO_ROOT . "/kernel/header.php"); // require_once(PATH_TO_ROOT . "/kernel/footer.php"); ?>
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
AiYori Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre AiYori
- Inscrit le : 23/08/2012
- en appelant main.php directement dans la ligne URL et en passant par un menu pointant directement vers ce fichier (sans passer par index.php);
- en utilisant une valeur de ../.. ou une valeur de ../../.. pour PATH_TO_ROOT.
J'ai par ailleurs effectué à nouveau le test en partant d'un autre module qui marchait très bien, et pour lequel j'ai uniquement placé la page principale (c'est-à-dire le fichier PHP principal) dans un sous-répertoire, en modifiant la constante PATH_TO_ROOT, et j'obtiens toujours le même affichage dégradé.
Édité par AiYori Le 28/09/2012 à 21h41
AiYori Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre AiYori
- Inscrit le : 23/08/2012
En ce qui me concerne, j'ai réussi à contourner le problème en utilisant systématiquent le fichier index.php, qui est le seul fichier placé à la racine du module.
Code PHP :
<?php if (!array_key_exists('page', $_GET)) { $_GET['page']='main'; } switch ($_GET['page']) { case "descchangeform": require_once("pages/descchange/descchangeform.php"); break; case "main": require_once("pages/main/main.php"); break; default: error_log("'" . $GET['page'] . "' est un nom de page inconnu."); } ?>
Il suffit alors d'appeler la page index.php en précisant dans l'URL, via le paramètre page, la page qu'on souhaite afficher. Ca fait un peu bricolage, mais je trouve cela toujours un peu plus propre que de tout mettre à la racine.
Peut-être cet aspect fera-t-il l'objet d'une évolution future du CMS, qui, néanmoins, est de bonne qualité.
Édité par AiYori Le 09/10/2012 à 15h57
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Désolé, j'ai eu beaucoup de travail, je ne peux pas tout traiter en même temps
AiYori Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre AiYori
- Inscrit le : 23/08/2012
Merci beaucoup.
AiYori Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre AiYori
- Inscrit le : 23/08/2012
Édité par AiYori Le 10/10/2012 à 19h11
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie