Ich vermute es fehlt irgend etwas beim apache2 🤔
Die Installation habe ich im anderen Beitrag beschrieben. Kommen wir zur Konfiguration.
Ich würde diese Einstellung auf ein oder wenige bestimmte(s) Verzeichnis(e) beschränken, da sonst der Apache alle html-Dateien dem PHP übergibt, das PHP diese parst und in 99% der Fälle dem Webserver einfach nur zurück gibt. Was dazu führt, dass außer dem Aufheizen des Servers und ein paar kurzen Strahlungsgewittern in diesem nichts passiert - aber eben auch, dass der Abruf der reinen HTML-Dateien etwas länger dauert als notwendig und wegen falscher Erwartungen zu einem Sicherheitsproblem ausarten kann. Nach meiner Aufassung „inakzeptabel lange, inakzeptabel riskant“. Darüber kann man sich also „trefflich streiten“ – am Ende behalte ich aber Recht.
Für das Folgende gehe ich von der Originalkonfiguration aus. Ist bei Dir etwas anders, dann musst Du das zeigen oder halt selbst adaptieren
Ich benutze also hierfür das Verzeichnis /var/www/html/test
Einer(!) der vielen(!) Wege ist, in der Datei /etc/apache/sites-enabled/000-default.conf (genauer der verlinkten Datei /etc/apache/sites-available/000-default.conf) dafür zu sorgen, dass Dateien mit der Endung „.html“ als potentielle PHP-Skripte angesehen und also vom Interpreter ausgeführt werden.
Füge dazu folgenden Abschnitt unten an. Am besten mit den Kommentaren:
### Henry war das am 02.01.2026
### s.a. https://forum.selfhtml.org/self/2025/dec/30/php-funktioniert-nicht-in-html/1823518#m1823518
### Dateien mit der Endung ".html" an PHP übergeben:
<Directory "/var/www/html/test">
<FilesMatch ".html$">
SetHandler application/x-httpd-php
</FilesMatch>
</Directory>
Ein anderer Weg wäre, den Abschnitt <FilesMatch …> … </FilesMatch> innerhalb in einer Datei mit dem Namen /var/www/html/test/.htaccess unterzubringen und in /etc/apache/sites-enabled/000-default.conf das AllowOverwrite fü+r den Ordner „/var/www/html/test“ auf einen geeigneten Wert zu setzen. Vergesse nicht, Rechte zu setzen. Der Webserver (agiert als www-data, UID 33, GID 33) muss das lesen können. /Ein anderer Weg
Egal, ob Du jetzt die Original-Konfig benutzt oder die .htaccess:
Du musst dem Server sagen, er soll mal (versuchen) seine Konfiguration neu (zu) laden:
~$ su -
~# systemctl reaload apache2
Achte auf Fehlermeldungen.
Außerdem solltest Du natürlich eine Testdatei (/var/www/html/test/test.html) anlegen und nach dem Test natürlich löschen: (mein Inhalt)
<h1>Es ist jetzt <?=date('H:i:s');?>.</h1>
Alternative, die Du unbedingt löschen solltest:
<?php phpinfo(); ?>
Denke daran, dass der Webserver diese und das Verzeichnis /var/www/html/test lesen können muss: („henry“ sei Dein Benutzername)
~$ su -
~# chown -R henry:henry /var/www/html/test
~# chmod 755 /var/www/html/test
~# chmod 644 /var/www/html/test/test.html
Danach kannst unter http://localhost/test/test.html die aktuelle Uhrzeit (oder relevante PHP-Infos)sehen.
Wenn nicht, poste hier die Fehlermeldung. Falls die als Download kommt, lade sie herunter und öffne diese mit einen Textbetrachter…
Es könnte ja sein, dass eine andere Konfiguration dem widerspricht oder halt falsch ist.