PHP innerhalb HTML
Tommy
- htaccess
- html
- php
0 Auge
0 Tommy0 Felix Riesterer
-2 Hans Baumann
0 Auge
0 encoder
Hallo, noch eine weitere Frage zu .htaccess.
Um php in HTML einzubinden, habe ich nach einer Recherche in der .htaccess folgendes Statement eingefügt.
AddHandler application/x-httpd-php .html .htm
Leider hat dies nicht funktioniert, daher weitere Suche, Ergebnis:
AddType application/x-httpd-php .html .htm
Jetzt aber öffnet sich, wenn ich die Seite aufrufe, ein Fenster zum Download der HTML-Datei.
Gibt es eine Variante, die funktioniert?
Hallo
AddType application/x-httpd-php .html .htm
Jetzt aber öffnet sich, wenn ich die Seite aufrufe, ein Fenster zum Download der HTML-Datei.
Das geschieht typischerweise dann, wenn auf dem Webserver PHP nicht installiert oder für den Webserver nicht erreichbar ist. Läuft bei dir ein Webserver [1]? Läuft auf dem Webserver – so er denn läuft – ein PHP-Interpreter?
Tschö, Auge
Deine Fragen zu .htaccess lassen zumindest das vermuten. ↩︎
Hi,
der PHP-Interpeter ist vorhanden, denn wenn ich die Datei in .php umbenenne, funktioniert es.
Allerdings soll die Anwendung mit der Endung html erstellt werden.
Liebe(r) Tommy,
es ist möglich, Requests intern auf ein PHP-Script umzuleiten, damit dieses dann entscheidet, was es mit dem Request tut. So kann der scheinbar harmlose Aufruf einer HTML-Datei dazu führen, dass der Webserver die tollsten Dinge tut, weil ein PHP-Script dabei abgearbeitet wird.
Das könnte dann in etwa so arbeiten:
https://example.org/dir/file.htm
→ https://example.org/script.php?target=/dir/file.htm
Liebe Grüße
Felix Riesterer
Hallo,
also ... ein html als php ausführen lassen, das sollte nie gemacht werden. Wenn der Kunde wirklich drauf besteht, dass es mit einem .html aufgerufen werden soll, dann einfach die file.html so gestalten: <meta http-equiv="refresh" content="0; URL=./file.php" /> Dann ist es sauber, Du musst nicht mit dem type-Änderungen tricksen - denn wenn ich so einen Webserver sehe, bei dem ein html nicht "gelesen" wird, sondern mit dem php-Interpreter bearbeitet wird, dann mach ich den Webserver sehr schnell platt ...
bitte: immer auch ein wenig auf Sicherheit achten. Danke,
Hans
Hallo
also ... ein html als php ausführen lassen, das sollte nie gemacht werden.
Ich bin zwar deiner Meinung, verstehe deine Begründung aber nicht. HTML-Dateien ohne PHP-Code durch den PHP-Interpreter zu schicken geht auf die Performanz. Vor Jahren nahmen einige nach veröffentlichten Messungen den Faktor 1000 an, um den der Umweg über den Interpreter trotz nicht vorhandenem PHP-Code langsamer sei. Auch wenn das mit heutigen PHP-Versionen vielleicht sehr viel schneller sein sollte, langsamer als die reine Auslieferung eines statischen HTML-Dokuments bleibt es dennoch.
bitte: immer auch ein wenig auf Sicherheit achten.
Was aber die „Sicherheit“ damit zu tun hat, erschließt sich mir nicht.
Wenn denn unsicherer Code in einem PHP-Skript ist, ist der unsicher, egal ob die Dateieindung .html
oder .php
lautet. Das macht also keinen Unterschied.
Wenn der Kunde wirklich drauf besteht, dass es mit einem .html aufgerufen werden soll, dann einfach die file.html so gestalten: <meta http-equiv="refresh" content="0; URL=./file.php" />
Diese Umleitung kommt ihrerseits mit Performanzkosten daher. Das finde ich nicht so schlau.
Tschö, Auge
Hallo Hans,
nein, durch einen Redirect im HTML würde ich das keinesfalls lösen, das fällt spätestens auf wenn im Browser "zurück" geklickt wird. Ich hatte dafür schon ein - gegeben, aber wieder zurückgenommen weil das meiste ja durchaus richtig ist. Vorhandene - sind also von anderen, aber der Grund wird die Idee mit dem Meta Refresh sein.
Wenn man nur wenige html Dateien mit PHP behandeln will, sollte man dafür in der .htaccess Regeln vorsehen. Warum es bei Tommy scheitert, weiß ich allerdings gerade auch nicht
Ich stimme dir jedoch zu, dass eine Generalzuweisung von HTML an den PHP Interpreter vermieden werden sollte, weil man sich damit die Möglichkeit verbaut, statische Seiten effizient auszuliefern.
Rolf
Hallo
es ist möglich, Requests intern auf ein PHP-Script umzuleiten, damit dieses dann entscheidet, was es mit dem Request tut.
Das mag in Fällen hilfreich sein, aber hier geht es, wenn ich Tommy richtig verstanden habe, darum HTML-Dateien grundsätzlich durch den PHP-Interpreter zu jagen.
Seine erste im Ausgangsposting gezeigte Zeile sollte das prinzipiell tun.
AddHandler application/x-httpd-php .html .htm
Alle Beschreibungen, die ich finde, enthalten allerdings zusätzlich noch verklausuliert die Version des PHP-Interpreters („application/x-httpd-php72“ in dem Beispiel für PHP 7.2) und die PHP-Dateitypenendung(en) neben denen für HTML-Dateien („.php .php5 .html .htm“ [1]). Zumindest der Handler in den von mir gefundenen Beispielen (x-httpd-php72
) sieht sehr nach Linux aus, keine Ahnung, ob das unter Windows identisch aussähe.
Es wäre wohl sinnvoll, den gesamten Inhalt der .htaccess-Datei zu kennen.
Tschö, Auge
Ich kenne zwar noch *.php3
(lange ist's her), habe aber *.php5
noch nie gesehen. Wer's auch immer (heute noch) braucht, soll es stehen lassen, alle anderen können es weglassen. ↩︎
Allerdings soll die Anwendung mit der Endung html erstellt werden.
Ich würde demjenigen der das so haben möchte erklären dass das mit großer Wahrscheinlichkeit nicht so sein soll, genauso wie man Bilder nicht mit der Endung .pdf oder .txt speichert.
Was ist denn der Grund um das so machen zu wollen/müssen? Vielleicht gibt es ja eine Lösung die das Problem besser angeht.
Moin,
Ich würde demjenigen der das so haben möchte erklären dass das mit großer Wahrscheinlichkeit nicht so sein soll, genauso wie man Bilder nicht mit der Endung .pdf oder .txt speichert.
oder Gewürzgurken in einem Glas mit Apfelmus-Etikett.
Was ist denn der Grund um das so machen zu wollen/müssen? Vielleicht gibt es ja eine Lösung die das Problem besser angeht.
Zum Beispiel MultiViews. Dann braucht's nicht einmal das Suffix .html im Request, weil der Apache selbst etwas Passendes raussucht.
Einen schönen Tag noch
Martin