Io ho un problema simile, sto utilizzando PHP per effettuare l'accesso ad una Base di Dati mediante classi DAO e DCS, ho creato quindi nella cartella "home" il file include.php, che contiene tutti gli include che sono necessari alle classi DAO e DCS per "ciamarsi" a vicenda.
ecco come sono distribuite le classi:
codice:
home\DAO\classiDao
home\DCS\classiDcs
il file include.php si trova in :
questo file contiene tutti gli include che utilizzano le classi DAO e DCS a partire dalla directory di root :
Codice PHP:
include_once($root.'DCS/GestionsDCS.php');
include_once($root.'DAO/GestionsDAO.php'); ...ETC
le classi
codice:
GestionsDCS.php
GestionsDAO.php
eseguono il seguente include:
Codice PHP:
include_once '../include.php';
che gli permette di utilizzare una delle classi presenti nel file include.php
ora il problema che mi si presenta è che le classi DAO e DCS devono essere utilizzate da altre classi, finché queste altre classi si trovano in una directory che si trova allo stesso livello rispetto alle directory DAO e DCS es :
codice:
home\DAO\classiDao
home\DCS\classiDcs
home\DCS\classiCheUtilizzanoDAOeDCS
tutto funziona perfettamente facendo un semplice :
Codice PHP:
include_once '../include.php';
nelle classi che devono utilizzare le classi DAO e DCS.
I problemi arrivano nel momento in cui devo richiamare le class DAO e DCS da classi che si trovano per esempio in una directory :
codice:
home\DAO\classiDao
home\DCS\classiDcs
home\Directory1\Directory2\ClasseUtilizzaDAOeDCS.php
in questo caso faccio l'include è il seguente:
Codice PHP:
include_once '../../include.php';
ma questa volta quando carico la pagina
codice:
home\DCS\ClassiChiamanti\ClasseUtilizzaDAOeDCS.php
ottengo i seguenti messaggi di errore :
codice:
Warning: include_once(../include.php) [function.include-once]: failed to open stream: No such file or directory in home\GestionsDAO.php on line 3
.
Mi sembra come se una volta che faccio l'include da una classe che si trova nella directory:
codice:
home\Directory1\Directory2\
quando da questa directory faccio l'include:
Codice PHP:
include_once '../../include.php';
dato che verranno chiamate delle classi che si trovano ad un "livello gerarchico di directory" inferiore rispetto alla classe chiamante, quando queste chiamano un :
Codice PHP:
include_once '../include.php';
questo viene eseguito come se ci si trovasse nella cartella del primo file chiamante, che si trova ad un livello gerarchico superiore e per questo il server mi restituisce l'errore.Qualcuno sa dirmi come risolvere il problema?Grazie!