info - php path to file
Consigue 2 niveles desde dirname(__FILE__) (7)
Como lo sugiere @geo, aquí hay una función de nombre de directorio mejorada que acepta un segundo parámetro con la profundidad de una búsqueda de nombre de directorio:
/**
* Applies dirname() multiple times.
* @author Jorge Orpinel <[email protected]>
*
* @param string $path file/directory path to beggin at
* @param number $depth number of times to apply dirname(), 2 by default
*
* @todo validate params
*/
function dirname2( $path, $depth = 2 ) {
for( $d=1 ; $d <= $depth ; $d++ )
$path = dirname( $path );
return $path;
}
Nota: que @todo puede ser relevante.
El único problema es que si esta función está en una inclusión externa (por ejemplo, util.php) no puede usarla para incluir dicho archivo: B
¿Cómo puedo devolver la ruta del archivo actual, solo 2 directorios arriba?
Así que si mi URL del archivo actual está devolviendo theme/includes/functions.php
¿Cómo puedo devolver "tema /"
Actualmente estoy usando
return dirname(__FILE__)
Esta es una vieja pregunta, pero sigue siendo relevante.
Utilizar:
basename(dirname(__DIR__));
para devolver solo el segundo nombre de la carpeta principal: "tema" en este caso.
Incluso más simple que dirname(dirname(__FILE__));
está utilizando __DIR__
dirname(__DIR__);
que funciona desde php 5.3 en.
Tarde a la fiesta, pero también puedes hacer algo como abajo, usando /../../
tantas veces como sea necesario para subir los niveles de directorio.
$credentials = require __DIR__ . ''/../App/Database/config/file.php'';
Que es el equivalente a:
$credentials = dirname(__DIR__) . ''/App/Database/config/file.php'';
El beneficio es que evita tener que anidar dirname como:
dirname(dirname(dirname(__DIR__))
Tenga en cuenta que esto se probó en un servidor IIS; no estoy seguro acerca de un servidor Linux, pero no veo por qué no funcionaría.
PHP 7
return dirname(__FILE__, 2);
PHP 4 y superior
return dirname(dirname(__FILE__));
Con PHP7 puede aumentar el árbol de directorios especificando el parámetro de niveles, mientras que PHP pre-7 requerirá un mayor anidamiento de la función dirname
.
[ web root ]
/ config.php
[ admin ]
[ profile ]
/ somefile.php
¿Cómo puedes incluir config.php en somefile.php? Debe usar dirname con la estructura de 3 directorios del archivo somefile.php actual.
require_once dirname(dirname(dirname(__FILE__))) . ''/config.php'';
dirname(dirname(dirname(__FILE__))) . ''/config.php''; # 3 directories up to current file
require_once(dirname(__FILE__) . "/../../functions.php");