Co to jest format pliku PHTML?
Plik .phtml to skrypt PHP po stronie serwera, który miesza znaczniki HTML z blokami kodu PHP, pod względem funkcjonalnym identyczny ze standardowym plikiem .php. Jedyną istotną różnicą jest rozszerzenie pliku.
Gdy serwer WWW otrzymuje żądanie dotyczące pliku .phtml, przekazuje go do interpretera PHP. PHP wykonuje osadzone bloki <?php ... ?> i emituje wynikowy HTML do przeglądarki klienta - przeglądarka nigdy nie widzi źródła PHP. Aby to działało, serwer musi być jawnie skonfigurowany do traktowania .phtml jako PHP. W Apache wymaga to dyrektywy AddHandler application/x-httpd-php .phtml (w .htaccess lub httpd.conf); w Nginx potrzebne jest odpowiednie mapowanie fastcgi_param. Bez tej konfiguracji serwer może dostarczyć surowy kod źródłowy PHP odwiedzającym, co stanowi ryzyko ujawnienia informacji.
Rozszerzenie .phtml powstało pod koniec lat 90. w erze PHP 3 / wczesnego Zend Engine, kiedy PHP było powszechnie osadzane bezpośrednio w plikach szablonów HTML. Zyskało trwałe zastosowanie w Zend Framework i pozostaje aktywnie używane w Magento (obecnie Adobe Commerce) dla plików szablonów warstwy widoku.
Z punktu widzenia bezpieczeństwa, .phtml jest klasycznym celem obejścia filtrów przesyłania plików: filtry blokujące przesyłanie .php często pomijają .phtml, .php5, .php3 i podobne warianty, umożliwiając wykonanie dowolnego kodu PHP.
Powiązane formaty obejmują zwykłe skrypty .php oraz pliki .phps (wyświetlanie źródła PHP). Nie istnieją żadne magiczne bajty ani wewnętrzne wersjonowanie; wersja środowiska wykonawczego PHP jest określana wyłącznie przez konfigurację serwera.
Bezpieczeństwo
RYZYKO: HIGHPliki .phtml wykonują dowolny kod PHP na serwerze - to samo ryzyko co w przypadku .php. Krytyczne kwestie bezpieczeństwa: (1) Jeśli formularz przesyłania plików w aplikacji internetowej pozwala na pliki .phtml, blokując jednocześnie .php, atakujący może przesłać webshell PHP z rozszerzeniem .phtml i uzyskać zdalne wykonanie kodu na serwerze. (2) Jeśli serwer przypadkowo ujawni źródło .phtml (brak skonfigurowanego handlera PHP), poświadczenia i ciągi połączeń z bazą danych w kodzie staną się publiczne. Administratorzy serwerów powinni: jawnie wymienić .phtml w konfiguracji handlera PHP i zabronić wykonywania skryptów w katalogach przesyłania dla .php, .phtml, .phar, .php3, .php4, .php5.
Szczegóły formatu
w pigułceProgramy otwierające pliki PHTML
Szczegóły techniczne
specyfikacja| Model wykonywania | Przetwarzany po stronie serwera przez interpreter PHP; klient otrzymuje tylko wyrenderowany wynik HTML |
| Kodowanie | Zwykły tekst, zalecany UTF-8; historycznie ASCII lub Latin-1 |
| Ograniczniki kodu | <?php ... ?> (standardowe); <?= ... ?> (krótkie echo); <? ... ?> (krótki tag, przestarzałe) |
| Typ MIME | application/x-httpd-php; także text/html i text/x-php w zależności od konfiguracji serwera |
| Konfiguracja Apache | Wymagane AddHandler application/x-httpd-php .phtml w .htaccess lub httpd.conf do wykonania |
| Konfiguracja Nginx | Wymagane mapowanie fastcgi_param lub bloku location .phtml do PHP-FPM |
| Główne zastosowanie | Szablony warstwy widoku Magento (Adobe Commerce); starsze widoki Zend Framework |
| Różnica funkcjonalna względem .php | Brak - przetwarzanie jest identyczne; różni się tylko rozszerzenie pliku |
| Ryzyko bezpieczeństwa | Klasyczne obejście filtra przesyłania plików: blokuje .php, ale może pomijać .phtml, umożliwiając wykonanie dowolnego kodu PHP |
| Rozmiar pliku | Zazwyczaj 1 KB - 500 KB |
| Obsługa wersji PHP | Kompatybilny z PHP 4 do PHP 8.x; brak zmian na poziomie formatu między wersjami |
| Powiązane systemy operacyjne | Linux (Apache/Nginx), Windows (IIS/Apache), macOS |
| Wydano | circa 1997-1998 (early PHP 3/Zend era) |
| Najnowsza wersja | PHP 8.x (2024); .phtml itself has no versioning |
| Specyfikacja | www.php.net |
Konwersje PHTML
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki PHTML.