DOCUMENT_ROOT no está completo, falta la carpeta del dominio
-
28-10-2019 - |
Pregunta
He buscado muchos hilos hasta ahora pero parece que no puedo encontrar una solución.Dentro de uno de mis scripts php, estoy intentando obtener la raíz del documento del servidor, pero el valor que obtengo no está completo, simplemente falta la carpeta del dominio.Creo que se debe a compartir hosting o algo más.
Esta es la forma actual que estoy usando:
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
y el camino que obtengo es como:
/home/content/01/0151247/html
aunque sé que debería ser como:
/home/content/01/0151247/html/mydomain
Lo sé porque lo comparé con SCRIPT_NAME y veo mi dominio allí en la ruta.
Espero que alguien pueda orientarme.
Gracias y perdón por probablemente hacer mil veces la misma pregunta en la comunidad. Realmente intenté cosas desde aquí, nada me ayuda hasta ahora.
ACTUALIZAR
desafortunadamente no puedo simplemente usar mi archivo de índice con dirección ya que es una configuración de WordPress y estoy trabajando en una carpeta separada donde incluyo algunas funciones de WordPress, pero para eso necesito un document_root.Si eso ayudara.
ACTUALIZAR
aparentemente la siguiente manera resolvió mi caso, tal vez ayude a alguien algún día:
realpath($_SERVER["SUBDOMAIN_DOCUMENT_ROOT"]);
Básicamente por la configuración del servidor y el dominio configurado como subdominio.
Gracias a todos los que participaron.
Solución
Antes de PHP 5.3, puedes colocar un archivo en el directorio cuya ruta desees y definir una constante:
define('ROOT_DIR', dirname( __FILE__ ));
Después de 5.3 puedes hacer:
define('ROOT_DIR', __DIR__);
La idea es que esto sería en config.php
de algún tipo que se incluye cada vez que se ejecuta la aplicación.
Otros consejos
<×UPDATE
En el archivo de configuración, puede agregar la variable DOCUMENT_ROOT
:
$_SERVER['DOCUMENT_ROOT'] = $_SERVER['DOCUMENT_ROOT'] . '/mydomain';
Y eso debería solucionarlo por ti.
Solución anterior
El DOCUMENT_ROOT
es una variable de entorno establecida por el servidor.Entonces, si se trata de un alojamiento compartido, no puede cambiarlo.Una alternativa es establecer su propia constante, por lo que en un archivo de tipo config
que se incluye en sus páginas puede hacer algo como:
define('DOCUMENT_ROOT', $_SERVER['DOCUMENT_ROOT'] . '/mydomain');
Y luego use esa constante en lugar de $_SERVER['DOCUMENT_ROOT']
.La otra opción es contactar a tu anfitrión y preguntar al respecto, tal vez fue un descuido de su parte y ellos lo arreglarán.
<×EDIT
Probablemente usar el __DIR__
como otros han publicado es la mejor manera, ya que DOCUMENT_ROOT
puede configurarse para diferentes elementos y al menos con __DIR__
debería obtener un directorio preciso cada vez.
Personalmente, para obtener la raíz de una carpeta en PHP, uso esto en mi archivo de índice:
define('ROOT', dirname(__FILE__)); // __DIR__ will work under PHP 5.3