DOCUMENT_ROOT non è completo, manca la cartella del dominio
-
28-10-2019 - |
Domanda
Finora ho cercato in molti thread ma non riesco a trovare una soluzione. All'interno di uno dei miei script php sto cercando di ottenere una radice del documento del server ma il valore che ottengo non è completo, semplicemente manca la cartella del dominio. Credo che sia dovuto alla condivisione di hosting o altro.
Ecco il modo in cui sto usando attualmente:
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
e il percorso che ottengo è come:
/home/content/01/0151247/html
anche se so che dovrebbe essere come:
/home/content/01/0151247/html/mydomain
Lo so come l'ho confrontato con SCRIPT_NAME e vedo il miodominio nel percorso.
Spero che qualcuno possa dirigermi.
Grazie e scusa per aver probabilmente fatto un'altra domanda mille volte la stessa sulla community, ho davvero provato le cose da qui, niente mi aiuta finora.
<⇨UPDATE
sfortunatamente non posso semplicemente usare il mio file index con DIR poiché è una configurazione wordpress e sto lavorando su una cartella separata in cui includo alcune funzionalità wordpress ma per questo ho bisogno di document_root. Se questo aiutasse.
<⇨UPDATE
apparentemente il modo seguente ha risolto il mio caso, forse un giorno aiuterà qualcuno:
realpath($_SERVER["SUBDOMAIN_DOCUMENT_ROOT"]);
fondamentalmente a causa della configurazione del server e del dominio configurato come sottodominio.
Grazie a tutti coloro che hanno partecipato.
Soluzione
Prima di PHP 5.3 è possibile inserire un file nella directory di cui si desidera il percorso e definire una costante:
define('ROOT_DIR', dirname( __FILE__ ));
Dopo la 5.3 puoi semplicemente fare:
define('ROOT_DIR', __DIR__);
L'idea è che questo sia in config.php
di qualche tipo che viene incluso ogni volta che viene eseguita l'applicazione.
Altri suggerimenti
<⇨UPDATE
Nel file di configurazione, puoi semplicemente aggiungere la variabile DOCUMENT_ROOT
:
$_SERVER['DOCUMENT_ROOT'] = $_SERVER['DOCUMENT_ROOT'] . '/mydomain';
E questo dovrebbe occuparsene per te.
Vecchia soluzione
Il DOCUMENT_ROOT
è una variabile d'ambiente impostata dal server.Quindi, se questo è su hosting condiviso, non puoi cambiarlo.Un'alternativa è impostare una propria costante su di esso, quindi in un file di tipo config
incluso nelle tue pagine puoi fare qualcosa come:
define('DOCUMENT_ROOT', $_SERVER['DOCUMENT_ROOT'] . '/mydomain');
E poi usa quella costante al posto di $_SERVER['DOCUMENT_ROOT']
.L'altra opzione è contattare il tuo host e informarti, forse è stata una loro svista e lo risolveranno.
<”EDIT
Probabilmente usare il __DIR__
come altri hanno scritto è il modo migliore, poiché il DOCUMENT_ROOT
può essere impostato su elementi diversi e almeno con il __DIR__
dovresti ottenere ogni volta una directory accurata.
Personalmente, per ottenere la radice di una cartella in PHP, lo uso nel file my index:
define('ROOT', dirname(__FILE__)); // __DIR__ will work under PHP 5.3