Februar 2023 Twitter @ItDoorlu
Inhaltsverzeichnis
- 1 PHP-Aktualisierung für WordPress – Schritt für Schritt
- 1.1 Änderungen testen
- 1.2 Der erste Schritt: Download des neuen PHP
- 1.3 Das alte PHP gegen das neue PHP austauschen
- 1.4 2 Änderungen in der Datei php.ini des neuen PHP durchführen
- 1.5 Die Login Maske von WordPress fehlerfrei aufrufen
- 1.5.1 Änderung 1 in der Datei httpd-xampp.conf (bei mir ab Zeile 20)
- 1.5.2 Wann Apache unerwartet beendet wird
- 1.5.3 Änderung 2 in der Datei httpd-xampp.conf (bei mir Zeile 44)
- 1.5.4 Änderung 3 in der Datei httpd-xampp.conf (bei mir Zeile 72)
- 1.5.5 Änderung 4 in der Datei httpd-xampp.conf (bei mir Zeile 103)
- 1.6 Kontrolle der aktuellen PHP-Version in WordPress auf dem Localhost
- 1.7 Fehlermeldung: Einige Fehler wurden auf dem Server entdeckt
- 1.8 Fehlermeldung: Die PHP-Erweiterung mbstring wurde nicht gefunden
- 2 Andere Fachartikel zum Thema Localhost
- 3 Andere Themenblöcke bei ItDoor
PHP-Aktualisierung für WordPress – Schritt für Schritt
Die PHP-Aktualisierung zeige ich für XAMPP Windows auf dem Localhost. Bei einem Echtsystem gehe ich davon aus, dass Ihr WordPress Hoster PHP aktualisiert oder Sie das im Dashboard Ihres Hosters mit ein paar Klicks selber PHP für Ihre WordPress Website aktualisieren.
In diesem Fachartikel wird die PHP Aktualisierung von PHP 7.3.11 auf PHP 8.0.27 beschrieben. Das hier vorgestellte Lösungsschema funktionierte auch für eine PHP Aktualisierung auf PHP 8.2.1.
Ob dieses Lösungsschema auch für PHP Aktualisierung vonPHP8 auf PHP9 anwendbar ist, bleibt abzuwarten.
Wann ist eine PHP-Aktualisierung bei WordPress notwendig?
WordPress empfiehlt im Dashboard die PHP Aktualisierung. So kann diese Empfehlung von WordPress dann aussehen.
Da Sie nicht erfahren, wie Sie PHP aktualisieren, wenn Sie auf diesen blauen Button klicken, wurde dieser Fachartikel geschrieben.
Außerdem kann es möglich sein, dass Sie wegen Ihrem veralteten PHP ein bestimmtes Plugin nicht installieren können. Hier ein Beispiel:
Auch hier erfahren Sie nicht, wie Sie PHP aktualisieren. Auch deswegen wurde dieser Fachartikel geschrieben.
Falls Sie sich übrigen für kostenlose WordPress Chat Plugins interessieren sollten, können Sie hier nachlesen:
Live Chat Plugins für WordPress – ein Überblick -1 Favorit
Wenn Sie keine Empfehlung von WordPress erhalten, PHP zu aktualisieren und Sie Bedenken haben, ob das verwendete PHP sehr alt sein könnte, können Sie in WordPress direkt nachschauen, welche Version Sie von PHP Sie benutzen.
Siehe unten Kapitel „Kontrolle der aktuellen PHP-Version in WordPress auf dem Localhost“.
Vorbereitende Tätigkeiten
Allgemein wird empfohlen, vor der PHP Aktualisierung ein Backup zu erstellen. Das macht aber nur Sinn, wenn das Backup das alte PHP umfasst. Zerschießen Sie das PHP gelangen Sie nicht mehr in Ihr WordPress und können somit wahrscheinlich Ihr Backup nicht einsetzen. Dieser Fachartikel zeigt daher einige Kniffe, wie man sich auch ohne Backup bei der PHP Aktualisierung absichern kann.
Allgemein wird empfohlen, vor der PHP Aktualisierung alle Plugins zu deaktivieren. Da auf meinem Testsystem nur wenige Plugins installiert sind, habe ich mir diese Mühe nicht gemacht.
Auch das Plugin „PHP Compatibility Checker“ oder vergleichbare Plugins habe ich nicht eingesetzt, da berichtet worden ist, dass diese nicht ganz fehlerfrei sein sollen.
Statt all dieser vorbereitenden Tätigkeiten habe ich die PHP-Aktualisierung so gestaltet, dass ich die PHP-Aktualisierung sofort zurückdrehen kann.
Mit diesem Fachartikel wird sowieso keine Haftung oder Gewähr übernommen, dass bei Ihnen die PHP-Aktualisierung reibungslos gelingt.
Änderungen testen
Es ist fraglich, ob man jede einzelne Änderungen testen sollte, da nicht jede einzelne Änderung ausreicht, um das gewünschte Ergebnis herbeizuführen. Besser dürfte es ein, alle in diesem Fachartikel erwähnten Änderungen durchzuführen und danach zu testen, ob das XAMPP Control Panel fehlerfrei aufrufbar ist und ob ein Login in WordPress auf Ihrem Localhost gelingt.
Unabhängig davon, wie oft Sie Ihre Änderungen testen möchten, nicht jede Änderung lässt sich dadurch testen, dass man das XAMPP Control Panel beendet und wieder startet und die Login Maske von WordPress aufruft.
Ich hatte mir daher angewöhnt, den PC neu zu starten und erst dann das XAMPP Control Panel zu laden und anschließend versuchen, sich bei WordPress anzumelden.
Der erste Schritt: Download des neuen PHP
Download Möglichkeit1
Hier können Sie PHP downloaden:
https://windows.php.net/download#php-8.0
Wenn Sie diese Webpage aufrufen, sieht das bei Ihnen wahrscheinlich anders aus, als bei dem folgenden Screenshot, da es ständig neue PHP-Versionen gibt.
Wichtig ist, dass Sie PHP mit der Variante „Thread Safe“ herunterladen.
Ich lade die Datei php-8.0.27-Win32-vs16-x64.zip herunter:
Das sind dann die Verzeichnisse von php-8.0.27.
Download Möglichkeit 2
Auch hier können Sie PHP downloaden:
https://windows.php.net/download#php-8.2
Wenn Sie diese Webpage aufrufen, sieht das bei Ihnen wahrscheinlich anders aus, als bei dem folgenden Screenshot, da es ständig neue PHP-Versionen gibt.
Auch hier ist wichtig, dass Sie PHP mit der Variante „Thread Safe“ herunterladen.
Ich lade die Datei: php-8.2.1-Win32-vs16-x64 herunter:
Das sind dann die Verzeichnisse von php-8.2.1.
Ich habe die PHP Aktualisierung sowohl mit php-8.0.27. als auch mit php-8.2.1. erfolgreich getestet. Das bedeutet, dass es keine Rolle gespielt hatte, welche der beiden Download Möglichkeiten ich benutzt hatte.
Sowohl php-8.0.27. als auch mit php-8.2.1. haben deutlich weniger Verzeichnisse als mein altes PHP 7.3.11. So fehlt z. B. das Verzeichnis sasl2 in den beiden neuen PHP-Versionen.
Das sind die Verzeichnisse von PHP 7.3.11.
- Lassen Sie sie sich bitte nicht irritieren, falls Ihr neues PHP weniger Verzeichnisse haben sollte, als Ihr altes PHP.
Trotz deutlich weniger Verzeichnissen gelang bei mir die PHP Aktualisierung sowohl mit php-8.0.27. als auch mit php-8.2.1.
Das alte PHP gegen das neue PHP austauschen
Nachdem nun das neue PHP im Downloadverzeichnis von Windows liegt, geht es nun darum, das alte PHP gegen das neue PHP in XAMPP austauschen
Als erstes ändere ich den Namen des alten php-Verzeichnis um. Z. B. in altphp.
Falls ich mit dem neuen PHP Schiffbruch erleide, kann ich dann auf das alte PHP zurückgreifen.
- Das ist sicherer als das alte php-Verzeichnis einfach zu löschen.
In einem zweiten Schritt lege ich unter dem Verzeichnis C:\xampp\ das Verzeichnis php an. So kann das dann aussehen.
In einem dritten Schritt kopiere ich die Dateien der ZIP-Datei „php-8.0.27-Win32-vs16-x64“ in das neue php-Verzeichnis.
Damit ist das alte PHP gegen das neue PHP ausgetauscht, aber die Aktualisierung von PHP noch nicht beendet.
2 Änderungen in der Datei php.ini des neuen PHP durchführen
Wo ist die Datei php.ini?
Sowohl der Ordner php-8.0.27-Win32-vs16-x64 als auch der Ordner php-8.2.1-Win32-vs16-x64 enthalten nicht die Datei php.ini.
Lösung: Ich kopiere die Datei php.ini-production und nenne die Kopie php.ini. Dadurch wird die Datei php.ini zum Typ Konfigurationseinstellungen.
So kann das dann im Verzeichnis C:\xampp\php\ aussehen.
Wenn man stattdessen die php.ini von dem alten PHP in das Verzeichnis C:\xampp\php\ kopiert, funktioniert die PHP-Aktualisierung übrigens nicht.
Die Angabe des Verzeichnisses ist natürlich nicht absolut. Weil z. B. XAMPP auch auf der Festplatte „D:“ installiert sein könnte.
Änderungen in der neu erstellten php.ini
Damit Sie sich auf Ihrem Localhost mit dem aktualisierten PHP einloggen können, müssen 2 Änderungen in der neu erstellten php.ini durchgeführt werden. Diese Änderungen führe ich mit dem kostenlosen Programm Notepad++ durch. Weil dieser Editor die Zeilen zählt. Ändere ich etwas, notiere ich mir die Zeile, in der ich etwas geändert habe.
Änderung 1 in der php.ini (bei mir in der Zeile 771)
Alt:
; On windows:
;extension_dir = „ext“
Neu:
; On windows:
extension_dir=“C:\xampp\php\ext“
Ich habe also den Strichpunkt vor extension_dir entfernt und das Verzeichnis eintragen, in dem sich das aktualisierte PHP für WordPress befindet. Hier kommt es auf jedes Zeichen an!
Wie Sie sehen, habe mir angewöhnt, alte Einträge zu belassen. Falls die Änderung nicht wirkt, kann ich schnell auf den alten Zustand zugreifen und die Änderung löschen.
Führen sie diese Änderung nicht durch, kann die Login Maske von WordPress nicht geladen werden.
Änderung 2 in der php.ini (bei mir in der Zeile 937)
Alt:
;extension=mysqli
Neu:
extension=mysqli
Wie Sie sehen, habe ich lediglich den Strichpunkt vor extension=mysqli entfernt und damit die Extension aktiviert.
Führen sie diese Änderung nicht durch, kann die Login Maske von WordPress nicht geladen werden.
Die beiden Änderungen wirken für alle WordPress Installationen, die Sie auf dem Localhost haben. Weil die WordPress Installationen sich nicht unter dem php-Verzeichnis, sondern unter dem Verzeichnis htdocs befinden.
Die beiden Änderungen in der ph.ini führen natürlich nur dann zum Erfolg, wenn Apache nicht unerwartet beendet bzw. die oben erwähnten Änderungen in der Datei httpd-xampp.conf vorher durchgeführt worden sind (siehe oben).
Haben Sie z. B. 2 WordPress Installationen auf dem Localhost, müssen Sie also die ph.ini nur einmal pflegen.
Das XAMPP Control Panel lässt sich jetzt fehlerfrei aufrufen.
Den Autostart für Apache und MySQL können Sie herbeiführen, in dem Sie oben rechts auf den Button „Konfig“ klicken und die folgenden beiden Häkchen setzen und anschließend auf den Button speichern klicken.
Dennoch ist die PHP Aktualisierung von WordPress noch nicht beendet. Denn wenn ich mich bei WordPress einloggen möchte, erscheint die folgende Fehlermeldung:
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /usr/www/users/itdoor\wp-includes\class-wpdb.php:1810 Stack trace: #0 /usr/www/users/itdoor\wp-includes\class-wpdb.php(734): wpdb->db_connect() #1 /usr/www/users/itdoor\wp-includes\load.php(562): wpdb->__construct(‚root‘, “, ‚wordpress‘, ‚localhost‘) #2 /usr/www/users/itdoor\wp-settings.php(124): require_wp_db() #3 /usr/www/users/itdoor\wp-config.php(120): require_once(‚C:\\xampp\\htdocs…‘) #4 /usr/www/users/itdoor\wp-load.php(50): require_once(‚C:\\xampp\\htdocs…‘) #5 /usr/www/users/itdoor\wp-login.php(12): require(‚C:\\xampp\\htdocs…‘) #6 {main} thrown in /usr/www/users/itdoor\wp-includes\class-wpdb.php on line
Die Login Maske von WordPress fehlerfrei aufrufen
Damit sich die Login Maske von WordPress fehlerfrei aufrufen lässt, sind Änderungen in der Datei httpd-xampp.conf durchzuführen.
Die Datei httpd-xampp.conf finden Sie in dem Verzeichnis C:\xampp\apache\conf\extra.
Das sind die Dateien in diesem Verzeichnis.
Auch diese Änderungen führe ich mit dem kostenlosen Programm Notepad++ durch, weil dieser Editor die Zeilen zählt. Ändere ich etwas, notiere ich mir die Zeile, in der ich etwas geändert habe.
Vor den 4 bzw. 7 Änderungen kopiere ich die Datei httpd-xampp.conf und nenne die Kopie dieser Datei althttpd-xampp.conf. Damit ist der Datei althttpd-xampp.conf. der Originalzustand der Datei httpd-xampp.conf konserviert. Sicher ist sicher!
Änderung 1 in der Datei httpd-xampp.conf (bei mir ab Zeile 20)
Alt:
LoadFile „C:/xampp/php/php7ts.dll“
LoadFile „C:/xampp/php/libpq.dll“
LoadModule php7_module „C:/xampp/php/php7apache2_4.dll“
Neu:
LoadFile „C:/xampp/php/php8ts.dll“
LoadFile „C:/xampp/php/libpq.dll“
LoadFile „C:/xampp/php/libsqlite3.dll“
LoadModule php_module „C:/xampp/php/php8apache2_4.dll“
Ich tausche also lediglich zweimal php7 gegen php8 aus. Das ist notwendig, weil in dem neuen PHP die beiden Dateien in dem Verzeichnis C:/xampp/php/ bei dem neuen PHP jetzt so heißen.
Siehe den nächsten Screenshot.
Wann Apache unerwartet beendet wird
Wenn Sie mit der folgenden Zeile arbeiten:
LoadModule php8_module „C:/xampp/php/php8apache2_4.dll“
- Obwohl hier ein Wechsel von PHP7 zu PHP8 stattfindet, darf bei den Änderungen 2 bis 4 nicht php7 durch php8 ersetzt werden. Das mag vielleicht unlogisch klingen, es ist aber trotzdem nicht der richtige Lösungsansatz. Wenn Sie dies machen, können Sie sich in Ihr WordPress auf dem Localhost nicht einloggen.
So sieht das XAMPP Control Panel aus, wenn Apache unerwartet beendet wird.
Wie Sie sehen, hat Apache dann keinen Port und keine PID(s).
Wenn Apache nicht funktioniert, dann gelangt man nicht auf die Login Maske von WordPress.
Wird die Zeile „LoadFile „C:/xampp/php/php7ts.dll“ beibehalten, wird Apache unerwartet beendet (siehe oben).
Apache wird auch dann unerwartet beendet, wenn die Zeile „LoadModule php7_module „C:/xampp/php/php7apache2_4.dll“ beibehalten wird.
Änderung 2 in der Datei httpd-xampp.conf (bei mir Zeile 44)
Alt:
<IfModule php7_module>
PHPINIDir „C:/xampp/php“
</IfModule>
Neu:
<IfModule php_module>
PHPINIDir „C:/xampp/php“
</IfModule>
Ich habe also lediglich die „7“ bei „<IfModule php7_module>“ entfernt.
- Nicht php7 durch php8 an dieser Stelle ersetzen!
Wie bereits erwähnt, befindet sich die Datei Datei httpd-xampp.conf in dem Verzeichnis C:\xampp\apache\conf\. Dass ich das Verzeichnis C:\xampp\php\ wegen dem neuen PHP ausgetauscht habe, weiß das Verzeichnis C:\xampp\apache\conf\extra nicht. Daher ist in der Datei httpd-xampp.conf immer noch „php7“ verankert.
Änderung 3 in der Datei httpd-xampp.conf (bei mir Zeile 72)
Alt:
<Directory „C:/xampp/htdocs/xampp“>
<IfModule php7_module>
<Files „status.php“>
php_admin_flag safe_mode off
</Files>
</IfModule>
AllowOverride AuthConfig
</Directory>
Neu:
Directory „C:/xampp/htdocs/xampp“>
<IfModule php_module>
<Files „status.php“>
php_admin_flag safe_mode off
</Files>
</IfModule>
AllowOverride AuthConfig
</Directory>
Ich habe also lediglich die „7“ bei „<IfModule php7_module>“ entfernt.
- Nicht php7 durch php8 an dieser Stelle ersetzen!
Wie bereits erwähnt, befindet sich die Datei Datei httpd-xampp.conf in dem Verzeichnis C:\xampp\apache\conf\. Dass ich das Verzeichnis C:\xampp\php\ wegen dem neuen PHP ausgetauscht habe, weiß das Verzeichnis C:\xampp\apache\conf\extra nicht. Daher ist in der Datei httpd-xampp.conf immer noch „php7“ verankert.
Änderung 4 in der Datei httpd-xampp.conf (bei mir Zeile 103)
Alt:
<Directory „C:/xampp/webalizer“>
<IfModule php7_module>
<Files „webalizer.php“>
php_admin_flag safe_mode off
</Files>
</IfModule>
AllowOverride AuthConfig
Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
Neu:
<Directory „C:/xampp/webalizer“>
<IfModule php_module>
<Files „webalizer.php“>
php_admin_flag safe_mode off
</Files>
</IfModule>
AllowOverride AuthConfig
Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>
Ich habe also lediglich die „7“ bei „<IfModule php7_module>“ entfernt.
- Nicht php7 durch php8 an dieser Stelle ersetzen!
Wie bereits erwähnt, befindet sich die Datei Datei httpd-xampp.conf in dem Verzeichnis C:\xampp\apache\conf\. Dass ich das Verzeichnis C:\xampp\php\ wegen dem neuen PHP ausgetauscht habe, weiß das Verzeichnis C:\xampp\apache\conf\extra nicht. Daher ist in der Datei httpd-xampp.conf immer noch „php7“ verankert.
Kontrolle der aktuellen PHP-Version in WordPress auf dem Localhost
Anschließend logge ich mich in WordPress auf meinem Localhost ein. Danach sehe ich, dass die Empfehlung PHP zu aktualisieren, verschwunden ist.
Wenn Sie die folgende Klickreihenfolge benutzen, können Sie sehen, welche Version von PHP Sie benutzen.
Werkzeuge-Websitezustand-Bericht-Server
So kann das dann aussehen.
Wie Sie sehen, bestätigt mir WordPress, dass mein Localhost nun eine neuere PHP-Version hat.
Fehlermeldung: Einige Fehler wurden auf dem Server entdeckt
Nach der PHP Aktualisierung, kann es sein, dass phpmyAdmin die o. g. Fehlermeldung generiert.
So sieht diese Fehlermeldung dann aus:
Im Testfall gab es 181 Seiten Fehlermeldungen (gemessen in Word). 23-mal kam die folgende Fehlermeldung:
http_build_query(): Passing null to parameter #2 ($numeric_prefix) of type string is deprecated
Es bestand aber kein Grund zur Panik für mich, da ich mich weiterhin auf dem Localhost in WordPress anmelden konnte.
Alle Fehlermeldungen verschwanden, als ich phpMyAdmin von Version 4.9.1 auf Version: 5.2.0 aktualisierte.
Siehe den Fachartikel: phpMyAdmin aktualisieren – Schritt für Schritt
Fehlermeldung: Die PHP-Erweiterung mbstring wurde nicht gefunden
Nach der PHP Aktualisierung kann es sein, dass Sie unten in phpmyAdmin diese Fehlermeldung erhalten:
Die PHP-Erweiterung mbstring wurde nicht gefunden, trotzdem scheinen Sie einen Mehrbyte-Zeichensatz zu verwenden. Ohne besagte Erweiterung ist phpMyAdmin nicht in der Lage Zeichenketten zu trennen, was zu unerwarteten Ergebnissen führen kann.
Eine Änderung in der Datei php.ini
Die Datei php.ini finden Sie in diesem Verzeichnis:
C:\xampp\php
Damit die Änderungen in der Datei php.ini wirken, musste ich den PC hoch- und runterfahren. Ein Neustart von XAMPP Control Panel reichte im Testfall nicht.
Alt (bei mir Zeile 934)
;extension=mbstring
Neu
extension=mbstring
Ich habe also nur den Strichpunkt vor dieser Zeile entfernt.
In der Datei php.ini blieb übrigens die folgende Zeile (bei mir Zeile 722) im Testfall unverändert.
;internal_encoding =
In der Datei php.ini blieb auch die folgende Zeile (bei mir Zeile 1656) im Testfall unverändert.
;mbstring.internal_encoding =
Das war es dann zum Thema PHP-Aktualisierung für WordPress – Schritt für Schritt.
Andere Fachartikel zum Thema Localhost
MySQL wurde unerwartet beendet – XAMPP Control Panel
phpMyAdmin aktualisieren – Schritt für Schritt
phpinfo im Browser aufrufen – Localhost/XAMPP – 4 Schritte
WordPress von Localhost auf Webserver
WordPress Localhost Password Reset – eine neue Methode
PHP-Aktualisierung für WordPress – Schritt für Schritt
WordPress und XAMPP auf eine neue Festplatte kopieren; FileZilla
WordPress Localhost empfangbare E-Mails versenden
Andere Themenblöcke bei ItDoor
Software für Aktien und andere Wertpapiere
Die Liste der Fachartikel zu Outlook von ItDoor
zu den Fachartikeln zum Thema Word von ItDoor für eilige Leser
Die Liste der Fachartikel zu WordPress von ItDoor
Zum WordPress Plugin Verzeichnis von ItDoor
Liste Fachartikel zum Thema Joomla von ItDoor
Fachartikel zum Thema Jutoh von ItDoor