PHP Version ganz einfach einstellen via .htaccess

Aktualisiert am 19. Januar 2024

Jede PHP-Version wird drei Jahre lang vollständig unterstützt. Ab dann greift z.B. bei Strato & IONOS der Extended Support, der oft kostenpflichtig ist und dafür sorgt, dass die Webseiten sind so weiterhin vor Angriffen geschützt werden, die durch ein unsicheres PHP möglich wären.

Manchmal muss man einfach manuell ran:

  • z.B. wenn du eine alte CMS-Installation hast, die nur mit der PHP-Version 7.4 funktioniert und du von einer automatischen Umstellung von 8.0 wieder auf 7.4 willst, aber dein Provider bietet diese Wechsel-Funktionalität in seinem Backend nicht an.
  • Oder du hast zwei oder mehr WordPress-Installationen in einem Paket (oder Joomla, Contao etc.). Bei Strato z.B. gibt es nur eine globale Einstellung der PHP Version, d.h. alle Websites in einem Webhosting-Paket haben dieselbe PHP-Version, hier müsst ihr auf eine Anpassung der .htaccess zurückgreifen. Mit diesem Eintrag in der .htaccess Datei kann z.B PHP 8.0 für einzelne Projekte explizit definiert werden.

Was ist PHP überhaupt?

PHP steht für “Hypertext Preprocessor” (ursprünglich “Personal Home Page”). In einfachen Worten ist PHP eine Skriptsprache, die speziell für die Webentwicklung entwickelt wurde. Sie wird verwendet, um dynamische Webseiten zu erstellen, das bedeutet, Webseiten, die sich z.B. je nach Benutzerinteraktion verändern können.

Warum eine aktuelle PHP-Version wichtig ist

Veraltete PHP Versionen werden nicht mehr mit Sicherheitsupdates versorgt.

Jeder Versionszweig von PHP wird ab der ersten stabilen Version zwei Jahre lang vollständig unterstützt. Während dieses Zeitraums werden gemeldete Fehler und Sicherheitsprobleme behoben und in regelmäßigen Zwischenversionen veröffentlicht, danach wird diese PHP-Version für ein weiteres Jahr nur für kritische Sicherheitsprobleme unterstützt. Nach Ablauf des dreijährigen Supports erreicht diese Version ihr Lebensende und wird nicht mehr unterstützt.  Quelle: php.net/supported-versions ↑

Der Provider hält normalerweise die aktuelle PHP-Version für dich vor, die Aktualisierung überlässt er allerdings dir, weil er nicht sicherstellen kann, ob deine Website einwandfrei weiter funktioniert.

Welche PHP Version solltest du wählen?

Ich empfehle dir, immer die neueste PHP-Version zu benutzen. Bei allen Providern hast du die Möglichkeit, ausprobieren, ob deine Webseite einwandfrei funktioniert mit  der jeweiligen PHP Version. Du kannst auch immer zurück in eine niedrigere Version wechseln.

Im Allgemeinen wird die Seite durch das neue PHP schneller und sicherer. Wenn deine Webseite aktuell ist und alle Plugins auch, funktioniert es meistens.

Probleme gibt es zum Beispiel bei alten Joomla-Installationen, Hier muss die Webseite erst in eine aktuelle Joomla Version migriert werden, dann passen die aktuellen PHP Versionen.

Extended  Support

wenn du an deiner alten Softwareinstallation festhalten möchtest, dann musst du in den Extended  Support investieren. Dieser stellt sicher, dass deine Webseite stabil weiterläuft.

Unterschied AddHandler und AddTyp

In der .htaccess-Datei können verschiedene Konfigurationen für einen Webserver festgelegt werden. Es gibt Optionen wie “AddHandler” und “AddType”.

AddHandler wird verwendet, um einen Behandlung bestimmter Dateitypen festzulegen. Ein Handler ist ein Programm oder ein Skript, das ausgeführt wird, wenn ein bestimmter Dateityp vom Server angefordert wird. Zum Beispiel wird der PHP-Handler aufgerufen, wenn also eine Datei mit der Endung .php anfordert wird.

AddType legt den MIME-Typ einer Datei fest. Der MIME-Typ gibt an, wie der Browser eine bestimmte Datei interpretieren soll. Beispielsweise ein Bild im PNG-Format, dessen MIME-Typ auf “image/png” gesetzt ist. Der Browser weiß dann, dass er das Bild als PNG-Bild interpretieren soll und kann es entsprechend darstellen. Andere MIME-Typen: .doc, .pdf, .html, .gif, .jpg …. etc.

Der AddHandler wird also verwendet, um die Behandlung bestimmter Dateitypen festzulegen, AddType legt den MIME-Type fest, damit z.B. Chrome weiß, was er machen soll.

Was ist besser, um die PHP Version anzupassen? AddHandler oder AddType?

Grundsätzlich wird AddHandler verwendet, wenn wir Dateien auf dem Server verarbeiten wollen, und AddType, wenn wir Dateien auf den Browsern verarbeiten wollen. Einige Dateitypen wie .php müssen auf dem Server und nicht im Browser des Benutzers verarbeitet werden, daher verwendest du besser AddHandler.

Kurz und gut… AddType definiert, wie ein Client (z.B. ein Webbrowser) mit einer Datei (oder einem Datenstrom) umgehen soll, während AddHandler definiert, wie ein Server eine Datei analysieren soll.

PHP-Version per .htaccess mit AddType einstellen

Auf PHP 8 updaten

AddType application/x-httpd-php8 .php

Ändern zu PHP 7.3

AddType application/x-httpd-php73 .php

Ändern zu PHP 7.2

AddType application/x-httpd-php72 .php

Ändern zu PHP 5.6

AddType application/x-httpd-php56 .php

PHP-Version mit AddHandler anpassen

Bei Alfahosting braucht explizit den AddHandler und hat es eine Servertechnik, die auch mit OPCache arbeitet, du brauchst bei Alfahosting also unten stehenden Code. du diesen Code. Wenn du dich fragst, was OPCache ist: OPCache ist ein Cache-System für PHP-Code, das in der PHP-Engine integriert ist. Es speichert den PHP-Code im Arbeitsspeicher des Servers, um dessen Ausführung zu beschleunigen. Aber Achtung, funktioniert nicht bei jeder Anwendung.

PHP 8.0 
AddHandler x-httpd-php8.0 .php

oder

PHP 8.0 mit OPcache 
AddHandler x-httpd-opcache-php8.0 .php

PHP 7.4
AddHandler x-httpd-php7.4 .php

oder

PHP 7.4 mit OPcache
AddHandler x-httpd-opcache-php7.4 .php

Bei WordPress im .htaccess File die PHP Version festlegen

und dann natürlich bei einem PHP-Update wieder anpassen!

AddHandler application/x-httpd-php8 .php

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Was ist eine .htaccess-Datei?

Eine .htaccess-Datei ist eine reine Textdatei und steht für Hypertext Access.

Sie ist eine Konfigurationsdatei, die von apache-basierten Webservern verwendet wird. Mit der .htaccess wird die Anfangseinstellung des Servers konfiguriert ohne das die Hauptkonfigurationsdatei httpd.conf des Webservers angefasst wird. Deshalb liegt die .htaccess im Root-Verzeichnis deiner Homepage, d.h. bei WordPress da wo auch die Ordner wp-admin, wp-content und die liesmich.txt-Datei liegt. Oder bei statischem HTML: da wo die Index.html oder Index.php liegt.

Mit einer .htaccess-Datei kannst du auch suchmaschinenfreundliche 301-Weiterleitung realisieren →.

Die .htaccess einblenden im Dateiverzeichnis und bearbeiten

Systemdateien werden von den gängigen Betriebssystemen ausgeblendet. Wenn du dich also wunderst, wo diese .htaccess bei dir liegt, musst du die Funktion “Versteckte Dateien anzeigen” anschalten.

Die PHP-Version (oder anderes) kannst du ganz einfach in einem üblichen Editor innerhalb der .htacces anpassen. Sichere eine Original-Datei, damit du ggf. wie auf Anfang setzen kannst.

Dateien mit Punkt davor im Mac anzeigen lassen

  1. Öffnen den Ordner im Finder, in dem du die versteckten Dateien anzeigen willst
  2. Drücke die Tastenkombination Befehlstaste, Shift-Taste und Punkt: [cmd] + [shift] + [.]
  3. Jetzt kannst du die versteckten Dateien und Ordner sehen und bearbeiten

Versteckte Ordner ab Windows 10 anzeigen

  1. Öffne den Explorer: Ordnersymbol oder Shortcut [Windows]+[E]
  2. Ansicht Optionen Ordner-und Suchoptionen ändern.
  3. Wähle die Registerkarte AnsichtErweiterte Einstellungen und
  4. mach ein Häkchen bei Option Versteckte Dateien, Ordner und Laufwerke anzeigen.
Versteckte Dateien in Windows anzeigen lassen
Windows: Versteckte Dateien anzeigen lassen

 

PHP-Version bei Strato, All-inkl & Alfahosting anpassen

Normalerweise kannst du ganz leicht im Backend deines Providers die PHP-Version mit einem Klick anpassen – und wenn deine Homepage nicht mehr funktioniert, wieder auf die vorherige zurücksetzen. Nur die aktuellen PHP-Versionen werden kostenfrei bei deinem Provider unterstützt, für PHP 5.6 z.B. verlangt Strato fast 8 Euro/Monat als sogenannten “Extended Support”.

  • Strato:  “Datenbanken und Webspace” zur PHP-Version
  • All-inkl.com: erst die jeweilige Domain anklicken und dort den Bearbeitungsmodus wählen
  • Alfahosting: Meine Verträge > Vertrag > Experteneinstellungen > PHP-Versionsanalyse

PHP bei IONOS anpassen

Diese Bilddokumentation ist auch für mich selber, weil ich es immer wieder vergesse 🙂

  • Klicke in der Titelleiste auf Menü → Hosting und dann
  • … in der Kachel PHP auf Verwalten, um zu den PHP-Einstellungen zu gelangen

Wenn dir IONOS den Extended Support aufgedrückt hat, für den du extra zahlst, kannst du den nachfolgenden Dialog den Link „Zur Kündigung des PHP Extended Supports“ anklicken, um zu kündigen.

PHP-Version bei Strato anpassen

Auch bei Strato findest du ganz einfach unter  Datenbanken und Webspace einen Menüpunkt wo du die aktuelle  PHP Version einstellen kannst. Strato empfiehlt dir meistens die nächst höhere Version, du solltest aber immer die  neueste  nehmen. Wenn deine Webseite und die Plugs aktuell sind, passt das auch.

An dieser Stelle ein laufend aktualisierter Artikel, welche PHP-Version schneller ist von Kinsta.com ↑.

PHP-Version bei Strato via .htaccess anpassen

Offensichtlich zickt Strato rum, wie ihr aus den Kommentaren ersehen könnt. Gelingt es also nicht, per Klick die aktuelle WordPress-Version anzupassen, wird ein “Schwerer Fehler” erzeugt, dann erstmal zurück auf PHP7.4 und folgendes ausprobieren. Bitte achtet darauf, dass alle Plugins auch kompatibel sind. Das erfahrt ihr z.B. über euer WordPress-Plugin-Verzeichnis, klicke einfach Details.

Lösung 1: .htaccess ergänzen

Diese Lösung kommt von Bastian Kettner, siehe die Kommentare.

Ergänze dein .htaccess so:

# BEGIN Hoster
AddType application/x-httpd-php80 .php
# END Hoster

Lösung 2: wp-config.php anpassen

Diese Lösung kommt von Birgitte Tüpker, siehe die Kommentare

Ändere diese Zeile in der wp-config.php
define( ‘WP_AUTO_UPDATE_CORE’, minor );
Ersetze “minor” durch “true” und es funktioniert.

define( 'WP_AUTO_UPDATE_CORE', true );

Lösung 3: Wenn nichts hilft – Homepage neu installieren

Du kannst ein Backup z.B. mit WordPress-Plugin All-in-one-Migration ↑ der Homepage erstellen, über die 1-Klick-Installation bei Strato WordPress installieren und dort z.B. über All-in-one-Migration das Backup einspielen. Diese Plugin hat ein Upload-Begrenzung von 512 MB, du kannst das Plugin für deine Erfordernisse wie in dem Artikel von Kiran how-to-increase-the-512mb-limit-in-all-in-one-wp-migration ↑ gut beschrieben.

Gut zu wissen: PHP-Versionen downloaden

Falls du auf eine PHP-Version zurückgreifen möchtest, kannst du über Githup verschiedene PHP-Versionen downloaden ↑

Das kann notwendig sein, wenn eine bestimmte Konfiguration nur mit PHP 5.6 funktioniert – so geschehen in einem Fall bei einer Kundin, die eine alte Joomla-Seite lokal installiert haben wollte, aber mein Mamp nur die aktuellen PHP-Versionen anbot. Joomla ist ein CMS wie WordPress, aber deutlich bedienungsunfreundlicher. Und bei einem Update von 5.6 auf 7.4 schon wurde die Seite zerschossen und man hätte die Website “migrieren” müssen, also ein hoher Aufwand. Mamp ist ein Programm für Mac (Xampp für Windows), mit dem man lokal eine Website installieren kann.

Welche PHP-Version nutzt deine Website?

Hierzu fand ich ein nützliches Tool auf dieser Seite: Einfach deine Website einsetzen und dann wird die PHP-Version automatisch ausgelesen: https://deving.de/web-tools/php-und-webserver-version-von-einer-webseite-ermitteln/

PHP-Version mit eigener Datei ermitteln

Auch im Prinzip einfach, erfordert jedoch ein paar weitere Schritte:

Du nutzt die phpinfo()-Funktion. Erstelle eine PHP-Datei mit beliebigem Namen mit dem Inhalt

<?php phpinfo(); ?>

und lege diese via (S)FTP auf deinen Webserver und rufe sie dann über den Browser auf: domain.de/zeige-phpversion.php

 


Lies hierzu auch meinen Artikel, was bei einem Domain-Umzug alles zu beachten ist →

22 Gedanken zu „PHP Version ganz einfach einstellen via .htaccess“

  1. Vielen Dank für die tolle Anleitung.
    Strato stellt jetzt dann auch mal auf PHP 8.0 und verlangt für PHP7.4 eine Extragebühr.
    Ich habe genau das hier in die htaccess-Datei eingefügt:
    AddHandler application/x-httpd-php8 .php

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    # END WordPress

    Die Folge ist allerdings, dass ich beim Klick auf einen Menüpunkt oder beim Neuladen der Website nur den Download der wp-blog-header.php angeboten bekomme.
    Nehme ich das AddHandler application/x-httpd-php8 .php wieder raus, funktioniert es wieder.
    Irgendeine Idee, was ich falsch mache?
    Beste Grüße, Birgitte

    Antworten
    • Hallo Brigitte, wenn du bei Strato bist, kannst du (wie bei den meisten Providern) im Backend die PHP-Version ändern, OHNE in die .htaccess einzugreifen. Sollte deine PHP-Version deine Seite zerschießen, kannst du innerhalb von Strato auf PHP 7.4 zurück und erstmal deine Seite PHP 8-konform machen. Deine .htaccess würde ich wieder bereinigen, d.h. der Inhalt ab #Begin WordPress bleibt stehen.
      Ich hoffe, diese Infos helfen dir.

      Antworten
      • Vielen Dank für deine schnelle Antwort,
        leider hat Strato das geändert. So funktionierte es bisher, hat auch immer reibungslos geklappt.
        Jetzt sind Anpassungen in der htaccess notwendig, so sagte es mir der Support.
        Das Ziel dieser erschwerten Umstellung ist sicher, dass man in seiner Verzweiflung auf den kostenpflichtigen Support für PHP7.4 zurückgreift.

        Antworten
        • Ich habe gerade einige Websites auf PHP8 umgestellt und es funktioniert wie gewohnt. Bei einer hatte ich technische Schwierigkeiten. Hier habe ich ein Backup von der Homepage gemacht und diese dann neu installiert, als PHP 8 lief. Man muss ja auch auf PHP 8 umstellen, um den Extended Support für PHP 7.4 los zu sein. Das läuft ja sehr schräg bei dir.

          Antworten
          • Echt interessant, bei mir klappt bei allen vier Kundenprojekten, die ich noch bei Strato habe, nicht. Wenn ich bei Strato in die Verwaltung der WordPress Anwendungen gehe, steht die WordPress Installation dort in einer Version von 2015 (da wurde die Website erstellt). Die Aktualisierungen mache ich immer in der WordPress-Anwendung selbst, da ist alles auf dem neuesten Stand. Scheint so, als bekäme Strato das nicht mit. Ob es daran liegt? Machst du die Aktualisierungen deiner WordPress-Seite über Strato?

          • Meine WordPress-Seiten sind immer up-to-date, ich arbeite mit gängigen Themes und Plugins, ganz selten passen die nicht zu der aktuellen WP-Version. Innerhalb von WordPress: Ich ziehe erst ein Backup, bei jedem Update eines Plugins prüfe ich die Funktionalität. Bei jedem Update des Plugins prüfe ich die Funktionalität, und die PHP-Umstellung mache ich immer über Strato, wie in dem Bild, was du im Beitrag findest. Die Installation von WordPress innerhalb von Strato ignoriere ich, auch wenn eine 1-Klick-Installation vorliegt.

  2. Genauso mache ich es auch.
    Alle 4 Kundenprojekte sind nach dem Upgrade auf PHP 8.0 verschwunden und es wir ein schwerwiegender Fehler angezeigt. Deshalb musste ich wieder downgraden. Support? Ja, nach 45 Minuten in der Hotline bekam ich den Tipp mit der htaccess – der ja auch wieder falsch zu sein scheint bei WordPress.

    Antworten
    • Ich hatte diesen schwer wiegenden Fehler einmal. Da war die Homepage in einem Unterverzeichnis installiert, das der Webdesigner angelegt hatte und die Website wurde so dargestellt: http://www.domain.de/wordpress, das habe ich korrigiert, indem ich
      die Seite intern so eingestellte, dass sie mit http://www.domain.de geöffnet werden konnte, alles schien okay. Und bei dem Upgrade auf PHP 8.0 funktionierte nichts mehr.
      Dann habe ich ein Backup gezogen (All-in-one-Migration), die Homepage gelöscht und eine 1-Klick-Installation auf die Domain durchgeführt und das Backup eingespielt. Dann klappte auch PHP8

      Antworten
  3. Ich hatte das gleiche Problem bei meiner 1-Klick-Wordpress-Installation bei Strato. PHP Version im Strato Backend auf 8.0 gestellt und trotzdem von Strato eine Mail bekommen, dass noch 7.4 in der .htaccess verwendet wird (stand auch noch in der Datei drin).

    Mit den Einstellungen hat es dann geklappt:

    # BEGIN Hoster
    AddType application/x-httpd-php80 .php

    # END Hoster

    # BEGIN WordPress
    # Die Anweisungen (Zeilen) zwischen „BEGIN WordPress“ und „END WordPress“ sind
    # dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
    # Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.

    RewriteEngine On
    RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    Antworten
  4. Ich konnte das Problem lösen*.

    Der Fehler lag in dieser Zeile in der wp-config.php:
    define( ‘WP_AUTO_UPDATE_CORE’, minor );
    Ersetze “minor” durch “true” und es funktioniert.

    *Obwohl der Strato-Support wirklich grottenschlecht ist, mir zunächst ein Bot sinnlose Antworten gab, ich dann den (für WordPress) falschen Hinweis mit der htaccess bekommen habe und mir schließlich niemand mehr geantwortet hat.

    Antworten
    • Danke Thomas für deinen Input, Alfahosting hat auch den OP-Cache dazu genommen, d.h. die PHP-Files werden nicht in Echtzeit kompiliert sondern für die spätere Verwendung zwischengespeichert, so dass der Code nicht bei jedem Aufruf der Webseite neu erzeugt werden muss.
      Werde den Artikel dementsprechend ergänzen

      Antworten
  5. Leider komme ich nicht ganz mit.
    Die Domain ist bei all-inkl.
    Im Backend kann ich diverse PHP-Versionen einstellen.
    Bereits vor Monaten habe ich PHP 8.1 ausgewählt (zu Test auch ma 8.0).
    Trotzdem meckert NextCloud über eine angebliche „You are currently running 7.4.33“ und lässt mich an der SSH-Console keine Indices aktualisieren oder reparieren.
    Was mache ich falsch?
    Vielen Dank Ihr lieben Mitdenkix

    Antworten
  6. Hallo,
    vielleicht kann jemand helfen …
    Ich habe eine Website zur Pflege übernommen, die bei Strato liegt.
    Die Seite ist in HTML erstellt, nur eine Unterseite läuft über PHP.
    Jetzt heißt es auf PHP 8 umstellen. Leider funktioniert die Datenbankabfrage nach Umstellung nicht mehr, ich bekomme eine leere Seite geliefert.
    Ich hab das Ganze vorsichtshalber mit einer Subdomain und einer .htaccess Datei (PHP8.0) getestet, sodass die eigentliche Seite (mit PHP 7.4) noch funktioniert.
    Kann mir jemand sagen, was ich machen muss, um die Seite mit 8.0 zum Funktionieren zu bringen?
    Ich hab die .htaccess Datei (mit PHP 7.4) auch einfach mal ins Verzeichnis der “Haupt”-Seite hoch geladen – damit funktioniert alles wie immer.
    Kann ich das einfach so lassen, oder meckert Strato da auch irgendwann?
    Meine PHP Kenntnisse sind leider nicht sehr ausgeprägt …
    Falls jemand ‘nen Tipp für mich hat – bitte verständlich .
    Vielen Dank, Gruß Thomas.

    Antworten
    • Hallo Thomas, wie ich dich verstehe, hast du einen Workaround gefunden. Strato wird nicht meckern, da der Kunde die volle Verantwortung für den Webspace hat. Das einzige, was nachteilig ist, sind die Kosten für den Extended Support. Von PHP 7.4 auf PHP 8 war ein großer Wechsel, d.h. ohne wirkliches Verständnis der Programmierung wird es wohl nicht gelingen, die Funktionalität anzupassen https://www.php.net/manual/de/migration74.php

      Also: entweder so lassen und den Extended Support sich leisten (der sorgt auch dafür, dass die Seite nicht gehackt wird) oder evtl. neu gestalten.

      Wenn jemand aus der Community helfen kann, bitte melden!

      Antworten

Schreibe einen Kommentar