parent.php:Php - obtiene el nombre del padre-escritura
require_once 'child.php';
child.php:
echo __FILE__;
Mostrará '.../child.php'
¿Cómo puede obtengo '.../parent.php'
parent.php:Php - obtiene el nombre del padre-escritura
require_once 'child.php';
child.php:
echo __FILE__;
Mostrará '.../child.php'
¿Cómo puede obtengo '.../parent.php'
print $_SERVER["SCRIPT_FILENAME"];
No creo que pueda hacer eso: el __FILE__
constante mágica indica en qué archivo está escrito; y eso es todo.
Si desea saber qué script PHP se llamó inicialmente (qué URL se solicitó, por ejemplo), puede tener más suerte mirando el superglobal $_SERVER
: contiene muchas informaciones, incluidas algunas que le ayudarán (como SCRIPT_FILENAME
o SCRIPT_NAME
, por ejemplo) ;-)
La respuesta elegida solo funciona en entornos que configuran variables de servidor y específicamente no funcionarán desde un script CLI. Además, no determina el elemento primario, sino solo el archivo de script superior.
Puede hacer casi lo mismo desde un script CLI mirando $ argv [0], pero eso no proporciona la ruta completa.
La solución respetuosa con el medio independiente utiliza 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'];
}
recto a la solución:
guión principal:
echo $_SERVER['SCRIPT_FILENAME'];
Guión Niño (archivo incluido en la escritura matriz):
echo __FILE__;
Hacer un archivo llamado "parent.php" con contenidos:
include('child.php');
hacer un archivo llamado "child.php" con contenidos:
echo "My Parent is at: " . $_SERVER['SCRIPT_FILENAME'] . "<br>";
echo "I'm at: " . __FILE__;
Se obtiene la idea ...
Tienes que usar basename($_SERVER["SCRIPT_FILENAME"])
o, si le gusta el script nam solamente, puede usar basename($_SERVER["SCRIPT_FILENAME"], '.php')
.
Esta no es la respuesta correcta ... – Neo
Solo funciona en el contexto de un contenedor web. –