2010-04-11 44 views
11

Quiero encontrar un método para incluir algunos archivos en función de la ruta del archivo actual .. por ejemplo:PHP dinámicos incluyen basa en la ruta del archivo actual

tengo "website.com/templates/name1/index.php ", este" index.php debe ser un archivo único que usaré en muchos directorios diferentes en diferentes profundidades, así que quiero hacer que el código sea universal, así que no necesito cambiar nada dentro de este archivo ...

Por lo tanto, si este "index.php" se encuentra en

"website.com /templates/name1/index.php"

de lo que debería incluir el archivo se encuentra aquí:

"website.com/content /templates/name1/content.php"

otro ejemplo:

"website.com /templates/name2/index.php"

de lo que debería incluir el archivo se encuentra aquí:

"website.com/content /templates/name2/content.php"

También quiero invadido "Advertencia: include_once() [function.include una vez]: http: // envoltorio está desactivado en la configuración del servidor por allow_url_include = 0 "tipo de error ... porque está deshabilitado e inseguro ...

¿Hay alguna manera de lograr esto? ¡Gracias!

Respuesta

31

creo que es necesario utilizar __FILE__ (tiene dos guiones al inicio y al final del nombre) y DIRECTORY_SEPARATOR constantes para trabajar con archivos en función de la ruta del archivo actual.

Por ejemplo:

<?php 
    // in this var you will get the absolute file path of the current file 
    $current_file_path = dirname(__FILE__); 
    // with the next line we will include the 'somefile.php' 
    // which based in the upper directory to the current path 
    include(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'somefile.php'); 

Usando DIRECTORY_SEPARATOR constante es más seguro que el uso de "/" (o "\") símbolos, ya que Windows y * separadores de directorios nix son diferentes y su el interpretador utilizará el valor adecuado en las diferentes plataformas.

0

que acababa de hacer algo tan simple como:

$dir = str_replace('website.com/','website.com/content/',__DIR__); 
include "$dir/content.php"; 

Y no parece su problema envoltura http tener nada que ver con esto. ¿Qué quieres decir con invadirlo? Por lo general, nunca desea hacer una inclusión remota.

-1

por qué no hacerlo en la forma más sencilla:

dirname(__FILE__); //Current working directory 
dirname(dirname(__FILE__)); //Get path to current working directory 

Y, finalmente,

$include_path = $dir_path . 'file_to_include.php'; 
include $include_path; 
2
<?php 
if (isset($_GET['service'])) { 
    include('subContent/serviceMenu.html'); 
} else if (isset($_GET['business'])) { 
    include('subContent/business_menu.html'); 
} else if (isset($_GET['info'])) { 
    include('subContent/info_menu.html'); 
} 
else { 
    include('subContent/banner.html'); 
} 
?> 
<a href="http://localhost/yourpage.php?service" /> 
+1

general, el código de sólo respuestas se consideran de mala calidad. Tal vez podría proporcionar un fragmento de explicación de lo que está sucediendo aquí? – corsiKa

Cuestiones relacionadas