2011-11-20 3 views
0

Y a-t-il une constante PHP qui supprime automatiquement $_SERVER['DOCUMENT_ROOT'] de __FILE__?Est-ce que cette constante PHP existe?

Alors que si la racine du document est:

/Applications/XAMPP/xamppfiles/htdocs 

Et __FILE__ est:

/Applications/XAMPP/xamppfiles/htdocs/Project/application/controllers/index.php 

Il retourne:

/Project/application/controllers/index.php 
+0

Avez-vous essayé d'inspecter la sortie de 'var_dump ($ _ SERVER)'? C'est la première étape dans le débogage de base et apprendre à vous aider. – meagar

Répondre

4

Vous voulez probablement _SERVER['PHP_SELF'] ou _SERVER['SCRIPT_NAME'].

  • PHP_SELF: Le nom du script en cours d'exécution, par rapport à la racine du document.

  • SCRIPT_NAME: Contient le chemin du script en cours. Ceci est utile pour les pages qui doivent pointer vers eux-mêmes. La constante __FILE__ contient le chemin complet et le nom de fichier du fichier actuel (c'est-à-dire inclus).

A propos de la différence entre les deux:

Cependant, je viens de remarquer un post sur le forum php.general où quelqu'un a demandé quelle était la différence entre eux. Sémantiquement, il n'y en a pas; ils devraient contenir la même information. Cependant, historiquement et techniquement parlant, il y a. SCRIPT_NAME est défini dans la spécification CGI 1.1 et constitue donc un standard. Cependant, tous les serveurs Web ne l'implémentent pas réellement, et donc il n'est pas nécessairement portable. PHP_SELF, d'autre part, est implémenté directement par PHP, et tant que vous êtes en PHP, il sera toujours présent.

Via: http://mwop.net/blog/45-PHP_SELF-versus-SCRIPT_NAME

0
<?php 
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php'); 

echo $path_parts['dirname'], "\n"; 
echo $path_parts['basename'], "\n"; 
echo $path_parts['extension'], "\n"; 
echo $path_parts['filename'], "\n"; // since PHP 5.2.0 
?> 
+0

Et comment cela va-t-il aider? – str

2

Peut-être que vous pouvez utiliser

$_SERVER['SCRIPT_NAME']; 

Je ne sais pas si je comprends bien la question, vous pouvez aussi concaténer la racine et le fichier

$_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME']; 
0

Il n'existe pas de telle variable prédéfinie.

Mais vous pouvez facilement l'obtenir à partir de ces deux, en utilisant comme fonctions de manipulation de chaînes de base, comme strlen() et substr()