J'ai une variable sur mon site appelée $ basePath qui est définie comme suit:
$basePath = '/Systems/dgw/';
Je l'utilise sur tous mes tags css, js et images en tant que tel (raccourci pour une meilleure visibilité):
<link href="<?php echo $basePath; ?>include/assets/css/bootstrap.min.css">
Je n'ai aucun problème avec ces inclus et ils fonctionnent bien dans n'importe quel fichier et dans le dossier que je suis.
J'ai une certaine page incluse qui a la ligne suivante:
<img src="<?php echo $basePath; ?>images/new_logo.png" alt="logo"/>
Et l'image montre très bien. La ligne après celle-ci indique:
<?php include($basePath.'include/assets/common/topMessages.php');?>
Mais l'inclusion ne se produit pas. Quand j'essaye comme ça:
<?php include('../../include/assets/common/topMessages.php');?>
Ça marche.
Quelqu'un a une idée de ce qui pourrait être faux?
De cette façon, vous ne pouvez pas inclure de fichiers php relativement à votre racine Web. En effet, si vous utilisez la barre oblique comme premier caractère, la référence ira beaucoup plus loin que la racine de votre document. Ainsi, au lieu d'utiliser votre chemin de base, vous pouvez faire quelque chose comme ceci:
<?php
$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/yourpath/yourfile.php";
include_once($path);
?>
Si votre serveur ne remplit pas "racine_document", vous en aurez peut-être besoin
require(str_repeat('../',(substr_count(getenv('SCRIPT_URL'),'/')-1))."/path/to/file.php");
J'utilise cette ligne de code. Il retourne au "sommet" de l'arborescence du site, puis au fichier souhaité.
Par exemple, disons que j'ai cet arbre de fichiers:
domain.com/aaa/index.php
domain.com/bbb/ccc/ddd/index.php
domain.com/_resources/functions.php
Je peux inclure le fichier functions.php où que je sois, simplement en le collant
require(str_repeat('../',(substr_count(getenv('SCRIPT_URL'),'/')-1))."/_resources/functions.php");
Si vous devez utiliser ce code plusieurs fois, vous pouvez créer une fonction qui renvoie la partie "str_repeat ('../", (substr_count (getenv (' SCRIPT_URL '), 1/1))). Ensuite, insérez simplement cette fonction dans le premier fichier que vous incluez. J'ai un fichier "initialize.php" que j'inclus tout en haut de chaque page php et qui contient cette fonction. La prochaine fois que je dois inclure des fichiers, j’utilise en fait la fonction (nommée "path_back"):
require(path_back()."/_resources/another_php_file.php");
Vous pouvez ajouter un include_path = ".:/home/myuser/mysite.com/"
à votre php.ini
ou vous pouvez ajouter quelque chose comme ceci dans votre script avant la include
ou require
:
set_include_path(get_include_path() . ":/home/myuser/mysite.com/");
Le premier fonctionnera pour tous les scripts de votre site Web.
La deuxième option ne fonctionnera que pour le script qui a la setincludepath
sur le code, pour le reste de l'application, cela ne fonctionnera que si vous avez un objet appelé dans chaque script qui ajoute la setincludepath
.