PHP basename( __DIR__ ) est de retour _DIR_ sur certains serveurs
Je suis en espérant que quelqu'un ici connait la réponse à cette question. J'ai écrit un script qui utilise
basename( __DIR__ )
utilise ensuite un si fichier existe pas de fonction.
Sur mon serveur, cela fonctionne bien, mais sur d'autres sever il retourne en fait le mot _DIR_
au lieu de le chemin d'accès au fichier.
Ce changement avec une version de PHP ou est-il un autre paramètre qui le rend si cela ne fonctionne pas?
Enfin est-il un meilleur moyen d'obtenir le chemin d'accès au fichier? Voici la ligne que j'utilise:
define('NIFTY_CONSTANT', trailingslashit (WP_PLUGIN_DIR . '/'. basename( __DIR__ ) ). '/lib/mdetect.php' );
(oui je sais c'est un WordPress fonction, mais ce n'est pas un WordPress question c'est un PHP un)
__DIR__
constant.OriginalL'auteur Brooke. | 2013-08-14
Vous devez vous connecter pour publier un commentaire.
__DIR__
est introduit en PHP 5.3 . Vérifiez votre version de PHP .Référence: http://php.net/manual/en/language.constants.predefined.php
OriginalL'auteur Raptor
Si
__DIR__
constante ne fonctionne pas sur le serveurA
, tandis que les travaux sur le serveurB
, puis une Version de PHP est un problème (Comme mentionné par @Shivan).Vous pouvez tout simplement le tester en appelant
phpinfo()
sur les deux serveurs.Voici une solution pour vous:
__DIR__
constante qui est la même pour chaque fichier, ce n'est pas la même que la magie de la constante__DIR__
.A quoi bon un "contournement" en cas de casse de vos scripts? (Ce break quelque chose si vous utilisez
__DIR__
dans plus d'un fichier/répertoire.)Si vous avez besoin de compatibilité avec les versions de PHP 5.3 ci-dessous, il suffit d'utiliser
dirname(__FILE__)
au lieu de__DIR__
.Ce n'est pas la même que la magie de la constante
__DIR__
alors, qui est à chaque fois différent selon l'endroit où il est utilisé. Lors de l'utilisation de votre "solution de contournement", le script va se comportent très différemment selon qu'il est en cours d'exécution sur 5.2 ou 5.3+.__DIR__
BTW n'est pas un "état global" (c'est peut-être ce que vous êtes absent), il est en fait juste un analyseur de jeton se substituer à l'actuel répertoire de fichier qui sont analysées. C'est un mécanisme de réflexion si vous voulez, pas d'état global.Oui,
dirname(__FILE__) === __DIR__
, mais vous avez oublié un point. Si vous utilisez__DIR__
dans l'ensemble de script, puis de votre architecture est cassé.OriginalL'auteur Yang