Hvad er PHTML-filformatet?
En .phtml-fil er et server-side PHP-script, der blander HTML-markup med PHP-kodeblokke, hvilket funktionelt er identisk med en standard .php-fil. Den eneste betydelige forskel er filtypenavnet.
Når en webserver modtager en anmodning om en .phtml-fil, sender den filen gennem PHP-fortolkeren. PHP eksekverer de indlejrede <?php ... ?>-blokke og sender den resulterende HTML til klientens browser - browseren ser aldrig PHP-kildekoden. For at dette skal fungere, skal serveren være eksplicit konfigureret til at behandle .phtml som PHP. I Apache kræver dette et AddHandler application/x-httpd-php .phtml-direktiv (i .htaccess eller httpd.conf); i Nginx er en tilsvarende fastcgi_param-mapping nødvendig. Uden denne konfiguration kan serveren levere den rå PHP-kildekode til besøgende, hvilket udgør en risiko for informationsafsløring.
.phtml-filtypenavnet opstod i slutningen af 1990'erne under PHP 3 / den tidlige Zend Engine-æra, hvor PHP ofte blev indlejret direkte i HTML-skabelonfiler. Det vandt varig udbredelse i Zend Framework og bruges stadig aktivt i Magento (nu Adobe Commerce) til dets view-layer skabelonfiler.
Fra et sikkerhedssynspunkt er .phtml et klassisk mål for omgåelse af fil-upload-filtre: filtre, der blokerer .php-uploads, overser ofte .phtml, .php5, .php3 og lignende varianter, hvilket tillader vilkårlig PHP-eksekvering.
Relaterede formater inkluderer almindelige .php-scripts og .phps-filer (visning af PHP-kildekode). Der er ingen magic bytes og ingen intern versionering; PHP-runtime-versionen bestemmes udelukkende af serverkonfigurationen.
Sikkerhed og tryghed
RISIKO: HIGH.phtml-filer eksekverer vilkårlig PHP-kode på serveren - samme risiko som .php. Kritiske sikkerhedsproblemer: (1) Hvis en fil-upload-formular på en web-app tillader .phtml-uploads, mens den blokerer .php, kan en angriber uploade en PHP-webshell med en .phtml-udvidelse og opnå fjernafvikling af kode på serveren. (2) Hvis en server utilsigtet blotlægger .phtml-kildekoden (ingen PHP-handler konfigureret), bliver legitimationsoplysninger og databaseforbindelsesstrenge i koden offentlige. Serveradministratorer bør: eksplicit liste .phtml i PHP-handler-konfigurationen og nægte scripteksekvering i upload-mapper for .php, .phtml, .phar, .php3, .php4, .php5.
Formatdetaljer
kort fortaltProgrammer der åbner PHTML-filer
Tekniske detaljer
dyb specifikation| Eksekveringsmodel | Behandles server-side af PHP-fortolkeren; klienten modtager kun det renderede HTML-output |
| Kodning | Almindelig tekst, UTF-8 anbefales; historisk set ASCII eller Latin-1 |
| Kode-delimitere | <?php ... ?> (standard); <?= ... ?> (kort echo); <? ... ?> (kort tag, forældet) |
| MIME-type | application/x-httpd-php; også text/html og text/x-php afhængigt af serverkonfiguration |
| Apache-konfiguration | AddHandler application/x-httpd-php .phtml i .htaccess eller httpd.conf kræves for eksekvering |
| Nginx-konfiguration | fastcgi_param eller location-blok mapping af .phtml til PHP-FPM kræves |
| Primær anvendelse | Magento (Adobe Commerce) view-layer skabeloner; ældre Zend Framework views |
| Funktionel forskel fra .php | Ingen - behandlingen er identisk; kun filtypenavnet er forskelligt |
| Sikkerhedsrisiko | Klassisk omgåelse af fil-upload-filter: blokerer .php men overser måske .phtml, hvilket muliggør vilkårlig PHP-eksekvering |
| Filstørrelse | Typisk 1 KB - 500 KB |
| PHP-versionsunderstøttelse | Kompatibel med PHP 4 til PHP 8.x; ingen ændringer på formatniveau mellem versioner |
| Associeret OS | Linux (Apache/Nginx), Windows (IIS/Apache), macOS |
| Udgivet | circa 1997-1998 (early PHP 3/Zend era) |
| Seneste version | PHP 8.x (2024); .phtml itself has no versioning |
| Specifikation | www.php.net |
PHTML-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om PHTML-filer.