So führen Sie ein Upgrade auf PHP 7 unter CentOS 7 durch

Einführung

PHP 7, das am 3. Dezember 2015 veröffentlicht wurde, verspricht erhebliche Geschwindigkeitsverbesserungen gegenüber früheren Sprachversionen sowie neue Funktionen wie Hinweise auf skalare Typen. In diesem Handbuch wird erläutert, wie Sie einen Apache- oder Nginx-Webserver, auf dem PHP 5.x (eine beliebige Version) ausgeführt wird, mithilfe von von der Community bereitgestellten Paketen schnell auf PHP 7 aktualisieren.

Wenn Sie phpMyAdmin für die Datenbankverwaltung installiert haben, wird dringend empfohlen, vor dem Upgrade auf offizielle CentOS PHP 7-Pakete zu warten, da phpMyAdmin-Pakete das Upgrade noch nicht unterstützen. Wenn Sie andere Dienste oder Anwendungen mit aktiven Benutzern ausführen, ist es am sichersten, diesen Prozess zuerst in einer Staging-Umgebung zu testen.

Voraussetzungen

In diesem Handbuch wird davon ausgegangen, dass Sie PHP 5.x unter CentOS 7 ausführen und entweder + mod_php + in Verbindung mit Apache oder PHP-FPM in Verbindung mit Nginx verwenden. Es wird auch vorausgesetzt, dass Sie einen Nicht-Root-Benutzer haben, der mit den Rechten "+ sudo +" für administrative Aufgaben konfiguriert ist.

Der PHP 5-Installationsprozess ist in folgenden Handbüchern dokumentiert:

Abonnieren des IUS Community Project Repository

Da PHP 7.x noch nicht in offiziellen Repositories für die wichtigsten Distributionen enthalten ist, müssen wir uns auf Quellen von Drittanbietern verlassen. Mehrere Repositories bieten PHP 7 RPM-Dateien an. Wir werden das https://ius.io [IUS-Repository] verwenden.

IUS bietet ein Installationsskript zum Abonnieren des Repositorys und zum Importieren der zugehörigen GPG-Schlüssel. Stellen Sie sicher, dass Sie sich in Ihrem Ausgangsverzeichnis befinden, und rufen Sie das Skript mit "+ curl +" auf:

cd ~
curl 'https://setup.ius.io/' -o setup-ius.sh

Führen Sie das Skript aus:

sudo bash setup-ius.sh

Upgrade von + mod_php + mit Apache

In diesem Abschnitt wird der Upgrade-Prozess für ein System beschrieben, das Apache als Webserver und + mod_php + zum Ausführen von PHP-Code verwendet. Wenn Sie stattdessen Nginx und PHP-FPM ausführen, fahren Sie mit dem nächsten Abschnitt fort.

Entfernen Sie zunächst vorhandene PHP-Pakete. Drücken Sie * y * und drücken Sie * Enter *, um fortzufahren, wenn Sie dazu aufgefordert werden.

sudo yum remove php-cli mod_php php-common

Installieren Sie die neuen PHP 7-Pakete von IUS. Drücken Sie erneut * y * und * Enter *, wenn Sie dazu aufgefordert werden.

sudo yum install mod_php70u php70u-cli php70u-mysqlnd

Starten Sie Apache neu, um die neue Version von + mod_php + zu laden:

sudo apachectl restart

Sie können den Status von Apache, der von der Einheit "+ httpd +" + systemd + "verwaltet wird, mit" + systemctl + "überprüfen:

systemctl status httpd

Upgrade von PHP-FPM mit Nginx

In diesem Abschnitt wird der Aktualisierungsprozess für ein System beschrieben, das Nginx als Webserver und PHP-FPM zur Ausführung von PHP-Code verwendet. Wenn Sie bereits ein Apache-basiertes System aktualisiert haben, fahren Sie mit dem Abschnitt PHP-Tests fort.

Entfernen Sie zunächst vorhandene PHP-Pakete. Drücken Sie * y * und drücken Sie * Enter *, um fortzufahren, wenn Sie dazu aufgefordert werden.

sudo yum remove php-fpm php-cli php-common

Installieren Sie die neuen PHP 7-Pakete von IUS. Drücken Sie erneut * y * und * Enter *, wenn Sie dazu aufgefordert werden.

sudo yum install php70u-fpm-nginx php70u-cli php70u-mysqlnd

Nach Abschluss der Installation müssen Sie einige Konfigurationsänderungen für PHP-FPM und Nginx vornehmen. Wie konfiguriert wartet PHP-FPM auf Verbindungen auf einem lokalen TCP-Socket, während Nginx einen Unix-Domain-Socket erwartet, der einem Pfad im Dateisystem zugeordnet ist.

PHP-FPM kann mehrere * Pools * von untergeordneten Prozessen verarbeiten. Wie konfiguriert, bietet es einen einzelnen Pool mit dem Namen * www *, der in + / etc / php-fpm.d / www.conf + definiert ist. Öffnen Sie diese Datei mit + nano + (oder Ihrem bevorzugten Texteditor):

sudo nano /etc/php-fpm.d/www.conf

Suchen Sie nach dem Block mit + listen = 127.0.0.1: 9000 +, der PHP-FPM anweist, die Loopback-Adresse an Port 9000 abzuhören. Kommentieren Sie diese Zeile mit einem Semikolon und entfernen Sie das Kommentarzeichen "+ listen = / run / php-fpm / www.sock +" ein paar Zeilen darunter.

/etc/php-fpm.d/www.conf

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000
; WARNING: If you switch to a unix socket, you have to grant your webserver user
;          access to that socket by setting listen.acl_users to the webserver user.

Suchen Sie als nächstes nach dem Block, der die Werte "+ listen.acl_users " enthält, und entfernen Sie das Kommentar " listen.acl_users = nginx +":

/etc/php-fpm.d/www.conf

; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users = apache,nginx
;listen.acl_users = apache

;listen.acl_groups =

Beenden und speichern Sie die Datei. In + nano + können Sie dies durch Drücken von * Strg-X * zum Beenden, * y * zum Bestätigen und * Eingabetaste * zum Bestätigen des zu überschreibenden Dateinamens erreichen.

Stellen Sie als Nächstes sicher, dass Nginx den richtigen Socket-Pfad für die Verarbeitung von PHP-Dateien verwendet. Öffnen Sie zunächst "+ / etc / nginx / conf.d / default.conf +":

sudo nano /etc/nginx/conf.d/php-fpm.conf

+ php-fpm.conf + definiert eine upstream, auf die von anderen Nginx-Konfigurationsanweisungen verwiesen werden kann. Verwenden Sie im Upstream-Block ein "+ # ", um " server 127.0.0.1: 9000; " auskommentieren und " server unix: /run/php-fpm/www.sock; +":

/etc/nginx/conf.d/php-fpm.conf

# PHP-FPM FastCGI server
# network or unix domain socket configuration

upstream php-fpm {
       server 127.0.0.1:9000;

}

Verlasse und speichere die Datei und öffne + / etc / nginx / conf.d / default.conf +:

sudo nano /etc/nginx/conf.d/default.conf

Suchen Sie nach einem Block, der mit + location ~ \ .php $ {+ beginnt. Suchen Sie in diesem Block nach der Direktive + fastcgi_pass +. Kommentieren Sie diese Zeile aus oder löschen Sie sie und ersetzen Sie sie durch + fastcgi_pass php-fpm +, wodurch auf den in + php-fpm.conf + definierten Upstream verwiesen wird:

/etc/nginx/conf.d/default.conf

 location ~ \.php$ {
     try_files $uri =404;
     fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
     fastcgi_pass php-fpm;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include fastcgi_params;
 }

Beenden und speichern Sie die Datei und starten Sie PHP-FPM und Nginx neu, damit die neuen Konfigurationsanweisungen wirksam werden:

sudo systemctl restart php-fpm
sudo systemctl restart nginx

Sie können den Status jedes Dienstes mit + systemctl + überprüfen:

systemctl status php-fpm
systemctl status nginx

PHP testen

Wenn ein Webserver konfiguriert und die neuen Pakete installiert sind, sollten wir überprüfen können, ob PHP funktioniert. Überprüfen Sie zunächst die installierte PHP-Version in der Befehlszeile:

php -v

Ausgabe

PHP 7.0.1 (cli) (built: Dec 18 2015 16:35:26) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

Sie können auch eine Testdatei im Dokumentenstamm des Webservers erstellen. Obwohl der Speicherort von Ihrer Serverkonfiguration abhängt, wird der Dokumentstamm normalerweise auf eines der folgenden Verzeichnisse festgelegt:

  • + / var / www / html

  • + / var / www / +

  • + / usr / share / nginx / html

Öffnen Sie mit + nano + eine neue Datei mit dem Namen + info.php + im Dokumentenstamm. In Apache wäre dies standardmäßig:

sudo nano /var/www/html/info.php

Unter Nginx können Sie stattdessen Folgendes verwenden:

sudo nano /usr/share/nginx/html/info.php

Fügen Sie den folgenden Code ein:

info.php

<?php
phpinfo();

Verlasse den Editor und speichere "+ info.php". Laden Sie nun folgende Adresse in Ihren Browser:

http:///info.php

Sie sollten die PHP 7-Informationsseite sehen, die die aktuelle Version und Konfiguration auflistet. Sobald Sie dies überprüft haben, ist es am sichersten, "+ info.php" zu löschen:

sudo rm /var/www/html/info.php

Sie haben jetzt eine funktionierende PHP 7-Installation. Von hier aus können Sie den Getting Ready for PHP 7 -Blogpost von Erika Heidi lesen und sich den https-Artikel ansehen : //secure.php.net/manual/en/migration70.php [offizieller Migrationsleitfaden].