Che cos'è il formato di file PHTML?
Un file .phtml è uno script PHP lato server che mescola markup HTML con blocchi di codice PHP, funzionalmente identico a un file .php standard. L'unica differenza significativa è l'estensione del file.
Quando un server web riceve una richiesta per un file .phtml, passa il file all'interprete PHP. PHP esegue i blocchi <?php ... ?> incorporati ed emette l'HTML risultante al browser del client - il browser non vede mai il sorgente PHP. Affinché ciò funzioni, il server deve essere esplicitamente configurato per trattare .phtml come PHP. In Apache ciò richiede una direttiva AddHandler application/x-httpd-php .phtml (in .htaccess o httpd.conf); in Nginx è necessaria una mappatura fastcgi_param corrispondente. Senza tale configurazione, il server potrebbe consegnare il sorgente PHP grezzo ai visitatori, con un rischio di divulgazione di informazioni.
L'estensione .phtml ha avuto origine alla fine degli anni '90 durante l'era di PHP 3 / primo Zend Engine, quando PHP veniva comunemente incorporato direttamente nei file template HTML. Ha ottenuto un'adozione duratura nello Zend Framework e rimane attivamente utilizzato in Magento (ora Adobe Commerce) per i suoi file template del livello di visualizzazione.
Dal punto di vista della sicurezza, .phtml è un classico bersaglio per l'aggiramento del caricamento dei file (file-upload bypass): i filtri che bloccano i caricamenti di .php spesso trascurano .phtml, .php5, .php3 e varianti simili, consentendo l'esecuzione di codice PHP arbitrario.
I formati correlati includono script .php semplici e file .phps (visualizzazione sorgente PHP). Non esistono magic bytes né versionamento interno; la versione del runtime PHP è determinata interamente dalla configurazione del server.
Sicurezza e incolumità
RISCHIO: HIGHI file .phtml eseguono codice PHP arbitrario sul server - stesso rischio di .php. Problemi di sicurezza critici: (1) Se un modulo di caricamento file su un'app web consente caricamenti .phtml bloccando .php, un utente malintenzionato può caricare una webshell PHP con estensione .phtml e ottenere l'esecuzione di codice remoto sul server. (2) Se un server espone inavvertitamente il sorgente .phtml (nessun gestore PHP configurato), le credenziali e le stringhe di connessione al database nel codice diventano pubbliche. Gli amministratori di sistema dovrebbero: elencare esplicitamente .phtml nella configurazione del gestore PHP e negare l'esecuzione di script nelle directory di caricamento per .php, .phtml, .phar, .php3, .php4, .php5.
Dettagli del formato
in sintesiProgrammi che aprono file PHTML
Dettagli tecnici
specifiche approfondite| Modello di esecuzione | Elaborato lato server dall'interprete PHP; il client riceve solo l'output HTML renderizzato |
| Codifica | Testo semplice, UTF-8 consigliato; storicamente ASCII o Latin-1 |
| Delimitatori di codice | <?php ... ?> (standard); <?= ... ?> (echo breve); <? ... ?> (tag breve, deprecato) |
| Tipo MIME | application/x-httpd-php; anche text/html e text/x-php a seconda della configurazione del server |
| Configurazione Apache | Richiesto AddHandler application/x-httpd-php .phtml in .htaccess o httpd.conf per l'esecuzione |
| Configurazione Nginx | Richiesta mappatura fastcgi_param o blocco location per .phtml verso PHP-FPM |
| Caso d'uso principale | Template del livello di visualizzazione di Magento (Adobe Commerce); viste legacy di Zend Framework |
| Differenza funzionale da .php | Nessuna - l'elaborazione è identica; differisce solo l'estensione del file |
| Rischio di sicurezza | Classico aggiramento dei filtri di caricamento file: blocca .php ma può trascurare .phtml, consentendo l'esecuzione di PHP arbitrario |
| Dimensione del file | Tipicamente 1 KB - 500 KB |
| Supporto versione PHP | Compatibile da PHP 4 a PHP 8.x; nessuna modifica a livello di formato tra le versioni |
| OS associati | Linux (Apache/Nginx), Windows (IIS/Apache), macOS |
| Rilasciato | circa 1997-1998 (early PHP 3/Zend era) |
| Ultima versione | PHP 8.x (2024); .phtml itself has no versioning |
| Specifica | www.php.net |
Conversioni PHTML
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file PHTML.