Comment obtenir le répertoire relatif peu importe d'où il est inclus dans PHP?
Si c'est Path_To_DocumentRoot/a/b/c.php
,doit toujours être /a/b
.
J'utilise ceci:
dirname($_SERVER["PHP_SELF"])
Mais il ne fonctionne pas lorsqu'il est inclus par un autre fichier dans un répertoire différent.
MODIFIER
J'ai besoin d'un chemin relatif à la racine du document .Il est utilisé dans une application web.
Je trouve qu'il y a une autre question avec le même problème,mais pas encore de réponse.
PHP - conversion de système de Fichiers chemin d'accès à l'URL
donner des échantillons de la racine du document + chemin d'accès au fichier inclus + devrait chemin d'accès relatif.
OriginalL'auteur user198729 | 2010-01-19
Vous devez vous connecter pour publier un commentaire.
Avez-vous accès à
$_SERVER['SCRIPT_NAME']
? Si vous le faites, à faire:Devrait fonctionner. Sinon ce faire:
En PHP < 5.3:
Ou PHP >= 5.3:
Vous pourriez avoir besoin pour
realpath()
etstr_replace()
tous\
à/
de le rendre totalement portable, comme ceci:dirname($_SERVER['SCRIPT_NAME'])
n'est pas de travail aprèsurl-rewrite
substr(dirname(__FILE__), strlen($_SERVER['DOCUMENT_ROOT']));
fonctionne en gros,pas parfait, mais.ce qui est imparfait?
Je peut recommander l'utilisation d'strpos pour déterminer si le chemin d'accès doit être remplacé dans la première place. En supposant que tous les chemins sont toujours directement sous le DOCUMENT_ROOT pourrait être une hypothèse erronée.
OriginalL'auteur Alix Axel
PHP < 5.3:
dirname(__FILE__)
PHP >= 5.3:
__DIR__
EDIT:
Voici le code pour obtenir le chemin d'un fichier inclus par rapport à la trajectoire de l'exécution de fichier php:
__DIR__
constante. +1 Grande réponseNon,j'ai besoin d'un chemin relatif à la racine du document.
editted avec le code
J'ai mis à jour ma question.
OriginalL'auteur Lukman
Je sais que c'est une vieille question, mais les solutions proposées à l'aide de DOCUMENT_ROOT assumer le dossier web structure reflète le dossier du serveur de la structure. J'ai une situation où ce n'est pas le cas. Ma solution est la suivante. Vous pouvez travailler sur la façon dont un serveur de plans d'adresse à adresse d'un site web si vous avez un exemple de la même région cartographiée des dossiers. Tant que la racine du fichier php qui inclus ce fichier se trouve dans la même région cartographiée, vous avez un exemple.
$_SERVER['SCRIPT_FILENAME'] est l'adresse du serveur de ce fichier et $_SERVER['PHP_SELF'] est le web par rapport la version. Compte tenu de ces deux, vous pouvez travailler à ce que le web par rapport la version de votre fichier à partir de son adresse de serveur (__FILE__) comme suit.
OriginalL'auteur Spads
J'ai eu à le créer quelque chose à ce que vous avez besoin donc voici le résultat. En donnant un répertoire de base, vous recevez un chemin relatif vers un fichier à partir de la base d'annuaire. La fonction est assez rapide, de 100 000 contrôles ont eu 0,64 s. sur mon serveur. Et il fonctionne aussi bien sur les répertoires et les fichiers. C'est linux compatible. N'essayez même pas sur windows 🙂
Utilisation
Vous avez besoin pour obtenir le chemin relatif vers le fichier
/var/www/example.com/media/test.jpg
Votre chemin de base est
/var/www/example.com
Utiliser la fonction comme ceci:
Fonction sera de retour
/media/test.jpg
.Si vous avez besoin seulement le
/media
partie sans l'utilisation du fichier comme ceci:OriginalL'auteur Artur Stępień
Voici un objectif général de la fonction pour obtenir le chemin d'accès relatif entre les deux chemins.
Exemples
OriginalL'auteur inquam