J'ai plusieurs sous-domaines contenus dans leur propre répertoire au-dessus de mon site racine et un dossier d'actifs dans mon répertoire racine. Par exemple:
/
/assets/
/forums/
/blog/
J'essaie d'exiger () des fichiers sur des pages php dans le répertoire racine et les sous-répertoires, par exemple, assets/include/form.php est requis () dans index.php dans le répertoire racine et dans index.php le répertoire des forums. Cependant, à l'intérieur de form.php, une autre condition est nécessaire pour essayer d'obtenir un autre fichier contenu dans le répertoire include.
Je n'arrive pas à trouver un moyen d'exiger un fichier à l'intérieur de ce formulaire.php où il fonctionnera à la fois sur index.php du répertoire racine et sur index.php du répertoire du forum.
Existe-t-il un moyen de demander explicitement un fichier à partir du répertoire racine?
Il y a plusieurs façons d'y parvenir.
form.php
require_once __DIR__ . '/otherfile.php';
Si vous utilisez PHP 5.2 ou une version antérieure, vous pouvez utiliser dirname(__FILE__)
au lieu de __DIR__
. En savoir plus sur les constantes magiques ici .
$_SERVER['DOCUMENT_ROOT']
Il s'agit du chemin absolu vers la racine de votre document: /var/www/example.org/
ou C:\wamp\www\
sous Windows.
La racine du document est le dossier où se trouvent vos fichiers de niveau racine: http://example.org/index.php serait en $_SERVER['DOCUMENT_ROOT'] . '/index.php'
Utilisation: require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';
Ce sera probablement un peu excessif pour votre application si c'est très simple.
Vous pouvez également définir les répertoires dans lesquels PHP recherchera les fichiers lorsque vous utiliserez require()
ou include()
. Découvrez set_include_path()
ici .
Utilisation: require_once 'otherfile.php';
Remarque:
Je vois que certaines réponses suggèrent d’utiliser l’URL dans require()
. Je ne suggérerais pas cela car le fichier PHP serait analysé avant son inclusion. Cela convient pour les fichiers HTML ou les scripts PHP produisant du code HTML, mais si vous ne disposez que d'une définition de classe, le résultat est vide.
Si un niveau supérieur utilise:
include('../header.php');
si deux niveaux plus haut:
include('../../header.php');
Pour plus, visitez: http://forums.htmlhelp.com/index.php?showtopic=2922
Donc ... vous pouvez utiliser ceci, à la fois dans pgm1.php & pgm1.php et REQUIRE ou
INCLUDE fonctionne!
function rURI($p){
for($w='',$i=1;$i<(count(explode('/',$_SERVER['PHP_SELF']))-1);$i++,$w.='../');return
$w.$p; }
require rURI ('dirA/inc/Xpto.php'); // chemin depuis la racine
Vous avez 2 solutions. Vous pouvez utiliser l’URL complète du fichier. Par exemple, si votre fichier se trouve dans le répertoire 'lib', vous pouvez utiliser: Require_once (' http://www.example.com/lib/myfile.php ')
ou
Vous pouvez essayer la fonction $_SERVER['DOCUMENT_ROOT']
dans PHP mais ce n’est pas toujours à l’abri.