2009-08-23 15 views

Respuesta

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

Esta no es la respuesta correcta ... – Neo

+1

Solo funciona en el contexto de un contenedor web. –

1

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) ;-)

17

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']; 
} 
+1

Probablemente aquí debe ser "array_shift" en lugar de "array_pop" – FDisk

+0

No, usando 'array_shift()' hará que la función devuelva el nombre del archivo de script que contiene 'get_topmost_script()', es decir '__FILE__'. – danorton

0

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 ...

0

Tienes que usar basename($_SERVER["SCRIPT_FILENAME"]) o, si le gusta el script nam solamente, puede usar basename($_SERVER["SCRIPT_FILENAME"], '.php').

Cuestiones relacionadas