Neue PHP-Versionen bringen neue Funktionen und Fehlerbehebungen für Sicherheitsprobleme und Bugs mit sich. Die Migration von einer Version zur anderen kann oft zu Inkompatibilitäten führen. Zum Zeitpunkt des Verfassens dieses Artikels ist PHP 7.2 die neueste stabile Version und PHP 7.3 wird voraussichtlich im Dezember 2018 veröffentlicht. Drupal.org empfiehlt PHP 7.1+ für neue Projekte und ermutigt die Community, ein Upgrade für ältere Versionen zu planen.
Drupal ist, wie wir wissen, ein in PHP geschriebenes CMF. Es verwendet verschiedene PHP-Bibliotheken und -Komponenten, darunter das Symfony-Framework, die Twig-Template-Engine, PHPUnit, Guzzle usw. Daher wird immer empfohlen, vor dem Upgrade auf neuere PHP-Versionen eine Kompatibilitätsprüfung mit allen Komponenten, Bibliotheken und Core-/Contributed-Modulen Ihrer Drupal-Site durchzuführen.
Der Prozess der Änderung der PHP-Version Ihrer Drupal-Site kann je nach Hosting-Provider und dem Zugriffsniveau, das Sie auf dem Server haben, variieren. Für dieses Tutorial wurde jedoch Ubuntu 16.04.4 LTS mit Apache 2.4.18 und Nginx 1.10.3 verwendet. Einige Befehle, Konfigurationsdateien und Verzeichnispfade können sich von Ihrem System und der Version der Webserver unterscheiden.
Überprüfung der aktuellen PHP-Version
Lassen Sie uns zunächst sehen, welche PHP-Versionen derzeit auf unserem System installiert sind.
$ update-alternatives --display php

Sie können auch alle installierten PHP-Pakete zusammen mit ihren Erweiterungen überprüfen, indem Sie Folgendes verwenden:
$ apt list --installed | grep "php*"
Standardmäßig ist die Version mit der höchsten Priorität die Befehlszeilenversion. Das heißt, wenn wir die interaktive Shell verwenden oder eine PHP-Datei über das Terminal parsen, wird diese Version verwendet.
$ php -v

Diese ausgewählte Befehlszeilenversion ist jedoch möglicherweise nicht mit Ihrem Webserver konfiguriert. Um die mit dem Webserver konfigurierte PHP-Version zu überprüfen, können Sie eine phpinfo()-Seite erstellen oder die PHP_VERSION_ID-Konstante / phpversion()-Funktion ausgeben.
$ cd /var/www/html/drupal8
$ drush php-eval "echo phpversion();


Wenn Sie keinen Zugriff auf Ihren Server über SSH haben, können Sie die aktuelle PHP-Version auch über die Statusberichte Ihrer Drupal-Site unter /admin/reports/status anzeigen.

Warum auf PHP 7 aktualisieren?
Hier sind einige Gründe, warum Sie von PHP 5 auf PHP 7 aktualisieren sollten:
- PHP 7 ist doppelt so schnell wie PHP 5. Die enorme Leistungssteigerung ist einer der Gründe, warum ein Upgrade wichtig ist. Dies bedeutet, dass Ihre Website in kürzerer Zeit geladen wird, was Ihren Webbenutzern einen weiteren Grund gibt, auf Ihrer Website zu bleiben.
- PHP 7 unterstützt die gleichzeitige Ausführung asynchroner Aufgaben. Aufgaben wie Netzwerke, Zugriff auf die Datenbank, Timer und die Durchführung von Ereignissen im Zusammenhang mit E/A-Operationen können asynchron durchgeführt werden, indem eine einzelne PHP-Ereignisschleife eingerichtet wird.
- Es ist Mobile-First. Natürlich müssen Sie Ihren Benutzern ein besseres Wertversprechen bieten. Und mobile Benutzer können hier nicht ignoriert werden. PHP 7 bietet genau das, was Unternehmen benötigen, um die Bedürfnisse von Benutzern mobiler Geräte zu erfüllen.
Es bietet eine reduzierte Speichernutzung, Verbesserungen der Ausführungs-Engine und nativen lokalen Thread-Speicher, die speziell auf mobile Geräte mit eingeschränkten Browsing-Funktionen zugeschnitten sind.
- Verwendet weniger Speicher. PHP 7 hat gezeigt, dass die Technologieinfrastruktur höhere Rechenanforderungen verarbeiten kann, ohne proportional mehr Speicher zu verbrauchen.
Wie ändert man die PHP-Version?
Da Apache und Nginx die beliebtesten Webserver auf dem Markt sind, werden wir uns kurz ansehen, wie man die PHP-Version auf ihnen ändert. Es wird auch dringend empfohlen, ein Backup Ihrer Drupal-Site zu erstellen, bevor Sie an den Konfigurationen auf Ihrem Server herumspielen.
In meinem Fall ist PHP 7.0 auf dem Webserver konfiguriert und Drupal gibt eine nette Empfehlung, es zu aktualisieren. Da ich jedoch nicht das neueste PHP 7.2 auf meinem System installiert habe, werde ich es zuerst zusammen mit den erforderlichen PHP-Erweiterungen herunterladen.
Dazu gehören Erweiterungen für URL, JSON, Bild, Bibliothek, Mbstring, Open SSL und XML. Um jedoch sicherzustellen, dass alle Erweiterungen installiert werden, installieren wir sie manuell.
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install php7.2 php7.2-fpm php7.2-xml php7.2-mysql php7.2-gd
Sie können die Pakete mit dpkg -l php7.2* anzeigen, um dies zu bestätigen.
I. Befehlszeilenversion
Um die Befehlszeilenversion von PHP zu ändern, können Sie den folgenden Befehl verwenden. Auch hier gilt: Das Ändern dieser Version wirkt sich nicht auf die vom Webserver verwendete Version aus.
$ sudo update-alternatives --config php

Geben Sie die neben der gewünschten PHP-Version angegebene Optionsnummer ein.
oder
$ sudo update-alternatives -set php /usr/bin/php7.2
II. Apache
Für den Apache-Webserver können die Skripte a2enmod und a2dismod zum Aktivieren und Deaktivieren der PHP-Module verwendet werden.
Deaktivieren Sie alle zuvor aktivierten PHP-Module.
$ sudo a2dismod php5.6
$ sudo a2dismod php7.0
$ sudo a2dismod php7.1
Aktivieren Sie das neue PHP-Versionsmodul.
$ sudo a2enmod php7.2
Starten Sie den Webserver neu.
$ sudo service apache2 restart
Die PHP-Version für eine bestimmte Website kann auch über die .htaccess-Datei auf folgende Weise festgelegt werden.
AddHandler application/x-httpd-php72 .php
III. Nginx
Für Nginx müssen wir lediglich den PHP-FPM-Socket in seiner Konfigurationsdatei aktualisieren. Stellen Sie jedoch vorher sicher, dass PHP-FPM für Ihre Version installiert ist und als Dienst ausgeführt wird.
Erstellen Sie ein Backup der Standardkonfigurationsdatei und öffnen Sie sie dann in Ihrem bevorzugten Texteditor.
$ cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
$ sudo vim /etc/nginx/sites-available/default
Ändern Sie das FastCGI-Backend, um den neuen PHP-FPM-Socket zu verwenden, speichern Sie die Datei und beenden Sie sie.
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
Führen Sie den Konfigurationstest aus.
$ nginx -t
Starten Sie den Webserver neu.
$ sudo service nginx restart
Wir haben nun erfolgreich die PHP-Version unserer Drupal-Site geändert. Navigieren Sie nun zu Verwalten → Berichte → Statusbericht, um sicherzustellen, dass die Version geändert wurde und keine Fehler oder Warnungen von Drupal-Modulen oder PHP-Bibliotheken vorliegen.

Wie erwartet, hat dies bei einer reinen Drupal 8-Installation keine Fehler oder Warnungen erzeugt. Wenn Sie auf Probleme stoßen, stellen Sie sicher, dass Sie alle erforderlichen PHP-Erweiterungen für Ihre PHP-Version installiert haben, überprüfen Sie die Protokollmeldungen und konsultieren Sie die Issue-Queues der Core- und Contrib-Module.
Für eine kostenlose Website-Analyse und den besten Drupal-Migrationsplan für die Bedürfnisse Ihres Unternehmens sprechen Sie noch heute mit unseren Drupal-Experten.
Abonnieren
Verwandte Blogs
KI-Fairness: Ein tiefer Einblick in Microsofts Fairlearn Toolkit

Künstliche Intelligenz (KI) hat branchenübergreifend, insbesondere im Finanzdienstleistungssektor, das Spiel verändert. Von…
API-Dokumentationstool: Die 10 besten Tools für 2025

Eine Google-Suche nach „Bestes API-Dokumentationstool“ liefert zahlreiche Ergebnisse. Die wachsende Anzahl von API…
6 verbreitete Irrtümer über Softwaretests – widerlegt

Eine einwandfreie Produktauslieferung erfordert eine perfekte Kombination aus Entwicklungs- und Testaufwand. Das Testen…