otro otra llamar incluir include_once funcion ejemplo desde carpeta archivo php

php - otra - ¿Por qué debería usar dirname(__ FILE__) en una instrucción include o include_once?



llamar funcion php desde otro php (3)

Digamos que tengo una estructura de directorios (falsa) como:

.../root/ /app bootstrap.php /scripts something/ somescript.php /public index.php

Ahora suponga que bootstrap.php tiene algún código incluido para configurar las conexiones de bases de datos o algún otro tipo de cosas de boostrapping.

Supongamos que desea incluir un archivo en la carpeta boostrap.php llamada init.php . Ahora, para evitar escanear toda la ruta de include ''init.php'' con include ''init.php'' , puede usar include ''./init.php'' .

Sin embargo, hay un problema. Eso ./ será relativo a la secuencia de comandos que incluyó bootstrap.php , no bootstrap.php . (Técnicamente hablando, será relativo al directorio de trabajo).

dirname(__FILE__) permite obtener una ruta absoluta (y así evitar una búsqueda de ruta de inclusión) sin depender del directorio de trabajo que es el directorio en el que reside bootstrap.php .

(Nota: desde PHP 5.3, puede usar __DIR__ en lugar de dirname(__FILE__) .

Ahora, ¿por qué no solo usar include ''init.php''; ?

Por extraño que parezca al principio,. no se garantiza que esté en la ruta de inclusión. A veces, para evitar que las personas inútiles de stat() eliminen de la ruta de inclusión, cuando rara vez incluyen archivos en el mismo directorio (¿por qué buscar en el directorio actual cuando se sabe que incluye nunca va a estar allí?).

Nota: Aproximadamente la mitad de esta respuesta es dirección en una publicación bastante antigua: ¿qué hay mejor de require (dirname (__ FILE __). ''/''. ''MyParent.php'') que solo require (''myParent.php'')?

He visto esto:

<?php include( dirname(__FILE__) . DIRECTORY_SEPARATOR . ''my_file.php''); ?>

¿Por qué tendría que hacer esto alguna vez? ¿Por qué me tomaría la molestia de obtener el nombre de directorio y luego concatenarlo con un separador de directorio y un nuevo nombre de archivo?

Es el código anterior no equivalente a esto:

<?php include( ''my_file.php'' ); ?>

??

El documento de PHP dice:

Los archivos se incluyen en función de la ruta del archivo proporcionada o, si no se proporciona ninguno, se especifica la ruta de acceso include. Si el archivo no se encuentra en include_path, include () finalmente comprobará en el directorio propio del script de llamada y en el directorio de trabajo actual antes de fallar. El constructo include () emitirá una advertencia si no puede encontrar un archivo; este es un comportamiento diferente de require (), que emitirá un error fatal.


Si desea que el código se ejecute en varios servidores con diferentes entornos, entonces necesitamos usar dirname ( FILE ) en una instrucción include o include_once. la razón es la siguiente. 1. No dé una ruta absoluta para incluir archivos en su servidor. 2. Calcule dinámicamente la ruta completa como ruta absoluta.

Use una combinación de dirname ( FILE ) y las siguientes llamadas consigo mismo hasta que llegue a la página de inicio de su ''/myfile.php''. Luego adjunte esta variable que contiene la ruta a sus archivos incluidos.


Usé esto a continuación si esto es lo que estás pensando. Funcionó bien para mí.

<?php include $_SERVER[''DOCUMENT_ROOT'']."/head_lib.php"; ?>

Lo que intentaba hacer era un archivo pulla llamado /head_lib.php desde la carpeta raíz. No generaría nada para construir la página web. El encabezado, el pie de página y otras características clave en los directorios secundarios nunca aparecerán. Hasta que lo hice arriba, funcionaba como un campeón.