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.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

./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:

  • 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:

  • php-cli

Befehl zum Installieren der Pakete:

sudo apt-get install php-cli 

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

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.

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. 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, damit potentielle Angreifer keine wertvollen Informationen über das System erhalten.

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

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:

php -v 

Intern

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

Extern

Diese Revision wurde am 7. August 2019 21:05 von mubuntuHH erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Server, Internet, Datenbank, PHP, Composer, LAMP