2010-07-15 5 views
0

Hai. J'ai un site qui est vraiment bizarre, et qui me cause des problèmes. Cette est structure simplifiéeInclure chemin et structure étrange

public_html 
- adm 
--- raport 
------ raportpdf.php 
--- class 
------ Bonus 
--------- Bonus_DAO.class.php 
------ config.php 
--- raport.php 
- index.php 

So. 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()); 

intérieur Bonus_DAO.class.php est quelque chose comme

require_once('./adm/class/config.php'); 

Raportpdf.php est appelé par index.php - il envoie son contenu sans aucune erreur au courrier. Mais quand je veux accéder raport.php, j'ai 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?

Répondre

1

Insérez une ligne comme celle-ci dans un fichier qui est inclus dans cette structure (fichier DOIT doit être situé dans votre répertoire racine, quelque chose comme un config.php ou j'utilise habituellement init.php) .

define("ROOT_DIR",dirname(__FILE__)); 

Alors, où vous recevez les erreurs (ou synonymie dans votre code pour cette question - où vous avez besoin()/include()), ajoutez ROOT_DIR "/ path/to/file" avant. . Qu'est-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/example". Maintenant, insérer cette ligne dans un fichier que j'ai inclus, etc., et changer la ligne require à ceci:

require_once(ROOT_DIR."/adm/class/config.php"); 

La ligne ci-dessus se traduit essentiellement sur ce (en supposant que je l'define(); déclaration dans un fichier situé dans/home2/exemple)

require_once("/home2/example/adm/class/config.php"); 

donc, fondamentalement, c'est un moyen facile de donner des chemins statiques un élément dynamique de sorte que vous ne rencontrerez pas ce problème à nouveau!

Bonne chance!
Dennis M.

+0

Merci! Il fonctionne comme un charme. – Misiur