Wie füge ich HTML-Dateien (.html) PHP-Code / Datei hinzu?

97

Ich kann PHP nicht in meinen HTML-Seiten verwenden. Zum Beispiel index.html. Ich habe versucht, beide zu verwenden:

<? contents ?> 

und

<?php contents ?> 

Keine dieser Arbeiten. Mein Server bietet PHP an, und wenn ich eine .phpErweiterung verwende, funktioniert sie ordnungsgemäß. Ist das ein Problem oder muss ich die Einstellungen ändern php.ini?

Hoon
quelle
2
Sie müssten Ihren Server ändern (ich nehme Apache an), um HTML-Dateien als PHP bereitzustellen, aber warum soll die Erweiterung HTML anstelle von PHP sein?
Explosion Pills
@ExplosionPills Ich habe es mit IIS v7 gemacht! und es ist möglich!
rückgängig gemacht
@Death Ich wollte nicht implizieren, dass dies nur mit Apache möglich ist. Ich habe nur angenommen, dass er Apache verwendet.
Explosion Pills
1
Was für eine schreckliche Idee. Verwenden Sie Weiterleitungen, um Ihre SEO zu speichern. Verwenden Sie .html für HTML und .php für PHP.
Alien Technology

Antworten:

142

Sie können PHP nicht in HTML-Dateien ausführen, da der Server dies nicht als gültige PHP-Erweiterung erkennt, es sei denn, Sie weisen dies an. Dazu müssen Sie eine .htaccess-Datei in Ihrem Root-Webverzeichnis erstellen und diese Zeile hinzufügen:

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

Dadurch wird Apache angewiesen, Dateien mit der Dateierweiterung .htm oder .html als PHP-Dateien zu verarbeiten.

John Conde
quelle
15
Obwohl dies richtig ist, denke ich, ist eine wichtigere Frage, warum dies so ist. Darüber hinaus sollte er die Serverkonfiguration aktualisieren, anstatt sie zu verwenden, .htaccesswenn dies eine Option ist.
Explosion Pills
10
Ich habe dies mehrfach getan, um die Tatsache zu verbergen, dass ich PHP (zusätzlich zu anderen Dingen) verwende
Nickb
3
@nickb - Sicherheit durch Dunkelheit?
Nathan Long
2
@NathanLong w3.org/TR/cooluris Insbesondere: "Halten Sie implementierungsspezifische Elemente wie .php und .asp von Ihren URIs fern. Möglicherweise möchten Sie die Technologien später ändern." in Abschnitt 4.5.
Eric Finn
4
@ EricFinn - das ist eine gute Richtlinie. Es .htmlist jedoch nicht einmal oder hilfreich, wenn der Server Dateien als PHP verarbeitet , um sie zu befolgen. Sie möchten, dass Benutzer besuchen example.com/foo. Sie können diese URL verwenden, um PHP-Inhalte unabhängig von den Dateinamen auf Ihrem Server bereitzustellen. Wenn Benutzer bereits foo.htmlLesezeichen gesetzt haben, können Sie weiterhin foo.phpohne Umbenennen der Datei dienen.
Nathan Long
20

Ich denke, PHP in eine HTML-Datei zu schreiben ist verwirrend und anti-natürlich. Warum würdest du das tun??

Wenn Sie PHP-Dateien ausführen und in der Adressleiste als .html anzeigen möchten, ist es am einfachsten, .php wie gewohnt zu verwenden und eine Regel wie folgt in Ihren .htaccess zu schreiben:

RewriteRule ^([^.]+)\.html$ $1.php [L]
David Morales
quelle
Was ist, wenn ich PHP + HTML verwende? Welches Format soll ich verwenden? Ich bin ziemlich verwirrt. Meine Seite enthält sehr kurzen Code, der auf PHP basiert, und es gibt viele Codes in HTML. Also wollte ich eine HTML-Datei erstellen. Ist das eine schlechte Angewohnheit?
Hoon
3
Das Format sollte .php sein, da .html-Dateien nur HTML-Code enthalten sollen.
David Morales
15

Um PHP in HTML-Dateien verwenden zu können, müssen Sie sie Ihrem PHP-Prozessor in der Konfigurationsdatei Ihres HTTP-Servers zuordnen. In Apache sieht das so aus:

AddHandler application/x-httpd-php .html
Chris Trahey
quelle
Möchten Sie den Unterschied zwischen AddHandlerund kommentieren AddType? Vielen Dank.
PatrickT
1
@PatrickT Der einfachste Weg zum Vergleichen ist, dass AddHandler eine "Eingabe" -Zuordnung ist - es ordnet eine eingehende Dateierweiterung einem Handler zu. AddType ändert den Ausgabe-MIME-Header. Siehe den Hinweis hier: httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
Chris Trahey
13

Sie können .htaccess wie bereits erwähnt ändern. Die schnellste Lösung besteht jedoch darin, die Dateierweiterung in .php umzubenennen

CAAY
quelle
Sie können auch versuchen .phtml
Floggedhorse
9

Fügen Sie diese Zeile hinzu

AddHandler application/x-httpd-php .html

um zu httpd.confarchivieren, was Sie tun möchten. Aber denken Sie daran, wenn Sie dies tun, wird Ihr Webserver sehr langsam sein, da er sogar statischen Code analysiert, der keinen PHP-Code enthält. Der bessere Weg ist also, die Dateierweiterung .phtmlstatt nur zu machen .html.

Badar
quelle
5
Denken Sie daran, bitte nicht Ihre gesamte Antwort fett zu schreiben.
David Morales
7

Um auch .htmlDateien analysieren zu können, müssen Sie den entsprechenden Handler in Ihrer Serverkonfiguration festlegen.

Für Apache httpd 2.X ist dies die folgende Zeile

AddHandler application/x-httpd-php .html

Informationen zu Ihrer spezifischen Serverinstallation finden Sie im PHP-Dokument .

Sirko
quelle
6

Standardmäßig können Sie PHP nicht in HTML-Seiten verwenden.

Ändern Sie dazu Ihre .htacccess-Datei wie folgt:

AddType application/x-httpd-php .html
Kerry Ritter
quelle
4

Wenn Sie nur PHP-Code in einer HTML-Datei haben, aber mehrere andere Dateien, die nur HTML-Code enthalten, können Sie Ihrer .htaccess-Datei Folgendes hinzufügen, damit diese bestimmte Datei nur als PHP dient.

<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>

Dadurch wird das PHP NUR in der Datei "yourpage.html" und nicht auf allen HTML-Seiten ausführbar, wodurch eine Verlangsamung auf Ihrem gesamten Server verhindert wird.

Um herauszufinden, warum jemand PHP über eine HTML-Datei bereitstellen möchte, verwende ich die IMPORTHTML-Funktion in Google-Tabellen, um JSON-Daten von einer externen URL zu importieren, die mit PHP analysiert werden muss, um sie zu bereinigen und eine HTML-Tabelle zu erstellen. Bisher habe ich keine Möglichkeit gefunden, eine .php-Datei in Google-Tabellen zu importieren. Daher muss sie als .html-Datei gespeichert werden, damit die Funktion funktioniert. Für diese spezielle Verwendung ist es erforderlich, PHP über eine HTML-Datei bereitstellen zu können.

MistyDawn
quelle
Sehr praktisch.
Quantme
4

Erstellen Sie eine leere Datei mit dem Editor und nennen Sie sie .htaccess. Kopieren Sie diese Datei dann in Ihr Projektverzeichnis, fügen Sie diese Zeile hinzu und speichern Sie sie.

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

Andernfalls speichern Sie die HTML-Datei mit .php, da PHP HTML unterstützen kann, und speichern Sie sie im Pfad computer / var / www / html (Linux).

Progga Ilma
quelle
1
Vielen Dank, dass Sie diejenigen in Betracht gezogen haben, die nicht einmal wissen, wie man eine .htaccess-Datei erstellt.
Quantme
0

AJAX ist auch eine Möglichkeit. Tatsächlich möchten Sie Daten von der PHP-Seite. Sobald Sie die Daten haben, können Sie sie trotzdem in Javascript formatieren und anzeigen.

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
quelle
0

MODERNE REVISION: Sie müssen das Problem jetzt auch beheben, indem Sie die wenig bekannten "security.limit_extensions" in php-fpm ändern. Sie werden wahrscheinlich bereits den gut dokumentierten Mechanismus kennen, mit dem Apache in AddHandler / AddType geändert wird. Darauf werde ich hier nicht eingehen.

  1. SIE MÜSSEN herausfinden, wo sich php-fpm / conf in Ihrem Setup befindet. Ich habe es so gemacht

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

  2. Ich habe das zurückbekommen

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

  3. Gehen Sie zu dieser Datei, bearbeiten Sie sie und stellen Sie sicher, dass Sie erkennen, dass sie auskommentiert ist. ZB: Ändern Sie sie von ';security.limit_extensions = .php .php3 .php4 .php5 .php7'<- NB: Beachten Sie, dass ";"diese Zeile standardmäßig deaktiviert ist und Sie nicht alle unsinnigen Erweiterungen benötigen wahrscheinlich gefährlich .. ändern Sie es in 'security.limit_extensions = .php .htm'<- beachten Sie, dass das Semikolon jetzt entfernt ist. Starten Sie dann Apache / (oder Nginx) neu und starten Sie php-fpm neu# service php-fpm restart # service httpd restart

Herr Heelis
quelle
-2

Zum Kombinieren von HTML und PHP können Sie .phtml-Dateien verwenden.

Eduardo Guardado
quelle