parent.php:Php - obtenir le nom-script parent
require_once 'child.php';
child.php:
echo __FILE__;
Il montrera '.../child.php'
Comment je reçois '.../parent.php'
parent.php:Php - obtenir le nom-script parent
require_once 'child.php';
child.php:
echo __FILE__;
Il montrera '.../child.php'
Comment je reçois '.../parent.php'
print $_SERVER["SCRIPT_FILENAME"];
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) ;-)
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'];
}
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 ...
Vous devez utiliser basename($_SERVER["SCRIPT_FILENAME"])
ou, si vous aimez le nom de script seulement, vous pouvez utiliser basename($_SERVER["SCRIPT_FILENAME"], '.php')
.
Ce n'est pas la bonne réponse ... – Neo
Fonctionne uniquement dans le contexte d'un conteneur web. –