PHP ist eine der am häufigsten verwendeten serverseitigen Programmiersprachen. Viele beliebte CMS und Frameworks wie WordPress, Magento und Laravel werden in PHP erstellt.
In diesem Leitfaden besprechen wir die Installation von PHP 7.2, 7.3 oder 7.4 unter CentOS 8. Bevor Sie die zu installierende PHP-Version auswählen, vergewissern Sie sich, dass Ihre Anwendungen diese unterstützen.
Wir zeigen Ihnen auch, wie Sie PHP mit Nginx und Apache integrieren.
Installieren von PHP auf CentOS 8 #
CentOS 8 wird mit PHP 7.2 vertrieben. Diese Version unterstützt die meisten modernen PHP-Anwendungen, wird aber ab November 2019 nicht mehr aktiv gepflegt. Die neueren PHP-Versionen sind im Remi-Repository verfügbar.
Aktivieren Sie das Remi-Repository #
Wenn Sie die distrostabile PHP-Version 7.2 installieren, überspringen Sie diesen Schritt. Andernfalls, wenn Sie PHP 7.3 oder 7.4 installieren möchten, aktivieren Sie das Remi-Repository, indem Sie den folgenden Befehl als root oder Benutzer mit sudo-Berechtigungen ausführen:
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
Der obige Befehl aktiviert auch das EPEL-Repository.
Führen Sie nach Abschluss der Installation den folgenden Befehl aus, um eine Liste aller verfügbaren PHP-Versionen zu erhalten:
sudo dnf module list php
Die Ausgabe zeigt eine Liste aller verfügbaren Module, einschließlich des zugehörigen Streams, der Version und der Installationsprofile.
Last metadata expiration check: 0:02:11 ago on Fri 18 Oct 2019 08:31:43 PM UTC.
CentOS-8 - AppStream
Name Stream Profiles Summary
php 7.2 [d][e] common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
php remi-7.4 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Das Standard-PHP-Modul ist auf PHP 7.2 eingestellt. Um eine neuere PHP-Version zu installieren, aktivieren Sie die entsprechende Version:
PHP 7.3
sudo dnf module reset php
sudo dnf module enable php:remi-7.3
PHP 7.4
sudo dnf module reset php
sudo dnf module enable php:remi-7.4
Sie können nun PHP auf Ihrem CentOS-Server installieren.
Installieren Sie PHP #
Der folgende Befehl installiert PHP und einige der gängigsten PHP-Module:
sudo dnf install php php-opcache php-gd php-curl php-mysqlnd
FPM wird als Abhängigkeit installiert und als FastCGI-Server verwendet. Starten Sie den FPM-Dienst und aktivieren Sie ihn so, dass er beim Booten automatisch gestartet wird:
sudo systemctl enable --now php-fpm
Konfigurieren von PHP für die Arbeit mit Apache #
Wenn SELinux auf Ihrem System ausgeführt wird, müssen Sie den SELinux-Sicherheitskontext aktualisieren:
sudo chcon -Rt httpd_sys_rw_content_t /var/www
Wenn Sie Apache als Webserver verwenden, starten Sie httpd
neu Dienst mit dem folgenden Befehl, und Sie können loslegen:
sudo systemctl restart httpd
Konfigurieren von PHP für die Arbeit mit Nginx #
Standardmäßig wird PHP FPM als Benutzer apache
ausgeführt . Um Berechtigungsprobleme zu vermeiden, ändern wir den Benutzer in nginx
. Bearbeiten Sie dazu die gelb markierten Zeilen:
sudo nano /etc/php-fpm.d/www.conf
/etc/php-fpm.d/www.conf...
user = nginx
...
group = nginx
Stellen Sie sicher, dass die Datei /var/lib/php
Verzeichnis hat den richtigen Eigentümer:
chown -R root:nginx /var/lib/php
Wenn Sie fertig sind, starten Sie den PHP FPM-Dienst neu:
sudo systemctl restart php-fpm
Bearbeiten Sie als Nächstes die Direktive für den virtuellen Host von Nginx und fügen Sie den folgenden Standortblock hinzu, damit Nginx PHP-Dateien verarbeiten kann:
server {
# . . . other code
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Damit die neue Konfiguration wirksam wird, starten Sie den Nginx-Dienst neu:
sudo systemctl restart nginx
Aktualisieren Sie den SELinux-Sicherheitskontext:
sudo chcon -Rt httpd_sys_rw_content_t /var/www