2010-10-20 2 views
0

J'utilise le schéma suivant pour inclure des fichiers PHP:Besoin d'aide avec PHP "include" - Comment enregistrer le chemin vers mon site en variable?

require($_SERVER['DOCUMENT_ROOT'] . "Path/To/My/Website/Path/To/My/File.php"); 

Je voudrais enregistrer dans une variable

$_SERVER['DOCUMENT_ROOT'] . 'Path/To/My/Website' 

, dire $my_website et écrire:

require("$my_website/Path/To/My/File.php"); 

De cette façon , si je décide de changer le chemin vers mon site Web, je devrai le modifier seulement dans un endroit dans mon code.

Certains fichiers PHP peuvent être inclus plusieurs fois et à partir de différents niveaux de répertoires. Par exemple:

$_SERVER['DOCUMENT_ROOT'] 
         Path 
          To 
           My 
           Website 
             Dir1 
              a.php 
             Dir2 
              b.php that includes a.php 
             Dir3 
              Dir4 
               c.php that includes a.php 

Cependant, je ne peux pas penser comment faire ceci.

Veuillez nous suggérer.

+0

I Peut-être que vous ne comprenez pas ce que vous voulez exactement, mais ne pourriez-vous pas simplement ajouter le chemin à vos chemins d'inclusion et être complètement relatif? Ou simplement définir le BasePath dans votre bootstrap ... ou ce qui vous empêche d'écrire 'require ($ my_website." /Path/To/My/File.php ");'? (mais bien sûr, pour définir quelque chose serait mieux alors de jeter cette variable autour) – Hannes

+0

Seule une configuration avec un point d'entrée unique pourrait vous permettre de le faire en utilisant PHP. Sinon, certaines modifications de configuration du serveur Web sont requises. Des choses évidentes. –

Répondre

1

utilisez include path - vous rendra la vie plus simple (vous pouvez le contrôler même de .htaccess).

1

Je peux penser à deux façons de le faire:

  1. Créer un fichier commun, inclus dans tous les fichiers, que définir la variable $my_website
  2. Ajoutez votre chemin d'un site Web à votre include_path de sorte que vous n » t doivent utiliser vous chemin d'un site Web à tous pour inclure vos fichiers (require "Path/To/My/File.php";)
+0

Dans # 1: comment inclueriez-vous ce fichier commun (quel chemin utiliseriez-vous)? Supposons dans mon exemple ci-dessus que 'a.php' est le fichier commun. –

+0

Je vais le mettre dans mon site web racine et l'inclure en utilisant le chemin relatif: cela fonctionnera tant que vous ne changez pas votre structure de répertoire. Donc pour votre exemple b.php -> require '../Dir1/a.php' et c.php -> require '../../Dir1/a.php'. Mais comme d'autres réponses noté, il est préférable d'utiliser include_path – Keeper

0

I défini des constantes pour base_path et base_uri dans mon dossier config.php, qui est dans le même dossier que les scripts et sera inclus dans chaque script (require('config.php')):

define('BASE_PATH', '/filesystem/path/to/application'); 
define('BASE_URI', '/uri/home'); 

vous pouvez utiliser:

require(BASE_PATH . '/file.php'); 

un autre indice - si vous avez séparé le développement et les sites en direct, vous pouvez mettre ces définitions dans un commutateur:

$mode = 'dev'; 
switch($mode){ 
    case 'dev': 
     define('BASE_PATH', '/filesystem/path/to/application'); 
     define('BASE_URI', '/uri/home'); 
    break; 
    case 'live': 
     define('BASE_PATH', '/different/path/to/application'); 
     define('BASE_URI', '/'); 
    break; 
} 
+0

La question est quel chemin utilisez-vous pour inclure 'config.php'? –

+0

Alors peut-être vous devriez le mot plus clairement plutôt que downvoting. Quoi qu'il en soit, je consacre du temps et des efforts à fournir une réponse - comment dire «merci, mais ...»? –

+0

Désolé, mec, mais je ne vous ai pas déprécié ... J'apprécie vos efforts pour vous aider. –

Questions connexes