ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

PHP

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

./php-logo.png PHP ist eine Skriptsprache mit einer an Java bzw. Perl angelehnten Syntax, die häufig zur Erstellung dynamischer Webseiten oder Webanwendungen verwendet wird. Die drei Hauptgebiete, in denen PHP-Skripte genutzt werden, beschreibt die Seite Was kann PHP? 🇩🇪 im PHP-Handbuch 🇩🇪.

Aus Sicherheitsgründen sollte PHP nur in einer Version eingesetzt werden, die noch vom Hersteller unterstützt wird (Unterstützte Versionen 🇬🇧). Dabei ist zu berücksichtigen, dass insbesondere ältere PHP-Skripte mittlerweile nicht mehr unterstützte Sprachfeatures verwenden. Gerade bei öffentlich erreichbaren Webanwendungen sollte hier die Portierung auf eine neuere PHP-Version anstelle des Weiterbetriebs einer alten Version im Vordergrund stehen.

Installation

In den offiziellen Paketquellen ist nicht immer die aktuellste PHP-Version enthalten, wobei sicherheitsrelevante Aktualisierungen im Rahmen der Paketpflege in der Regel rückportiert werden. Die LTS-Versionen von Ubuntu bringen von Haus aus folgende PHP-Versionen mit:

Installation für serverseitige Programmierung

Ubuntu bietet für die Installation von PHP zum Einsatz mit Webservern drei unterschiedliche Pakete an, die verschiedene Anwendungsfälle abdecken. In jedem Fall werden auch die notwendigen Programme für die weiter unten beschriebene Kommandozeilenprogrammierung installiert.

Mit dem Paket php-fpm installiert man PHP mit dem PHP-FPM FastCGI Process Manager 🇩🇪, der als Dienst läuft und mehrere eigenständige PHP-Instanzen starten und verwalten kann, um Anfragen von externen Programmen (z.B. Webserver) entgegenzunehmen. Vegleichbar mit der CGI-Schnittstelle benötigt ein Webserver somit keine tiefer gehende Integration mit PHP.

Das Paket php-cgi stellt PHP direkt in einer Form bereit, die zur vorgenannten CGI-Schnittstelle kompatibel ist. Der Hauptunterschied zum neueren FPM besteht darin, dass bei der Verwendung via CGI bei jedem Seitenaufruf ein neuer PHP-Prozess gestartet und nach der Verarbeitung wieder beendet wird, was zu einer verhältnismäßig geringen Performance führen kann. Die Empfehlung geht daher in Richtung FPM.

Als drittes Paket gibt es noch das Apache-Modul libapache2-mod-php. Dieses Paket integriert PHP auf Programmebene in den Webserver Apache, was einerseits den Vorteil hat, dass PHP direkt im Webserver verarbeitet werden kann, andererseits jedoch den Nachteil, dass in einer Serverinstanz nicht mehrere unterschiedliche PHP-Instanzen (z.B. wegen unterschiedlicher Versionen oder Konfigurationen) realisiert werden können, wie bei den bereits beschriebenen Installationsvarianten. Die Installation dieses Pakets bringt über seine Abhängigkeiten auch den eigentlichen Apache-Webserver mit.

Hinweis:

Die Installation von PHP über das Metapaket php hat unter Ubuntu 16.04 und 18.04 unterschiedliche Auswirkungen. Aufgrund der Reihenfolge der Abhängigkeiten wird unter 16.04 PHP mit dem FPM installiert, während 18.04 es vorzieht, den Webserver Apache mit PHP-Modul aufzuspielen.

Installation von PHP mit der Standardauswahl für die aktuell betriebene Ubuntu-Version[1]:

  • php (main)

Befehl zum Installieren der Pakete:

sudo apt-get install php 

Oder mit apturl installieren, Link: apt://php

Installation für Kommandozeilenprogrammierung

Wer PHP nicht für den Betrieb im Zusammenhang mit Webservern einsetzen will und einen kleineren Installationsumfang wünscht, kann auch nur die Kommandozeilentools installieren[1]:

  • php-cli

Befehl zum Installieren der Pakete:

sudo apt-get install php-cli 

Oder mit apturl installieren, Link: apt://php-cli

Auf der Konsole können PHP-Dateien mit php DATEINAME.php ausgeführt werden. Es gibt auch eine interaktive Konsole, in der man direkt PHP-Code eingeben kann. Gestartet wird sie mit:

php -a 

Neuere Versionen installieren

Selbst wenn die aktuellen Ubuntu-Versionen teilweise PHP-Versionen verwenden, die offiziell jeweils ihren „End of Life“ (EOL) erreicht haben, werden diese wie bereits erwähnt ständig mittels Rückportierungen (UbuntuBackports) mit sicherheitskritischen Aktualisierungen versorgt.

Wer dennoch aktuellere PHP-Versionen nutzen möchte, kann auf die Paketquelle von Ondřej Surý zurück greifen:

Adresszeile zum Hinzufügen des PPAs:

  • ppa:ondrej/ubuntu/php

Hinweis!

Zusätzliche Fremdquellen können das System gefährden.


Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen sind der Wiki/Vorlagen/PPA/ppa.png PPA-Beschreibung des Eigentümers/Teams ondrej zu entnehmen.

Nun kann man die gewünschte PHP-Version installieren, nach dem Muster:

sudo apt install phpVERSION 

Beispiel für PHP 8.0:

sudo apt install php8.0 

Hinweis:

Zu installierende PHP-Erweiterungen müssen, wenn man diese Paketquelle benutzt, mit der installierten PHP-Version angegeben werden, zum Beispiel sudo apt install php8.0-intl. Ansonsten wird nicht nur die Erweiterung aus den Ubuntu-eigenen Paketquellen installiert (main), es wird auch PHP komplett neu aus den Ubuntu-Paketquellen installiert!

Funktionstest

Die Funktionsfähigkeit von PHP als Kommandozeilenwerkzeug lässt sich direkt nach der Installation zum Beispiel mit dem Befehl

php -i 

überprüfen, der bereits einige Informationen zur PHP-Installation ausgeben sollte[2].

Unter der Voraussetzung, dass PHP als Apache-Modul installiert wurde, lässt sich der Betrieb von PHP im Webserver damit testen, dass der folgende Code als /var/www/html/phpinfo.php abgespeichert und der URL http://<Server-Name-oder-IP>/phpinfo.php aufgerufen aufgerufen wird[3][4]. Dieses Skript gibt wie php -i zahlreiche Informationen zur PHP-Installation aus.

1
2
3
<?php
phpinfo();
?>

Wird ein anderer Webserver verwendet, ist dessen Dokumentation zum richtigen Vorgehen zu konsultieren.

Achtung!

Das PHP-Skript phpinfo.php sollte nach dem ersten Test sofort entfernt oder durch andere Maßnahmen vor unbefugtem Zugriff geschützt werden[5], damit potentielle Angreifer keine wertvollen Informationen über das System erhalten.

Konfiguration

Die PHP-Konfigurationsdatei 🇩🇪 php.ini findet sich für php-cli im Verzeichnis /etc/php/PHP.VERSION/cli/ und für die serverseitige Programmierung mit Apache im Verzeichnis /etc/php/PHP.VERSION/apache2/. Es empfiehlt sich, Änderungen nicht direkt dort vorzunehmen, sondern im jeweiligen Unterverzeichnis conf.d/ eine neue Datei mit der gewünschten Konfiguration zu erstellen. Dadurch wird vermieden, dass bei einem Update von PHP die eigenen Einstellungen überschrieben werden. Alle ini-Dateien werden nacheinander „abgearbeitet“ und überschreiben jeweils die vorherigen Einstellungen. Deshalb beginnen dort die meisten Dateinamen mit einer Ziffer. Eigene ini-Dateien sollte man, damit sie auch wirklich wirksam werden, am besten durch die höchsten Ziffer am Beginn des Dateinamens priorisieren.

Anbindungen

Apache

Bei der Installation von PHP für serverseitige Programmierung wird das passende Modul für den Webserver Apache normalerweise mit installiert. Fehlt dieses, so kann man das Paket libapache2-mod-php nachinstallieren. Ab Ubuntu 16.04 ist die Nachinstallation immer notwendig.

Wenn nach der Installation von Apache und PHP die PHP-Dateien nicht ausgeführt, sondern nur heruntergeladen werden, kann es sein, dass das Apache-Modul nicht richtig aktiviert wurde. Weitere Informationen hierzu findet man im Artikel Apache/Module.

MySQL/MariaDB

Als Datenquelle für viele PHP-Skripte dienen Datenbanken. Zusammen mit Apache und PHP macht das dann einen LAMP-Server (Linux, Apache, MySQL und PHP). Die Anbindung an MySQL kann über die Pakete php-mysql installiert werden. Die MySQL-Alternative MariaDB lässt sich ebenso mit den Datenbanktreibern für MySQL ansprechen.

Andere Datenbanken

PHP unterstützt neben MySQL/MariaDB weitere Datenbankmanagementsysteme, wie beispielsweise PostgreSQL, für das der passende Treiber im Paket php-pgsql zu finden ist. Welche Datenbanken noch unterstützt werden, findet sich im Abschnitt Datenbankerweiterungen 🇩🇪 in der PHP-Dokumentation.

PHP-Erweiterungen

Es gibt zahlreiche nützliche Erweiterungen für PHP, die zusätzlich installiert werden können. Hier eine unvollständige Auswahl:

  • php-cgi - CGI-Skripte ausführen (vgl. zum bereits oben erwähnten php-fpm)

  • php-curl - cURL-Unterstützung (Dateien über verschiedene Protokolle übertragen)

  • php-gd - Bilder generieren und manipulieren

  • php-imagick (universe) - Bilder per ImageMagick manipulieren.

  • php-imap (universe) - IMAP-Unterstützung.

  • php-pear - PEAR 🇬🇧 (PHP Extension and Application Repository), eine Bibliothek von Modulen und Erweiterungen für PHP

Internationalisierung

Die Erweiterung php-intl hilft bei der automatisierten Ausgabe von Datums, - Zahlen -und anderen Formatierungen je nach Sprache und Gebietsschema. Näheres hierzu im Unterartikel „PHP/Internationalisierung“.

Paket-Management

Für PHP gibt es zahlreiche Lösungen und Bibliotheken, die ein Entwickler in sein Projekt einbinden kann. Mit dem zuvor genannten PEAR lassen sich viele Erweiterungen bereitstellen, allerdings nur systemweit. Mittlerweile gilt als De-Facto-Standard für die Paketverwaltung Composer. Er bringt das Management von Paketen und deren Abhängigkeiten auf die Ebene einzelner Projekte, wodurch es unter anderem möglich ist, Versionskonflikten vorzubeugen.

Problembehebung

Ermitteln der PHP-Version

Die installierte PHP-Version lässt sich durch die folgende Eingabe in einem Terminal ermitteln[2]:

php -v 

Intern

  • LAMP - einen LAMP-Server (Linux, Apache, MySQL und PHP) unter Ubuntu installieren

  • Laminas - umfangreiches Framework für PHP

Extern

Diese Revision wurde am 10. Januar 2021 17:46 von mubuntuHH erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Server, Internet, Datenbank, PHP, Composer, LAMP