2009-09-08 8 views
1

Lorsque j'utilise php include pour inclure une page dans mon site web, tous les chemins dans le fichier que j'ai inclus se foirent. La page incluse agit comme si elle se trouvait dans le même dossier que la page im.php inclure, tous les chemins se foirent

Est-il possible d'éviter/de résoudre ce problème?

+3

Vous pensez donc que les fichiers inclus ne seront pas inclus? –

Répondre

1

Quelle est votre chemin d'inclusion réglé sur? Si included.php n'est pas le même répertoire que page.html, vous pouvez ajouter à votre chemin d'inclusion existant.

<?php 
$path = '/path/to/includes'; 
set_include_path(get_include_path() . PATH_SEPARATOR . $path); 
?> 

Essayez the PHP manual

1

Vous pourriez avoir besoin de définir correctement chemin d'inclusion, par exemple via:

set_include_path(get_include_path() . PATH_SEPARATOR . 'YourPath'); 

Ensuite, il vous suffit d'inclure comme si elle était est le même répertoire:

include 'FileName.php'; 
0

Non, est le comportement par défaut de la fonction php include: Il copie en gros le contenu du fichier inclus dans le fichier inclus. De cette façon, les instructions dans le fichier inclus se comportent comme si elles étaient dans le fichier inclus (parce qu'elles sont en quelque sorte).

Vous devez soit refactoriser les instructions contenues dans votre fichier inclus afin qu'elles puissent fonctionner à partir du dossier du fichier inclus, ou ajouter le dossier du fichier inclus au chemin d'inclusion.

2

Une façon de tenter de contourner ce problème est en incluant toujours d'où le fichier est compris l'autre fichier est basé:

$here = dirname(__FILE__); 
include($here."/../include.php"); 
// will include a file *allways* one level up from where *this* file is located 
// and not the file that started the execution of the script. 

J'ai parfois des fichiers qui sont accessibles à partir de plusieurs endroits différents et le chemin du fichier inclus peut devenir un peu difficile à gérer. J'essaie donc généralement d'inclure un fichier de configuration à un point connu puis de définir des chemins vers des points d'inclusion communs.

// from a common config file 
define("PATH_TO_CLASS", dirname(__FILE__)."/../class"); 
define("PATH_TO_MEDIA", dirname(__FILE__)."/../assets/media"); 

Ensuite, vous pouvez utiliser dans le fichier que vous avez inclus le fichier de configuration comme:

include dirname(__FILE__)."/../config.php"; 
include PATH_TO_CLASS."/snassy.class.php"; 
+0

Bon tour. Résolu mon mal de tête. –

0

Une autre réponse pour vous. Si les choses sont immuables pour une raison ou une autre, le succès est au rendez-vous. Par exemple, les utilisateurs mobiles venaient et utilisaient un répertoire différent du site principal, mais voulaient utiliser toutes les fonctions et classes du site principal, donc je devrais appeler le code chdir(/to/the/main/site/folder); juste avant d'appeler le code commun, ce qui nécessitait différents chemins d'accès. J'utiliserais avec parcimonie si ... comme les choses peuvent devenir confuses.

Questions connexes