Al usar PHP include
, ¿cómo puedo averiguar qué archivo llama al include
? En resumen, ¿cuál es el nombre de archivo del padre?Obtener el nombre del archivo que ejecutó PHP incluye
Respuesta
Una manera fácil es asignar una variable en el archivo principal (antes del inclue), luego hacer referencia a esa variable en el archivo incluido.
archivo principal:
$myvar_not_replicated = __FILE__; // Make sure nothing else is going to overwrite
include 'other_file.php';
archivo incluido:
if (isset($myvar_not_replicated)) echo "{$myvar_not_replicated} included me";
else echo "Unknown file included me";
Usted también podría perder el tiempo con get_included_files()
o debug_backtrace()
y encontrar el evento cuando y donde el archivo se llevó incluido, pero puede ser un poco complicado y complicado.
$fileList = get_included_files();
$topMost = $fileList[0];
if ($topMost == __FILE__) echo 'no parents';
else echo "parent is $topMost";
Creo que esto debería dar el resultado correcto cuando hay una madre soltera.
Con esto me refiero a la situación en la que el padre no es un archivo requerido o incluido.
respuesta tardía, pero ...
puedo comprobar el funcionamiento de nombre de archivo de los padres mediante el uso de:
$_SERVER["SCRIPT_NAME"] // or
$_SERVER["REQUEST_URI"] // (with query string)
Esto debería tener una calificación más alta ya que da la respuesta correcta sin necesidad de editar los archivos contenedores para una inclusión. Tengo una inclusión que necesitaba el nombre de su archivo de contenedor y esto seguramente supera los valores '$ var' en más de 100 páginas, como sugieren las otras respuestas. – Martin
** RESPUESTA ALTAMENTE INCORRECTA **! 'SCRIPT_NAME' devuelve el primer archivo. ¡Y 'REQUEST_URI' está fuera de duda! no ayudarán en ningún CMS. Use 'debug_backtrace()' o 'get_included_files()' –
@ T.Todua estos calificadores son válidos, pero están fuera del alcance de esta pregunta (y respuesta). '$ _SERVER ['SCRIPT_NAME']' es el valor que se necesita aquí. – Martin
En el archivo principal, añada esta línea antes de incluir el archivo secundario:
$_SESSION['parent_file'] = $_SERVER['PHP_SELF'];
Y luego en el archivo secundario, lea la variable de sesión:
$parent_file = $_SESSION['parent_file']
- 1. ¿Cómo obtener la identidad del usuario que ejecutó un informe?
- 2. Obtener la ruta completa sin el nombre de archivo de la ruta que incluye el nombre de archivo
- 3. PHP Obtener el nombre del directorio actual
- 4. Obtener el nombre del archivo MAKE del archivo MAKE
- 5. Obtener el nombre del archivo usando xsl
- 6. Obtener el nombre del archivo de secuencia de comandos actual
- 7. ¿Cómo obtener el nombre del archivo en una carpeta?
- 8. Obtener el nombre del producto del archivo msi en C#
- 9. Incluye el archivo .cpp?
- 10. Incluye: css con extensión de archivo php?
- 11. ¿Cómo obtener solo el nombre del archivo en el preprocesador?
- 12. Obtener el nombre del archivo ejecutable desde el método main()
- 13. Hacer que PHP pathinfo() devuelva el nombre de archivo correcto si el nombre del archivo es UTF-8
- 14. Obtener la extensión del archivo (nombre base?)
- 15. Obtener el nombre del botón enviar en PHP
- 16. PHP - Obtener el nombre clave del valor de matriz
- 17. problema con Tomcat URL incluye el nombre del proyecto
- 18. Obtener el ícono del archivo APK, versión, nombre
- 19. Obtener el nombre del archivo actual en Vim
- 20. Python: ¿cómo obtener el nombre del archivo en Windows?
- 21. Obtener el nombre de la fuente del archivo .ttf
- 22. Obtener el tipo MIME del nombre de archivo en C
- 23. Cómo obtener el nombre del archivo de entrada en MRjob
- 24. Obtener el nombre del archivo de mapa de bits
- 25. obtener el nombre del script PHP actual en archivo de inclusión
- 26. recuento Número de veces que se ejecutó el programa
- 27. Obtener el nombre del archivo sin extensión en matlab
- 28. Cocos2d CCSprite Clase obtener el nombre del archivo de imagen
- 29. ¿Cómo obtener el nombre del archivo de la intención?
- 30. Obtener el nombre para mostrar del archivo web.xml
Una mejor pregunta es ¿por qué necesitas saber esto? Tal vez haya una mejor manera de hacer explícitamente lo que estás tratando de lograr. – Zimzat