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 add a note

User Contributed Notes 2 notes

up
11
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.
up
-20
Arjan van Bentem
17 years ago
When using Red Hat Fedora, beware of Security Enhanced Linux, SELinux.

Quoted from Red Hat: "The security goal is to make sure that Apache HTTP is only reading the static Web content, and not doing anything else such as writing to the content, connecting to database sockets, reading user home directories, etc."

These limitations include, among many other things, using mkdir to create directories, using fopen to access files, using fopen or get_headers to read URLs, or using exec to run external applications that happen to use sockets (or maybe access some files, but which will run fine when executed from the command line as Unix user apache or httpd -- such as HylaFAX "faxstat" as invoked from nweb2fax recvq.php and sendq.php).

See /var/log/messages for any denials due to the SELinux policy. To disable it:

- System, Administration, Security Level and Firewall
- open the SELinux tab
- click the Transition tree
- check Disable SELinux protection for Apache HTTP
- execute /etc/init.d/httpd restart

See also http://fedora.redhat.com/docs/selinux-faq/ and http://php.net/results.php?q=selinux&p=wholesite
To Top