configurar - php include path relative
llamada incluye desde un archivo incluido (2)
Entonces, examinando esta estructura de directorios
- /include_one.php
- /include_two.php
- /directory/main_file.php
Supongamos que estoy en /directory/main_file.php y que llamo include(''../include_one.php'');
dentro de include_one.php , para incluir include_two.php . ¿Debo llamar a include(''include_two.php);
o include(''../include_two.php'');
?
Entonces, mi pregunta es: cuando se incluye un archivo, ¿se cambia la ''ruta de inclusión relativa'' al archivo incluido, o permanece en el archivo principal incluido?
Soy consciente de que la mejor alternativa sería tener un config.php que contenga el root_path, sin embargo, esto no es posible en esta etapa.
actualizar:Entonces, no estoy seguro de quién tiene la razón, ya que aquí está mi prueba
estructura de directorios
/include.php
/start/start.php
/folder1/includeone.php
/folder1/folder2/includetwo.php
Y aquí está el contenido de cada archivo.
start.php
<?php
echo ''including ../include.php<br />'';
include(''../include.php'');
?>
incluir.php
<?php
echo ''including folder1/includeone.php<br />'';
include(''folder1/includeone.php'');
?>
includeone.php
<?php
echo ''including folder2/includetwo.php<br />'';
include(''folder2/includetwo.php'');
?>
incluyendowo.php
<?php
echo ''done<br />'';
?>
y la salida es
incluyendo ../include.php
incluyendo folder1 / includeone.php
incluyendo folder2 / includetwo.php
hecho
Estoy usando este código:
if(!isset($TO_HOME_DIR)) $TO_HOME_DIR="../";
E incluyo un archivo:
include_once($TO_HOME_DIR."common/include_one.php");
Con if(!isset($TO_HOME_DIR))
, no es importante cuánto incluye un archivo en el archivo incluido en el archivo incluido en el archivo incluido ..... Solo se utiliza la declaración del primer archivo -y el archivo principal- $ TO_HOME_DIR.
La segunda ventaja de este enfoque es que si cambia el directorio del archivo, solo necesita cambiar una línea de código; Declaración $ TO_HOME_DIR. :)
La "ruta de inclusión relativa" no se desplaza al archivo incluido ... Lo que significa que el uso de rutas relativas generalmente termina mal.
Una solución mejor, que uso casi todo el tiempo, es trabajar siempre con rutas absolutas, y puede combinar parientes y rutas absolutas usando __DIR__
, para obtener el directorio que contiene el archivo donde está escrito.
Por ejemplo, en include_one.php
, include_one.php
:
require_once __DIR__ . ''/include_two.php'';
Para incluir el archivo include_two.php
que está en el mismo directorio que include_one.php
.
Y, en main_file.php
, main_file.php
:
require_once __DIR__ . ''/../include_one.php'';
Para incluir el archivo include_one.php
que es un directorio arriba.
Con eso, su inclusión funcionará, no importa desde qué archivo se llamen.