php - remove - strip_tags()
PHP cómo encontrar la raíz de la aplicación? (7)
Debes usar las constantes mágicas integradas para encontrar archivos. __FILE__
y __DIR__
. Si está en PHP <5.3, debe usar dirname(__FILE__)
P.ej
require_once __DIR__.''/../../include_me.php'';
$_SERVER[''DOCUMENT_ROOT'']
no siempre garantiza devolver lo que usted esperaría.
Estoy teniendo problemas con mis archivos de inclusión. Parece que no puedo averiguar cómo construir mis URL cuando uso require_once (''somefile.php''). Si trato de usar un archivo de inclusión en más de un lugar donde las estructuras de directorio son diferentes, aparece un error que indica que no se puede encontrar el archivo de inclusión.
En asp.net, para obtener la ruta raíz de mi aplicación, puedo usar ~ / directory / file.aspx. La barra inclinada Tild Forward siempre sabe que estoy haciendo referencia desde la raíz de mi sitio web y que encuentro el archivo sin importar de dónde venga la solicitud desde mi sitio web. Siempre hace referencia a la raíz y busca el archivo desde allí.
PREGUNTA: ¿Cómo puedo obtener la ruta raíz de mi sitio? ¿Cómo puedo hacer esto para poder reutilizar mis archivos de inclusión desde cualquier lugar dentro de mi sitio? ¿Tengo que usar rutas absolutas en mis URL?
¡Gracias!
Definirlo en un archivo de configuración en alguna parte.
Suponiendo que está usando un estilo MVC donde todo se enruta a través de un solo index.php entonces
realpath(''.'');
Le mostrará la ruta al directorio de trabajo actual (es decir, donde está index.php)
Entonces puedes definir esto como
define(''PROJECT_ROOT'', realpath(''.''));
Si no es MVC y lo necesita para trabajar con archivos en subcarpetas, puede codificarlo en un archivo de configuración
define(''PROJECT_ROOT'', ''C:/wamp/www/mysite'');
Entonces cuando incluyas algo que puedes hacer;
include PROJECT_ROOT . ''/path/to/include.php'';
Es bueno poder usar el mismo código en la parte superior de cada script y saber que su página se cargará correctamente, incluso si se encuentra en un subdirectorio. Uso esto, que depende de que sepas cómo se llama tu directorio raíz (normalmente, ''htdocs'' o ''public_html'':
defined(''SITEROOT'') or define(''SITEROOT'', substr($_SERVER[''DOCUMENT_ROOT''], 0, strrpos($_SERVER[''DOCUMENT_ROOT''], ''public_html'')) . ''public_html'');
Con SITEROOT definido de manera consistente, puede acceder a un archivo de configuración y / o componentes de la página sin adaptar las rutas en una base de secuencia de comandos, por ejemplo, a un archivo de configuración almacenado fuera de su carpeta raíz:
require_once SITEROOT . "/../config.php";
Normalmente config.php
archivo config.php
en el directorio ROOT , y en config.php
escribo:
define(''ROOT_DIR'', __DIR__);
Y luego simplemente use la constante ROOT_DIR en todos los demás scripts. Usar $_SERVER[''DOCUMENT_ROOT'']
no es muy bueno porque:
- No siempre coincide con ROOT_DIR
- Esta variable no está disponible en modo CGI (por ejemplo, si ejecuta los scripts de CRON)
Podrías establecer alternativamente el directorio base en tu archivo .htaccess
SetEnv BASE_PATH C:/wamp/www/mysite/
Luego, en PHP puede hacer referencia con $_SERVER[''BASE_PATH'']
Prueba esto:
$_SERVER[''DOCUMENT_ROOT'']
Hay $_SERVER[''DOCUMENT_ROOT'']
que debe tener la ruta raíz a su servidor web.
Editar: Si nos fijamos en la mayoría de los principales programas de PHP. Cuando usa el instalador, generalmente ingresa la ruta completa a la carpeta de la aplicación. El instalador simplemente lo pondrá en un archivo de configuración que se incluye en toda la aplicación. Una opción es usar un archivo de prepago automático para establecer la variable. otra opción es simplemente include_once() el archivo de configuración en cada página que lo necesite. La última opción que sugeriría es escribir su aplicación utilizando bootstrapping que es donde canaliza todas las solicitudes a través de un archivo (generalmente con url_rewrite). Esto le permite configurar / incluir fácilmente variables de configuración en un solo lugar y tenerlas disponibles en todos los scripts.