PHP – Installation und Konfiguration

Installation PHP 5.6.4 mit Apache 2.4-2.4.10_2 Support in FreeBSD 10.1-RELEASE-p4

Voraussetzungen

  • FreeBSD 10.1-RELEASE-p4
  • Apache 2.4-2.4.10_2

Installation PHP Scripting Sprache

Installation via Packages. Falls die Abhängigkeiten für libxml2 und pcre fehlen werde diese Packages automatisch mit installiert.

root@host:/ # pkg install -y php56

Installation via Ports:

root@host:/ # cd /usr/ports/lang/php56
root@host:/usr/ports/lang/php56 # make install clean

Installation PHP Bibliotheken

Icinga Web 1 und Web 2 benötigen mehrere PHP Bibliotheken. In den PHP-Extensions sind die Meisten von denen die man braucht enthalten. Die Restlichen müssen nach installiert werden.

Installation via Packages. Das Modul Openssl wird erst für Icinga Web 2 wichtig.

root@host:/ # pkg install -y php56-extensions
root@host:/ # pkg install -y php56-gd php56-ldap php56-mysql php56-openssl php56-pdo_mysql \
              php56-soap php56-sockets php56-xmlrpc php56-xsl

Bei der Installation via Ports müssen die Bibliotheken GD, LDAP, MYSQL, OPENSSL, PDO_MYSQL, SOAP, SOCKETS, XMLRPC, XSL zusätzlich aktiviert werden.

root@host:/ # cd /usr/ports/lang/php56-extensions
root@host:/usr/ports/lang/php56 # make install clean

Installation PEAR Framework für PHP

Die Installation von PEAR (PHP Extension and Application Repository) als Package ist nicht zu empfehcd ../pealen. In der jetzigen Version würde es PHP5 nachinstallieren. Um PHP56 zu nutzten muss es über die Ports erfolgen.

root@host:/ # cd /usr/ports/devel/pear
root@host:/usr/ports/devel/pear # make install clean

Installation PEAR PHING

Die Installation von PEAR-PHING als Package ist nicht zu empfehlen. In der jetzigen Version würde es PHP5 nachinstallieren und damit die PHP56 deinstallieren. Um PHP56 zu nutzten muss es über die Ports installiert werden.

root@host:/ # cd /usr/ports/devel/pear-phing
root@host:/usr/ports/devel/pear # make install clean

Installation PHP INTL

Für Icinga Web 2 ist es nicht zwingend notwendig aber es freut sich über Internationalisierung. Dazu benötigt Icinga Web 2 das PHP Modul INTL. Auch dieses Packages gibt es nur mit PHP5 Abhängigkeit und muss über die Ports installiert werden. Es werden mehrere Ports (z.B. gmake und icu) mit installiert. Bei deren Config Abfragen immer den Standard unverändert lassen.

root@host:/ # cd /usr/ports/devel/pecl-intl
root@host:/usr/ports/devel/pecl-intl/ # make install clean

Konfiguration

Die Einstellungen für PHP erfolgen in der php.ini, die standartmäßig im Verzeichnis /usr/local/etc/ gesucht von PHP werden. Die Datei muss aber zuvor dorthin kopiert werden.

root@host:/ # cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

In der php.ini werden zum Beispiel die Variablen timezone, upload_max_filesize und post_max_size angepasst.

Einstellen PHP Timezone

Icinga Web2 benötigt eine Zeitzone in PHP. Wer es jetzt nicht konfigurieren möchte wird später im Web Setup darauf hingweisen. In der php.ini wird es unter date.timezone eingestellt. Dazu wird in der Zeile das ; Zeichen am Anfang der Zeile entfernt und zum Beispiel Europe/Berlin eingetragen.

date.timezone = Europe/Berlin

Einstellen PHP Session Pfad

Icinga Web2 benötigt den Session Pfad für die MySQL Kommunikation. Diesen sucht es in der php.ini. Wer es jetzt nicht konfigurieren möchte wird später beim Aufruf der Website mit einer Fehlermeldung begrüßt. In der php.ini ist es unter session.save_path zu finden. Nicht vergessen das  ; Zeichen am Anfang der Zeile entfernen und /tmp eingetragen.

session.save_path = /tmp

Integration in Apache

PHP wird in Apache als Modul integriert.

Installation mod_php

Insofern mod_php vor Apache eingespielt wird, installiert sich der Web Server automatisch mit.

Installiert via Package:

root@host:/ # pkg install -y mod_php56

Installation via Port:

root@host:/ # cd /usr/ports/www/mod_php56
root@host:/usr/ports/www/mod_php56 # make install clean

Konfiguration Apache

Dafür, dass PHP-Scripts mit Hilfe des Apache ausgeführt werden, benötigt die Konfigurationsdatei des Web Servers einige zusätzliche Zeilen. Zuerst muss das Modul geladen werden.

Nach der Installation von mod_php wird das Module automatisch in der Apache Konfiguration httpd.conf registriert.

Man sollte dennoch überprüfen, ob der Eintrag wirklich erfolgreich war. Folgende Zeile muss enthalten sein (ohne das # Zeichen am Anfang der Zeile). Der Pfad auf der rechten Seite der LoadModule-Anweisung muss auf den Ort des PHP-Moduls im System zeigen.

LoadModule php5_module		libexec/apache24/libphp5.so

Die Reihenfolge der index Dateien ist nicht willkürlich. Findet Apache bei einem Startseiten- bzw. Verzeichnisaufruf mehrere index Dateien, so wird es die erstgenannte index Datei verwenden. In meinem Fall die index.php, auch wenn eine index.html vorhanden ist.

<IfModule dir_module>
    DirectoryIndex index.php index.html
<IfModule>

Man benötigt einen laufenden Apache2 mit Unterstützung für PHP als SAPI-Modul. Apache muss also angewiesen werden, bestimmte Dateiendungen als PHP Skripte zu behandeln. Der veraltete Weg ist, in der Datei httpd.conf im Abschnitt AddType folgendes einzutragen.

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Will man PHP Code innerhalb von HTML Seiten nutzten, dann empfiehlt sich folgende Einstellung.

AddType application/x-httpd-php .php .html
AddType application/x-httpd-php-source .phps .html

Es gibt eine zweite Alternative. Da in der Regel mod_mime aktiviert ist (für Scripteinsatz zwingend erforderlich) und in der httpd.conf die Zeile TypesConfig conf/mime.types oder ähnlich enthalten ist, kann man in die Datei mime.types (/usr/local/etc/apache24/mime.types), den gewünschten MIME-Typ eintragen.

Das bedeutet, in die Liste der bereits verzeichneten Typen noch diese Zeilen hinzufügen.

application/x-httpd-php php
application/x-httpd-php-source phps

Die Installationshinweise von FreeBSD und PHP (Link) empfehlen eine andere Integration des MIME-Typ (am besten am Ende der Datei httpd.conf anfügen) als Apache FilesMatch. Anstelle nur die Apachedirektive AddType zu verwenden, kann man zusätzlich verhindern, dass potentiell gefährliche Dateien wie exploit.php.jpg als PHP-Dateien ausgeführt werden. Es handelt sich also um eine Sicherheitseinstellung und sollte daher bevorzugt verwendet werden!

<FilesMatch "\.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

 

<FilesMatch "\.phps$>
    SetHandler application/x-httpd-php-source
</FilesMatch>

Apache muss jetzt neu gestartet werden damit die Neuerungen aktiv werden.

root@host:/ # /usr/local/etc/rc.d/apache24 restart

Testen PHP

Zum Schluss wird getestet ob PHP und Apache zusammenarbeiten.

Man kann sich alle geladenen Module anzeigen lassen.

root@host:/ # php -m

Für Apache wird die phpinfo() Anweisung in eine PHP Datei eingebettet.

<?php
// Zeigt alle Informationen (Standardwert ist INFO_ALL)
phpinfo();
?>

Oder das ganze in Kurzversion:

root@host:/ # echo '<?php phpinfo(); ?>' >> /usr/local/www/apache24/data/phpinfo.php

Zum Schluss im Browser die gerade eben erzeugte Datei über http://www.example.com/phpinfo.php aufrufen. Jetzt sollten die Informationen zur PHP Installation angezeigt werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.