Tengo esta estructura de carpetas en mi proyecto PHP. (esto es como se muestra en eclips)
-MySystem
+Code
+Data_Access
-Public_HTML
+css
+js
+Templates
-resources
Cuando pruebo este código
echo $_SERVER['DOCUMENT_ROOT']
la salida es
D: / espacio de trabajo
¿Cómo puedo obtener la ruta al directorio raíz del sistema ( MySystem
), sin codificar el nombre de la carpeta?
__DIR__
. Es relativo al archivo en sí, por lo que si está en una inclusión, dentro de un subdirectorio, no devolverá solo su directorio raíz.Cuando dices eso
contiene esta ruta:
Entonces
D:
es lo que estás buscando, ¿no? En ese caso, puede explotar la cadena con barras y devolver la primera:Esto generará el directorio raíz del servidor.
Actualización: cuando usa la constante en
DIRECTORY_SEPARATOR
lugar de la barra inclinada codificada ('/'
), este código también funciona en Windows.Actualización 2: La
$_SERVER
variable global no siempre está disponible. En la línea de comando (cli) por ejemplo. Entonces deberías usar en__DIR__
lugar de$_SERVER['DOCUMENT_ROOT']
.__DIR__
devuelve la ruta del archivo php en sí.fuente
__DIR__
lugar de$_SERVER['DOCUMENT_ROOT']
.usa la función PHP:
getcwd()
Obtiene el directorio de trabajo actual.
fuente
Quiero señalar la forma en que Wordpress maneja esto:
Como Wordpress se usa mucho en toda la web y también funciona bien a nivel local, tengo mucha confianza en este método.
fuente
puedes probar:
$_SERVER['PATH_TRANSLATED']
citar:
fuente: php.net/manual
fuente
fuente
Resumen
Este ejemplo asume que siempre sabe dónde está la carpeta raíz de Apache '/ var / www /' y está tratando de encontrar la siguiente ruta de carpeta (por ejemplo, '/ var / www / my_website_folder'). También esto funciona desde un script o el navegador web, por lo que hay un código adicional.
Código PHP7
Ejemplo
Salida:
Detalles:
Básicamente, primero intenta obtener DOCUMENT_ROOT si contiene '/ var / www /' y luego úselo, de lo contrario, obtenga el directorio actual (que existe dentro del proyecto) y obtiene el siguiente valor de ruta basado en el recuento de la ruta $ root. Nota: se agregaron declaraciones rtrim para garantizar que la ruta regrese terminando con '/' en todos los casos. No comprueba si requiere ser más grande que / var / www / también puede devolver / var / www / como posible respuesta.
fuente