Vad är filformatet PHTML?
En .phtml-fil är ett PHP-skript på serversidan som blandar HTML-kod med PHP-kodblock, funktionellt identisk med en vanlig .php-fil. Den enda betydande skillnaden är filändelsen.
När en webbserver tar emot en begäran om en .phtml-fil skickas filen genom PHP-tolken. PHP kör de inbäddade <?php ... ?>-blocken och skickar den resulterande HTML-koden till klientens webbläsare - webbläsaren ser aldrig PHP-källkoden. För att detta ska fungera måste servern vara explicit konfigurerad att behandla .phtml som PHP. I Apache kräver detta ett AddHandler application/x-httpd-php .phtml-direktiv (i .htaccess eller httpd.conf); i Nginx behövs en motsvarande fastcgi_param-mappning. Utan den konfigurationen kan servern leverera rå PHP-källkod till besökare, vilket innebär en risk för informationsläckage.
Filändelsen .phtml uppstod i slutet av 1990-talet under PHP 3 / tidiga Zend Engine-eran, när PHP ofta bäddades in direkt i HTML-mallfiler. Den fick en bestående användning i Zend Framework och används fortfarande aktivt i Magento (nu Adobe Commerce) för dess mallfiler i visningslagret.
Ur ett säkerhetsperspektiv är .phtml ett klassiskt mål för att kringgå filuppladdningsfilter: filter som blockerar .php-uppladdningar missar ofta .phtml, .php5, .php3 och liknande varianter, vilket tillåter godtycklig PHP-exekvering.
Relaterade format inkluderar vanliga .php-skript och .phps-filer (visning av PHP-källkod). Det finns inga «magic bytes» och ingen intern versionshantering; PHP-versionen som används bestäms helt av serverns konfiguration.
Säkerhet & trygghet
RISK: HIGH.phtml-filer kör godtycklig PHP-kod på servern - samma risk som .php. Kritiska säkerhetsaspekter: (1) Om ett formulär för filuppladdning i en webbapplikation tillåter .phtml-uppladdningar men blockerar .php, kan en angripare ladda upp ett PHP-webbskal med filändelsen .phtml och få fjärrkörning av kod på servern. (2) Om en server oavsiktligt exponerar .phtml-källkod (ingen PHP-hanterare konfigurerad), blir inloggningsuppgifter och databasanslutningssträngar i koden offentliga. Serveradministratörer bör: explicit lista .phtml i PHP-hanterarens konfiguration och neka skriptexekvering i uppladdningskataloger för .php, .phtml, .phar, .php3, .php4, .php5.
Formatdetaljer
i ett nötskalProgram som öppnar PHTML-filer
Tekniska detaljer
djup specifikation| Exekveringsmodell | Bearbetas på serversidan av PHP-tolken; klienten tar endast emot den renderade HTML-utmatningen |
| Kodning | Vanlig text, UTF-8 rekommenderas; historiskt ASCII eller Latin-1 |
| Kodavgränsare | <?php ... ?> (standard); <?= ... ?> (kort echo); <? ... ?> (kort tagg, föråldrad) |
| MIME-typ | application/x-httpd-php; även text/html och text/x-php beroende på serverkonfiguration |
| Apache-konfiguration | AddHandler application/x-httpd-php .phtml i .htaccess eller httpd.conf krävs för exekvering |
| Nginx-konfiguration | fastcgi_param eller location-block som mappar .phtml till PHP-FPM krävs |
| Primärt användningsområde | Magento (Adobe Commerce) mallar för visningslager; äldre Zend Framework-vyer |
| Funktionell skillnad från .php | Ingen - bearbetningen är identisk; endast filändelsen skiljer sig |
| Säkerhetsrisk | Klassiskt sätt att kringgå filuppladdningsfilter: blockerar .php men kan missa .phtml, vilket möjliggör godtycklig PHP-exekvering |
| Filstorlek | 1 KB - 500 KB typiskt |
| Stöd för PHP-versioner | Kompatibel med PHP 4 till PHP 8.x; inga ändringar på formatnivå mellan versioner |
| Associerade operativsystem | Linux (Apache/Nginx), Windows (IIS/Apache), macOS |
| Släppt | circa 1997-1998 (early PHP 3/Zend era) |
| Senaste version | PHP 8.x (2024); .phtml itself has no versioning |
| Specifikation | www.php.net |
PHTML-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om PHTML-filer.