PHP 8.3.4 Released!

Installation auf Unix-Systemen

Inhaltsverzeichnis

Dieser Abschnitt leitet Sie durch die generelle Konfiguration und Installation von PHP auf Unix-Systemen. Bitte lesen Sie zuerst alle Abschnitte, die speziell auf Ihre Plattform oder Ihren Webserver zugeschnitten sind, bevor Sie mit dem Installationsprozess beginnen.

Wie dieses Handbuch im Abschnitt Generelle Installationsüberlegungen darlegt, behandeln wir in diesem Abschnitt hauptsächlich die Web-zentrierte Einrichtung von PHP, obwohl wir die Installation von PHP für die Kommandozeilen-Nutzung ebenso beschreiben.

Es gibt veschiedene Wege, PHP auf Unix-Plattformen zu installieren: Entweder mit einem Kompilierungs- und Konfigurationsprozess oder durch verschiedene Methoden mit vorgefertigten Paketen. Diese Dokumentation richtet ihr Augenmerk hauptsächlich auf den Prozess des Kompilierens und Konfigurierens von PHP. Viele Unix-artige Systeme haben irgendeine Art von Paket-Installationssystem. Dies kann beim Aufsetzen einer Standardkonfiguration helfen, aber wenn Sie davon abweichende Features benötigen (etwa einen sicheren Server oder andere Datenbanktreiber), könnte es sein, dass Sie PHP und/oder Ihren Webserver selbst bauen müssen. Falls Ihnen das Bauen und Kompilieren von Software nicht geläufig ist, ist es lohnenswert zu prüfen, ob bereits jemand ein PHP-Paket mit den von Ihnen benötigten Features gebaut hat.

Folgende Fähigkeiten und Software benötigen Sie für die Kompilierung:

  • Grundlegende Unix-Fertigkeiten (die Fähigkeit, "make" und einen C-Kompiler zu bedienen)
  • Einen ANSI-C-Compiler
  • Einen Webserver
  • Modulspezifische Komponenten (wie GD, PDF-Bibliotheken usw.)

Wenn direkt von den Git-Quellen kompiliert wird oder eigene Änderungen vorgenommen wurden, könnten folgende Komponenten benötigt werden:

  • autoconf: 2.59+ (für PHP >= 7.0.0), 2.64+ (für PHP >= 7.2.0)
  • automake: 1.4+
  • libtool: 1.4.x+ (ausgenommen 1.4.2)
  • re2c: 0.13.4+
  • bison:
    • PHP 7.0 - 7.3: 2.4 oder höher (einschließlich Bison 3.x)
    • PHP 7.4: > 3.0

Der anfängliche PHP Setup- und Konfigurationsprozess wird durch die Verwendung von Kommandozeilen-Optionen des configure-Skriptes gesteuert. Sie sollten eine Liste von allen verfügbaren Optionen zusammen mit einer kurzen Erläuterung durch den Aufruf von ./configure --help erhalten. Unser Handbuch dokumentiert die verschiedenen Optionen einzeln. Sie finden die grundlegenden Optionen im Anhang, während die verschiedenen erweiterungsspezifischen Optionen auf den Referenzseiten der Erweiterungen beschrieben sind.

Sobald PHP konfiguriert ist, sind Sie bereit, die Module und/oder die ausführbaren Dateien zu bauen. Der Befehl make sollte sich darum kümmern. Falls dies fehlschlägt und Sie nicht herausfinden können wieso, werfen Sie einen Blick in den Abschnitt Probleme.

Hinweis:

Einige Unix-Systeme (wie etwa OpenBSD und SELinux) verbieten möglicherweise aus Sicherheitsgründen das Zuordnen von Speicherseiten, die sowohl schreibbar als auch ausführbar sind, was als PaX MPROTECT oder W^X violation protection bezeichnet wird. Diese Art der Speicherzuordnung ist allerdings für die JIT-Unterstützung von PCRE erforderlich, sodass PHP dann entweder ohne PCRE-JIT-Unterstützung kompiliert werden muss, oder die ausführbare PHP-Datei auf irgendeine vom System bereitgestellte Weise freigegeben (whitelisted) werden muss.

Hinweis: Die Cross-Kompilierung für ARM mit der Android-Toolchain wird zurzeit nicht unterstützt.

add a note

User Contributed Notes 1 note

up
29
cj3 at clifjackson dot net
6 years ago
I recently ran in to a situation where I was building PHP 7.1.13 from source. Configuration & make went fine, however, when I ran make install it hung. It turns out that if you are building PHP with Apache (apxs) the make file calls apxs with the -a flag which tells it to modify the httpd.conf file. If, for whatever reason, the file is not writeable then it fails and you get the hang.

Line 108 in my Makefile looks like this:

INSTALL_IT = $(mkinstalldirs) '$(INSTALL_ROOT)/usr/lib64/httpd/modules' && $(mkinstalldirs) '$(INSTALL_ROOT)/etc/httpd/conf' && /usr/sbin/apxs -S LIBEXECDIR='$(INSTALL_ROOT)/usr/lib64/httpd/modules' -S SYSCONFDIR='$(INSTALL_ROOT)/etc/httpd/conf' -i -a -n php7 libphp7.la

I had to remove the -a flag and then it was fine.
To Top