Inclure le chemin et la structure étrange
-
16-09-2020 - |
Question
hai. J'ai un site qui est vraiment bizarre, et maintenant me fait mal. Ceci est une structure simplifiée
public_html
- adm
--- raport
------ raportpdf.php
--- class
------ Bonus
--------- Bonus_DAO.class.php
------ config.php
--- raport.php
- index.php
Alors.Index.php est un chargeur géant.Il a des lignes: (mais je ne pense pas qu'ils font diffrence)
set_include_path('lib/DB' . PATH_SEPARATOR . get_include_path());
set_include_path('lib/PHPLOT' . PATH_SEPARATOR . get_include_path());
set_include_path('config' . PATH_SEPARATOR . get_include_path());
set_include_path('view' . PATH_SEPARATOR . get_include_path());
set_include_path('controller' . PATH_SEPARATOR . get_include_path());
set_include_path('model' . PATH_SEPARATOR . get_include_path());
à l'intérieur de bonus_dao.class.php est quelque chose comme
require_once('./adm/class/config.php');
RaportPDF.php s'appelle via index.php - il envoie son contenu sans erreur de courrier. Mais quand je veux accéder à raport.php, j'ai une erreur comme:
Warning: require_once(./adm/class/config.php) [function.require-once]: failed to open stream: No such file or directory in /home/panele/domains/blahblah/public_html/adm/class/Bonus/Bonus_DAO.class.php on line 2
Fatal error: require_once() [function.require]: Failed opening required './adm/class/config.php' (include_path='.:/usr/local/lib/php') in /home/panele/domains/blahblah/public_html/adm/class/Bonus/Bonus_DAO.class.php on line 2
Comment puis-je résoudre ce problème?
La solution
Insérez une ligne telle que la suivante dans un fichier incluse dans cette structure de la vôtre (ce fichier inclus doit être localisé dans votre répertoire racine, quelque chose comme un config.php ou j'utilise habituellement init.php).
define("ROOT_DIR",dirname(__FILE__));
Ensuite, où vous recevez les erreurs (ou pour la synonymie de votre code dans votre code - n'importe où vous avez besoin () / Inclure ()), ajoutez root_dir. "/ chemin / vers / fichier" avant de le faire. Ce que cela fait est de donner le chemin absolu vers le répertoire racine, puis vous spécifiez simplement le répertoire dans la racine que vous recherchez. Par exemple, mon répertoire racine est "/ home2 / exemple". Maintenant, j'insère cette ligne dans un fichier que j'ai inclus, etc. et modifier la ligne requise sur ceci:
require_once(ROOT_DIR."/adm/class/config.php");
La ligne ci-dessus se traduit par cela (en supposant que j'ai utilisé la définition (); instruction dans un fichier situé dans / home2 / exemple)
require_once("/home2/example/adm/class/config.php");
Donc, fondamentalement, il s'agit d'un moyen facile de donner des chemins statiques un élément dynamique afin que vous ne puissiez plus rencontrer ce problème!
bonne chance!
Dennis m.