¿Qué es el formato de archivo PHTML?
Un archivo .phtml es un script PHP del lado del servidor que mezcla marcado HTML con bloques de código PHP, funcionalmente idéntico a un archivo .php estándar. La única diferencia significativa es la extensión del archivo.
Cuando un servidor web recibe una solicitud para un archivo .phtml, pasa el archivo a través del intérprete de PHP. PHP ejecuta los bloques embebidos <?php ... ?> y emite el HTML resultante al navegador del cliente; el navegador nunca ve el código fuente PHP. Para que esto funcione, el servidor debe estar configurado explícitamente para tratar .phtml como PHP. En Apache esto requiere una directiva AddHandler application/x-httpd-php .phtml (en .htaccess o httpd.conf); en Nginx se necesita un mapeo fastcgi_param correspondiente. Sin esa configuración, el servidor podría entregar el código fuente PHP sin procesar a los visitantes, lo que supone un riesgo de divulgación de información.
La extensión .phtml se originó a finales de la década de 1990 durante la era de PHP 3 / principios de Zend Engine, cuando PHP se incrustaba comúnmente de forma directa en archivos de plantilla HTML. Ganó una adopción duradera en el Zend Framework y sigue utilizándose activamente en Magento (ahora Adobe Commerce) para sus archivos de plantilla de la capa de vista.
Desde el punto de vista de la seguridad, .phtml es un objetivo clásico para el bypass de subida de archivos: los filtros que bloquean las subidas de .php a menudo pasan por alto .phtml, .php5, .php3 y variantes similares, permitiendo la ejecución arbitraria de PHP.
Los formatos relacionados incluyen scripts .php planos y archivos .phps (visualización de código fuente PHP). No existen magic bytes ni versiones internas; la versión del entorno de ejecución de PHP se determina enteramente por la configuración del servidor.
Seguridad y protección
RIESGO: HIGHLos archivos .phtml ejecutan código PHP arbitrario en el servidor, el mismo riesgo que .php. Problemas de seguridad críticos: (1) Si un formulario de subida de archivos en una aplicación web permite subidas .phtml mientras bloquea .php, un atacante puede subir una webshell PHP con extensión .phtml y obtener ejecución remota de código en el servidor. (2) Si un servidor expone inadvertidamente el código fuente .phtml (sin un manejador PHP configurado), las credenciales y las cadenas de conexión a la base de datos en el código se vuelven públicas. Los administradores de servidores deben: listar explícitamente .phtml en la configuración del manejador PHP y denegar la ejecución de scripts en los directorios de subida para .php, .phtml, .phar, .php3, .php4, .php5.
Detalles del formato
en pocas palabrasProgramas que abren archivos PHTML
Detalles técnicos
especificación profunda| Modelo de ejecución | Procesado en el lado del servidor por el intérprete de PHP; el cliente recibe solo la salida HTML renderizada |
| Codificación | Texto plano, se recomienda UTF-8; históricamente ASCII o Latin-1 |
| Delimitadores de código | <?php ... ?> (estándar); <?= ... ?> (eco corto); <? ... ?> (etiqueta corta, obsoleta) |
| Tipo MIME | application/x-httpd-php; también text/html y text/x-php dependiendo de la configuración del servidor |
| Configuración de Apache | Se requiere AddHandler application/x-httpd-php .phtml en .htaccess o httpd.conf para la ejecución |
| Configuración de Nginx | Se requiere fastcgi_param o un bloque location que mapee .phtml a PHP-FPM |
| Caso de uso principal | Plantillas de la capa de vista de Magento (Adobe Commerce); vistas heredadas de Zend Framework |
| Diferencia funcional con .php | Ninguna: el procesamiento es idéntico; solo difiere la extensión del archivo |
| Riesgo de seguridad | Bypass clásico de filtros de subida de archivos: bloquea .php pero puede omitir .phtml, permitiendo la ejecución arbitraria de PHP |
| Tamaño de archivo | Típico de 1 KB a 500 KB |
| Soporte de versiones de PHP | Compatible con PHP 4 hasta PHP 8.x; sin cambios a nivel de formato entre versiones |
| SO asociado | Linux (Apache/Nginx), Windows (IIS/Apache), macOS |
| Lanzado | circa 1997-1998 (early PHP 3/Zend era) |
| Última versión | PHP 8.x (2024); .phtml itself has no versioning |
| Especificación | www.php.net |
Conversiones de PHTML
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos PHTML.