PHP inclut le chemin absolu
J'ai une variable sur mon site appelé $basePath qui est défini comme:
$basePath = '/Systems/dgw/';
Je l'utilise sur tous mes css, js et les images des balises comme si (raccourcie pour une meilleure visibilité):
<link href="<?php echo $basePath; ?>include/assets/css/bootstrap.min.css">
Je n'ai aucun problème avec ceux qui comprend et qu'ils fonctionnent très bien dans tous les cas où le fichier dans le dossier que je suis.
J'ai une certaine inclus page qui a la ligne suivante:
<img src="<?php echo $basePath; ?>images/new_logo.png" alt="logo"/>
Et l'image montre bien. La ligne après il déclare:
<?php include($basePath.'include/assets/common/topMessages.php');?>
Mais l'include ne se passe. Quand je l'ai essayer comme ceci:
<?php include('../../include/assets/common/topMessages.php');?>
Il fonctionne.
Quelqu'un a une idée de ce qui pourrait être mauvais?
source d'informationauteur digicom
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas inclure de fichiers php relativement à la racine de votre site de cette façon, parce que si vous utilisez la barre oblique comme premier caractère, la référence ne vont beaucoup plus loin que juste la racine du document. Donc, au lieu d'utiliser votre basepath, vous pourriez faire quelque chose comme ceci :
Si votre serveur n'a pas de remplir la "document_root", vous pouvez avoir besoin de cette
- Je utiliser cette ligne de code. Elle remonte au "top" de l'arborescence du site, puis va vers le fichier désiré.
Par exemple, disons que j'ai ce fichier arbre:
domain.com/aaa/index.php
domain.com/bbb/ccc/ddd/index.php
domain.com/_resources/functions.php
Je peux inclure le functions.php fichier à partir de là où je suis, par un simple copier-coller
Si vous devez utiliser ce code plusieurs fois, vous pouvez créer une fonction qui renvoie le "str_repeat('../',(substr_count(getenv('SCRIPT_URL'),'/')-1))" partie. Puis il suffit d'insérer cette fonction dans le premier fichier à inclure. J'ai un "initialize.php" le fichier que je mets tout en haut de chaque page php qui contient l'ensemble de cette fonction. La prochaine fois que j'ai pour inclure des fichiers, en fait, j'ai juste utiliser la fonction (nommé "path_back"):
Vous pouvez ajouter un
include_path = ".:/home/myuser/mysite.com/"
à votrephp.ini
ou vous pouvez ajouter quelque chose comme ceci dans votre script avant lainclude
ourequire
:Le premier sera le même pour tous les scripts en cours d'exécution dans votre site web.
La deuxième option ne fonctionne que pour le script qui a l'
setincludepath
sur le code, pour le reste de l'application, il ne fonctionnera que si vous avez un objet que vous appelez dans chaque script qui ajoutent de lasetincludepath
.