Includere percorso e struttura strana
-
16-09-2020 - |
Domanda
hai. Ho il sito che è davvero strano, e ora mi sta facendo dei problemi. Questa è una struttura semplificata
public_html
- adm
--- raport
------ raportpdf.php
--- class
------ Bonus
--------- Bonus_DAO.class.php
------ config.php
--- raport.php
- index.php
.
così.Index.php è un caricatore gigante.Ha linee: (ma non penso che stiano facendo 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());
.
all'interno bonus_dao.class.php è qualcosa come
require_once('./adm/class/config.php');
.
ratorpdf.php è chiamato tramite index.php - invia il suo contenuto senza alcun errore a posta. Ma quando voglio accedere a ratort.php, ho un errore come:
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
.
Come posso risolverlo?
Soluzione
Inserire una linea come la seguente in un file incluso in questa struttura del tuo (questo file incluso deve si trova nella directory principale, qualcosa come un config.php o di solito uso init.php).
define("ROOT_DIR",dirname(__FILE__));
.
Quindi, dove si ricevono gli errori (o per la sinesinymy all'interno del tuo codice - ovunque hai bisogno () / includere ()), aggiungere root_dir. "/ percorso / a / file" prima di esso. Ciò che sta facendo è dare il percorso assoluto alla directory principale e quindi specificare semplicemente la directory all'interno della radice che stai cercando. Per motivi di esempio, la mia directory principale è "/ home2 / esempio". Ora, inserisco questa riga in un file che ho incluso, ecc. E modificare la riga di richiesta a questo:
require_once(ROOT_DIR."/adm/class/config.php");
.
La riga sopra si traduce in pratica (supponendo che abbia usato il define (); dichiarazione all'interno di un file situato in / home2 / esempio)
require_once("/home2/example/adm/class/config.php");
.
Così fondamentalmente, questo è un modo semplice per dare percorsi statici un elemento dinamico in modo da non arrivare a questo problema!
Buona fortuna!
Dennis m.