2009-12-11 5 views
5

La structure du projet en cours, je travaille sur quelque chose comme:PHP include dans un include (répertoire différent)

  • racine/index.php
  • root/includes/php/first.php
  • root/includes/php/functions.php

Alors index.php comprend first.php:

<?php include_once("includes/php/first.php"); ?> 

Normalement alors mon first.php appellerait des fonctions telles que:

<?php include_once("includes/php/functions.php"); ?> 

En supposant que le rapport serait encore de la page d'index cependant lors du déplacement vers un nouveau serveur, il ne fonctionne pas. J'ai essayé de faire le chemin relatif de first.php:

include_once("functions.php"); 

Et cela semble fonctionner maintenant.

Ce qui serait normalement la bonne façon de le faire? Je veux lancer ce projet afin que n'importe qui puisse l'installer.

Répondre

11

Les références sont relatives au fichier faisant l'inclusion. Si vous voulez vraiment vous assurer et d'éviter toute ambiguïté, vous pouvez le faire:

include dirname(__FILE__) . "/functions.php"; 
+0

Super merci! Je ne sais pas pourquoi cela a fonctionné dans l'autre sens, mais cette solution va résoudre les problèmes futurs – kilrizzy

+0

+1 - J'allais suggérer d'utiliser l'élément '$ _SERVER ['SCRIPT_FILENAME']' pour faire la même chose, mais c'est beaucoup mieux. – Atli

+2

J'ai tendance à créer quelques définitions pour mon application PHP et stocker mon root_path et web_path là pour une utilisation tout au long – Andrew

0

J'utilise toujours:

include ($_SERVER['DOCUMENT_ROOT']."/include/php/functions.php"); 

De cette façon, vous savez toujours où vous (en venant de la racine) et votre code peut être copié d'un endroit à l'autre.