2009-08-23 10 views

Répondre

13
print $_SERVER["SCRIPT_FILENAME"]; 
+3

Ce n'est pas la bonne réponse ... – Neo

+1

Fonctionne uniquement dans le contexte d'un conteneur web. –

1

Je ne pense pas que vous puissiez le faire: le __FILE__ La constante magique indique dans quel fichier elle est écrite; et c'est tout.

Si vous voulez savoir quel script PHP a été initialement appelé (quelle URL a été demandée, par exemple), vous pourriez avoir plus de chance en regardant le superglobal $_SERVER: il contient de nombreuses informations, dont certaines qui vous aideront (comme SCRIPT_FILENAME ou SCRIPT_NAME, par exemple) ;-)

17

La réponse choisie ne fonctionne que dans les environnements qui définissent des variables de serveur et ne fonctionneront pas spécifiquement à partir d'un script CLI. En outre, il ne détermine pas le parent, mais uniquement le fichier script le plus haut.

Vous pouvez faire presque la même chose à partir d'un script CLI en regardant $ argv [0], mais cela ne fournit pas le chemin complet.

La solution de l'environnement indépendant utilise debug_backtrace:

function get_topmost_script() { 
    $backtrace = debug_backtrace(
     defined("DEBUG_BACKTRACE_IGNORE_ARGS") 
     ? DEBUG_BACKTRACE_IGNORE_ARGS 
     : FALSE); 
    $top_frame = array_pop($backtrace); 
    return $top_frame['file']; 
} 
+1

Probablement ici doit être "array_shift" au lieu de "array_pop" – FDisk

+0

Non, l'utilisation de 'array_shift()' entraînera la fonction à retourner le nom du fichier de script qui contient 'get_topmost_script()', c'est-à-dire __FILE__'. – danorton

0

Droit à la solution:

Parent Scénario:

echo $_SERVER['SCRIPT_FILENAME']; 

Script Enfant (fichier inclus dans le script parent):

echo __FILE__; 

Faire un fichier appelé "parent.php" avec le contenu:

include('child.php'); 

Faire un fichier appelé "child.php" avec le contenu:

echo "My Parent is at: " . $_SERVER['SCRIPT_FILENAME'] . "<br>"; 
echo "I'm at: " . __FILE__; 

Vous obtenez l'idée ...

0

Vous devez utiliser basename($_SERVER["SCRIPT_FILENAME"]) ou, si vous aimez le nom de script seulement, vous pouvez utiliser basename($_SERVER["SCRIPT_FILENAME"], '.php').

Questions connexes