<?php
define('ABSPATH', dirname(__FILE__));
Coloque el siguiente código en un archivo ubicado en la carpeta raíz de su aplicación e inclúyalo en cada carga de página.
Luego, simplemente siempre puede hacer $path = ABSPATH . '/path/to/file.php';
independientemente de si su copia local está en un subdirectorio folder
o no.
Si su aplicación ya tiene un archivo que se incluye en cada carga de página, sólo tiene que colocar el código anterior en ese archivo y funcionará.
Solo tenga en cuenta que puede que tenga que agregar llamadas adicionales dirname()
dependiendo de dónde se encuentre ese archivo. Agregue uno para cada directorio que pase desde la raíz de su aplicación web.
Por ejemplo, si su aplicación Web se encuentra en /webapp/
y su "Include global" se encuentra en /webapp/includes/framework/init.php
, a continuación, el código anterior tiene que ser modificado como tal:
define('ABSPATH', dirname(dirname(dirname(__FILE__))));
es decir .: 2 dirname()
llamadas adicionales debido a dos carpetas adicionales a partir de la raíz webapp (includes/framework
)
Aclaración
El código anterior está destinado a estar en un archivo y un archivo solo en su aplicación web. Ese archivo debe incluirse en cada carga de página.
Si ya tiene un archivo que se incluye antes de cualquier proceso (como un archivo de configuración u otro), puede copiar y pegar ese código en ese archivo.
El número de llamadas dirname()
depende de la profundidad del archivo que ha copiado y pegado el código en es relativa al directorio raíz de la aplicación web. Para los ejemplos anteriores, suponga que la raíz de su aplicación web está representada por ~
.
Si copia y pega mi código en ~/abspath.php
, entonces necesita una llamada dirname()
.
Si copia y pega mi código en ~/includes/abspath.php
, entonces necesita dos llamadas dirname()
.
Si copia y pega mi código en ~/includes/config/abspath.php
, entonces necesita tres dirname()
llamadas. Ahora digamos que esa es su ubicación final.
En ~/index.php
, de hacer lo siguiente:
<?php
require_once('includes/config/abspath.php');
y tiene acceso a ABSPATH
.
En ~/dir/someOtherPage.php
que hacer lo siguiente:
<?php
require_once('../includes/config/abspath.php');
y tiene acceso a ABSPATH
.
Es por esto que digo que si ya tiene un archivo que se incluye en cada carga de la página, su más simple sólo para soltar el código anterior en el mismo. Solo asegúrese de modificar la cantidad de llamadas dirname()
en consecuencia. De nuevo, este código debe estar en SÓLO UN ARCHIVO.
Luego se deje que la ruta URL, es una simple cuestión de la eliminación de la DOCUMENT_ROOT
DE ABSPATH
:
$docRoot = rtrim($_SERVER['DOCUMENT_ROOT'], '/');
define('RELADDR', substr(ABSPATH, strlen($docRoot));
¿Necesito codificarlo? ? No hay nada que pueda agregar, digamos DOC_ROOT/myapp/index.php, que pueda descubrir programáticamente que esta es la raíz de la aplicación. – scottm
Si estás en /myapp/index.php, 'dirname (__ FILE __)' (= "dame el directorio actual de este archivo") te dará la raíz de la aplicación definitiva.Puedes almacenar eso en una constante y usarlo. –