Jak dodać kod / plik PHP do plików HTML (.html)?

97

Nie mogę używać PHP na moich stronach HTML. Na przykład index.html. Próbowałem użyć obu:

<? contents ?> 

i

<?php contents ?> 

Żadne z tych nie działa. Mój serwer oferuje PHP, a kiedy używam .phprozszerzenia, działa poprawnie. Czy to problem, czy muszę zmienić preferencje php.ini?

Hoon
źródło
2
Musiałbyś zmienić swój serwer (zakładam, że apache), aby obsługiwał pliki html jako php, ale dlaczego chcesz, aby rozszerzenie było html zamiast php?
Tabletki wybuchowe
@ExplosionPills Zrobiłem to za pomocą IIS v7! i jest to możliwe!
cofnięte
@Death Nie chciałem sugerować, że można to zrobić tylko z apache, po prostu założyłem, że używa apache.
Tabletki wybuchowe
1
Co za okropny pomysł. Użyj przekierowań, aby zapisać swoje SEO. Użyj .html dla HTML i .php dla PHP.
Alien Technology

Odpowiedzi:

142

Nie możesz uruchamiać PHP w plikach .html, ponieważ serwer nie rozpoznaje tego jako prawidłowego rozszerzenia PHP, chyba że mu to powiesz. Aby to zrobić, musisz utworzyć plik .htaccess w swoim głównym katalogu WWW i dodać do niego następujący wiersz:

AddType application/x-httpd-php .htm .html

Dzięki temu Apache będzie przetwarzał pliki z rozszerzeniem .htm lub .html jako pliki PHP.

John Conde
źródło
15
Chociaż to prawda, myślę, że ważniejsze pytanie brzmi: dlaczego to robię? Co więcej, powinien raczej zaktualizować konfigurację serwera niż używać, .htaccessjeśli taka jest opcja.
Tabletki wybuchowe
11
Robiłem to wielokrotnie, aby ukryć fakt, że używam PHP (oprócz innych rzeczy)
nickb.
3
@nickb - bezpieczeństwo przez zaciemnienie?
Nathan Long
2
@NathanLong w3.org/TR/cooluris W szczególności: „Zachowaj specyficzne dla implementacji bity i fragmenty, takie jak .php i .asp, z dala od swoich identyfikatorów URI, możesz później zmienić technologie”. w sekcji 4.5.
Eric Finn
4
@EricFinn - to dobra wskazówka. Ale posiadanie serwera przetwarzającego .htmlpliki jako PHP nie jest nawet konieczne ani pomocne w jego przestrzeganiu. Chcesz, aby użytkownicy odwiedzali example.com/foo. Możesz użyć tego adresu URL do obsługi treści PHP niezależnie od nazw plików na serwerze. Jeśli użytkownicy już foo.htmldodali zakładki, nadal możesz obsługiwać foo.phpbez zmiany nazwy pliku.
Nathan Long
20

Myślę, że pisanie PHP do pliku .html jest mylące i antynaturalne. Dlaczego chcesz to zrobić??

W każdym razie, jeśli chcesz uruchamiać pliki PHP i wyświetlać je jako .html w pasku adresu, najłatwiejszym rozwiązaniem byłoby użycie .php normalnie i napisanie reguły w swoim .htaccess w ten sposób:

RewriteRule ^([^.]+)\.html$ $1.php [L]
David Morales
źródło
Co jeśli używam PHP + HTML? jakiego formatu powinienem użyć? Jestem dość zdezorientowany. Moja strona ma naprawdę krótki kod oparty na PHP i jest wiele kodów w HTML. Miałem więc zamiar zrobić plik HTML. Czy to zły nawyk?
Hoon
3
Powinien mieć format .php, ponieważ pliki .html mają zawierać tylko kod HTML.
David Morales,
15

Aby używać php w plikach .html, musisz powiązać je z procesorem PHP w pliku konfiguracyjnym serwera HTTP. W Apache wygląda to tak:

AddHandler application/x-httpd-php .html
Chris Trahey
źródło
czy zechciałbyś skomentować różnicę między AddHandleri AddType? Dzięki.
PatrickT
1
@PatrickT Najprostszym sposobem porównania jest to, że AddHandler jest mapowaniem „wejściowym” - mapuje przychodzące rozszerzenie pliku na moduł obsługi. AddType modyfikuje wyjściowy nagłówek typu MIME. Zobacz notatkę tutaj: httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
Chris Trahey
13

Możesz modyfikować .htaccess tak, jak mówili inni, ale najszybszym rozwiązaniem jest zmiana rozszerzenia pliku na .php

CAAY
źródło
Możesz także spróbować .phtml
Floggedhorse
9

Dodaj tę linię

AddHandler application/x-httpd-php .html

aby httpd.confzłożyć wniosek o to, co chcesz robić. Ale pamiętaj, jeśli to zrobisz, twój serwer WWW będzie bardzo wolny, ponieważ będzie przetwarzał nawet kod statyczny, który nie będzie zawierał kodu php. Więc lepszym sposobem będzie rozszerzenie pliku .phtmlzamiast po prostu .html.

Badar
źródło
5
Pamiętaj, aby nie pisać całej odpowiedzi pogrubioną czcionką.
David Morales,
7

Aby mieć również .htmlparsowane pliki, musisz ustawić odpowiednią obsługę w konfiguracji serwera.

W przypadku serwera Apache httpd 2.X jest to następujący wiersz

AddHandler application/x-httpd-php .html

Zobacz dokumentację PHP, aby uzyskać informacje na temat instalacji konkretnego serwera.

Sirko
źródło
6

Domyślnie nie możesz używać PHP na stronach HTML.

Aby to zrobić, zmodyfikuj plik .htacccess w następujący sposób:

AddType application/x-httpd-php .html
Kerry Ritter
źródło
4

Jeśli masz tylko kod php w jednym pliku html, ale masz wiele innych plików, które zawierają tylko kod html, możesz dodać następujący kod do swojego pliku .htaccess, aby obsługiwał tylko ten konkretny plik jako php.

<Files yourpage.html>
AddType application/x-httpd-php .html 
//you may need to use x-httpd-php5 if you are using php 5 or higher
</Files>

Spowoduje to, że PHP będzie wykonywalne TYLKO w pliku „yourpage.html”, a nie na wszystkich stronach html, co zapobiegnie spowolnieniu całego serwera.

Jeśli chodzi o to, dlaczego ktoś może chcieć obsługiwać php za pośrednictwem pliku html, używam funkcji IMPORTHTML w arkuszach kalkulacyjnych Google, aby zaimportować dane JSON z zewnętrznego adresu URL, który musi zostać przeanalizowany za pomocą php, aby go wyczyścić i zbudować tabelę html. Jak dotąd nie znalazłem sposobu na zaimportowanie pliku .php do arkuszy kalkulacyjnych Google, więc aby funkcja działała, musi zostać zapisany jako plik .html. Możliwość obsługi php za pośrednictwem pliku .html jest niezbędna do tego konkretnego zastosowania.

MistyDawn
źródło
Bardzo praktyczne.
Quantme
4

Utwórz pusty plik za pomocą notatnika i nazwij go .htaccess, a następnie skopiuj ten plik do katalogu projektu, dodaj tę linię i zapisz.

AddType application/x-httpd-php .htm .html

w przeciwnym razie zapisz plik .html za pomocą .php, ponieważ php może obsługiwać html i zapisz go w komputerze / var / www / html path (linux)

Progga Ilma
źródło
1
Dziękuję za rozważenie tych, którzy nawet nie wiedzą, jak utworzyć plik .htaccess.
Quantme
0

AJAX to również możliwość. Skutecznie chciałbyś mieć dane ze strony php. Gdy już masz dane, możesz je sformatować w javascript i wyświetlić.

var xmlhttp = new XMLHttpRequest();
var url = "risingStars.php";

xmlhttp.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
        getDbData(this.responseText);
    }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();


function getDbData(response) {

//do whatever you want with respone
}
Ravi Ganesh
źródło
0

NOWOCZESNA WERSJA: teraz również musisz to naprawić, zmieniając mało znane „security.limit_extensions” w php-fpm, robiąc to. Prawdopodobnie znasz już dobrze udokumentowany mechanizm zmiany Apache na AddHandler / AddType. Nie będę się tym tutaj zajmował.

  1. MUSISZ dowiedzieć się, gdzie znajduje się php-fpm / conf w twojej konfiguracji. Zrobiłem to, robiąc to

    # grep -rnw '/etc/' -e 'security.limit_extensions'

  2. Mam to z powrotem

    '/etc/php-fpm.d/www.conf:387:;security.limit_extensions = .php .php3 .php4 .php5 .php7'

  3. przejdź do tego pliku, edytuj go i UPEWNIJ SIĘ, ŻE SĄ ZROZUMIANE Np .: zmień z ';security.limit_extensions = .php .php3 .php4 .php5 .php7'<- Uwaga: zwróć uwagę na ";"- ta linia jest domyślnie WYŁĄCZONA - i nie potrzebujesz wszystkich bzdurnych rozszerzeń, w rzeczywistości są prawdopodobnie niebezpieczne ... zmień to na 'security.limit_extensions = .php .htm'<- zauważ, że średnik jest teraz usunięty. następnie zrestartuj Apache / (lub nginx) i zrestartuj php-fpm# service php-fpm restart # service httpd restart

Panie Heelis
źródło
-2

Aby połączyć HTML i PHP, możesz użyć plików .phtml.

Eduardo Guardado
źródło