PHP include in .html Datei wird nicht ausgeführt

Mr.Church

Lieutenant
Registriert
Mai 2007
Beiträge
647
Hallo,

ich habe eine HTML-Datei, in der ich eine php-Datei inkludieren muss.
Allerdings wird der include-Befehl in der HTML-Datei nicht ausgeführt, sondern im Quelltext bleibt mein Befehl stehen.
Rufe ich die php-Datei manuell auf, wird sie ausgeführt.

PHP:
...
<body>
   <?php include ('login.php'); ?>
</body>
...

Wo könnte der Fehler sein?
 
Der "Fehler" ist das eine .html nicht von PHP geparst sondern 1:1 ausgeliefert wird. Du musst sie auf .php umbenennen. (man kann glaub ich evtl. auch was über Server Side Includes machen falls ein Umbenennen nicht möglich sein sollte, erfordert aber Eingriffe in die Serverconfig)
 
Entweder musst du die .html Datei in PHP umbenennen.
Oder den Server so konfigurieren, dass PHP-Code in HTML-Dateien auch ausgeführt wird.
 
Wobei ich letzteres nicht machen würde... jede statische HTML-Datei durch den PHP Interpreter zu jagen ist sowohl performancetechnisch als auch von der Sicherheit her nicht wirklich zu empfehlen. Dann besser den Umweg über SSI.
 
Danke.
Das Umbenennen in eine .php Datei hat die Lösung gebracht.

Allerdings dachte ich, dass ich aus einer HTML-Datei heraus auch PHP-Dateien includieren kann, und deren Inhalt dann auch ausgeführt wird. Daher hatte ich im HTML-Code das <?php ?> um den include stehen. Und in der inkludierten PHP-Datei hatte ich ja auch mit <?php ?> gearbeitet.

Einhörnchen schrieb:
Entweder musst du die .html Datei in PHP umbenennen.
Oder den Server so konfigurieren, dass PHP-Code in HTML-Dateien auch ausgeführt wird.

Hm, ich habe hier den Apache (XAMMP) laufen. Dachte der wäre default schon so konfiguriert, dass PHP-Code in HTML ausgeführt wird.
 
Einhörnchen schrieb:
Entweder musst du die .html Datei in PHP umbenennen.
Oder den Server so konfigurieren, dass PHP-Code in HTML-Dateien auch ausgeführt wird.

....wobei letzteres nicht zu empfehlen ist, da dann jede statische HTML-Datei erstmal durch den PHP-Parser gejagt wird, bevor sie der WEbserver ausliefert

@Mr.Church: jein. Du hast ja immer noch eine HTML-Datei, der Parser fängt erst an der Stelle an zu arbeiten, wo dein <?php steht. Schau dir mal
dieses Bild an: http://www.keithjbrown.co.uk/vworks/images/php1.gif
Und vergleich es mit https://docs.adobe.com/content/docs/en/dispatcher/_jcr_content/par/image.img.png/1322119849672.png

Ob eine Datei überhaupt an den PHP-Parser geschickt wird, entscheidet der Webserver meist mittels der Endung. Meist sind da standardmäßig Endung wie .php oder .php5 definiert. Natürlich kannst du dem auch .html hinzufügen, dann greift aber das, was Jesterfox unter mir schreibt: Performance & Sicherheitsbedenken
 
Zuletzt bearbeitet:
Der Include-Befehl ist selber ja schon ein PHP Befehl. Damit der wirken kann muss er vom PHP Interpreter erfasst werden, sprich die Datei muss an PHP gesendet werden. Das ist bei .html normalerweise nicht der Fall, wegen der Performance (und auch etwas Sicherheit, das man sich drauf verlassen kann das .html nur statisch behandelt wird)
 
Ja ok, ich verstehe.
Ich habe es mal so gelassen, dass ich nur mit PHP-Dateien arbeite.
Kann ja auch per echo HTML rausschreiben lassen.
 
Zurück
Oben