Hva er PHTML-filformatet?
En .phtml-fil er et PHP-skript på serversiden som blander HTML-markering med PHP-kodeblokker, funksjonelt identisk med en standard .php-fil. Den eneste betydelige forskjellen er filendelsen.
Når en webserver mottar en forespørsel om en .phtml-fil, sender den filen gjennom PHP-tolkeren. PHP utfører de innebygde <?php ... ?>-blokkene og sender den resulterende HTML-koden til klientens nettleser - nettleseren ser aldri PHP-kildekoden. For at dette skal fungere, må serveren være eksplisitt konfigurert til å behandle .phtml som PHP. I Apache krever dette et AddHandler application/x-httpd-php .phtml-direktiv (i .htaccess eller httpd.conf); i Nginx er en tilsvarende fastcgi_param-mapping nødvendig. Uten denne konfigurasjonen kan serveren levere rå PHP-kildekode til besøkende, noe som utgjør en risiko for informasjonslekkasje.
.phtml-endelsen oppsto på slutten av 1990-tallet under PHP 3 / tidlig Zend Engine-æra, da PHP ofte ble bygget direkte inn i HTML-malfiler. Den fikk varig utbredelse i Zend Framework og er fortsatt aktivt i bruk i Magento (nå Adobe Commerce) for malfiler i visningslaget (view layer).
Fra et sikkerhetssynspunkt er .phtml et klassisk mål for å omgå filopplastingsfiltre: filtre som blokkerer .php-opplastinger overser ofte .phtml, .php5, .php3 og lignende varianter, noe som tillater kjøring av vilkårlig PHP-kode.
Relaterte formater inkluderer vanlige .php-skript og .phps-filer (visning av PHP-kildekode). Det finnes ingen «magic bytes» og ingen intern versjonering; PHP-versjonen bestemmes utelukkende av serverkonfigurasjonen.
Sikkerhet og trygghet
RISIKO: HIGH.phtml-filer kjører vilkårlig PHP-kode på serveren - samme risiko som .php. Kritiske sikkerhetsproblemer: (1) Hvis et filopplastingsskjema i en webapplikasjon tillater .phtml-opplastinger mens det blokkerer .php, kan en angriper laste opp et PHP-webshell med .phtml-endelse og oppnå ekstern kjøring av kode på serveren. (2) Hvis en server utilsiktet eksponerer .phtml-kildekoden (ingen PHP-behandler konfigurert), blir påloggingsinformasjon og databasetilkoblingsstrenger i koden offentlig tilgjengelig. Serveradministratorer bør: eksplisitt liste .phtml i PHP-behandlerkonfigurasjonen, og nekte skriptkjøring i opplastingsmapper for .php, .phtml, .phar, .php3, .php4, .php5.
Formatdetaljer
i et nøtteskallProgrammer som åpner PHTML-filer
Tekniske detaljer
dyp spesifikasjon| Kjøringsmodell | Behandles på serversiden av PHP-tolker; klienten mottar kun ferdig HTML-utdata |
| Koding | Ren tekst, UTF-8 anbefales; historisk ASCII eller Latin-1 |
| Kodeskilletegn | <?php ... ?> (standard); <?= ... ?> (kort echo); <? ... ?> (kort tag, foreldet) |
| MIME-type | application/x-httpd-php; også text/html og text/x-php avhengig av serverkonfigurasjon |
| Apache-konfigurasjon | AddHandler application/x-httpd-php .phtml i .htaccess eller httpd.conf kreves for kjøring |
| Nginx-konfigurasjon | fastcgi_param eller location-blokk som mapper .phtml til PHP-FPM kreves |
| Primært bruksområde | Magento (Adobe Commerce) maler for visningslag; eldre Zend Framework-visninger |
| Funksjonell forskjell fra .php | Ingen - behandlingen er identisk; kun filendelsen er forskjellig |
| Sikkerhetsrisiko | Klassisk omgåelse av filopplastingsfilter: blokkerer .php, men kan overse .phtml, noe som muliggjør kjøring av vilkårlig PHP-kode |
| Filstørrelse | Typisk 1 KB - 500 KB |
| Støtte for PHP-versjoner | Kompatibel med PHP 4 til og med PHP 8.x; ingen endringer på formatnivå mellom versjoner |
| Tilknyttet OS | Linux (Apache/Nginx), Windows (IIS/Apache), macOS |
| Utgitt | circa 1997-1998 (early PHP 3/Zend era) |
| Siste versjon | PHP 8.x (2024); .phtml itself has no versioning |
| Spesifikasjon | www.php.net |
PHTML-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om PHTML-filer.