2010-04-11 3 views
11

Je veux trouver une méthode pour inclure des fichiers basés sur le chemin du fichier en cours .. par exemple:PHP dynamique inclure, en fonction chemin du fichier en cours

Je « website.com/templates/name1/index.php ", this" index.php devrait être un fichier unique que j'utiliserai dans beaucoup de répertoires différents à différentes profondeurs, donc je veux rendre le code universel donc je n'ai pas besoin de changer quelque chose dans ce fichier ..

Donc, si ce "index.php" est situé dans

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

qu'il devrait inclure le fichier situé ici:

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

un autre exemple:

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

qu'il devrait inclure le fichier situé ici:

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

Aussi je veux dépassement "Attention: include_once() [function.include-once]: http: // wrapper est désactivé dans la configuration du serveur par allow_url_include = 0 "type d'erreur .. car il est désactivé et dangereux ..

Existe-t-il un moyen d'y parvenir? Merci!

Répondre

31

Je pense que vous devez utiliser __FILE__ (il a deux traits de soulignement au début et à la fin du nom) et DIRECTORY_SEPARATOR constantes pour travailler avec des fichiers basés sur le chemin du fichier en cours.

Par exemple:

<?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'); 

En utilisant DIRECTORY_SEPARATOR constante est plus sûr que d'utiliser des symboles "/" (ou "\"), parce que les séparateurs de répertoire Windows et * nix sont différents et votre L'interprète utilisera la bonne valeur sur les différentes plates-formes.

0

je venais de faire quelque chose d'aussi simple que:

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

Et votre problème d'emballage HTTP ne semble pas avoir quelque chose à voir avec cela. Que voulez-vous dire par l'envahir? Vous ne voulez généralement jamais faire une télécommande.

-1

Pourquoi ne pas le faire de la manière simple:

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

Et puis finalement

$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

En général, les réponses de code seulement sont considérés comme de mauvaise qualité. Peut-être pourriez-vous nous donner un petit aperçu de ce qui se passe ici? – corsiKa

Questions connexes