%
% apache2_php5.tex
% Last Update: $Id$
%
%%%%%%%%%%%%%%%%%%%%%%% Kapitel Apache2_php5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Die PHP5-Erweiterung f"ur das Apache2-Paket}
    \emph{Ab Version 1.3.3 - Stand 11.09.2009\\
    (c) Sebastian Scholze  <sebastian(at)eisfair(dot)org>}


\section{Einleitung}
    Das PHP5-Paket ist eine Erweiterung des Apache2-Paketes. Es kann nur
    installiert werden, wenn Apache2 bereits installiert ist.

\section{Voraussetzungen}
    Das Apache2-Paket ben"otigt die folgenden Pakete unter eisfair-1:\\
        \begin{itemize}
            \item apache2
            \item libcrack
            \item libcares
            \item libcurl
            \item libtiff
            \item libmcrypt
            \item libzzip
            \item libbz2
            \item libxml2
            \item libfreetds
            \item libgd2
            \item libt1
            \item libpq-5
            \item libltdl
            \item libmhash
            \item libz
            \item libgdbm1-8
            \item libpcre5-0
            \item libldap
            \item libsasl
            \item libfirebird
            \item libstdcpp5
            \item libstdcpp6
            \item libmysql
            \item libpdflite\_7
        \end{itemize}
    Das apache2 Paket ben"otigt die folgenden Pakete unter eisfair-2:\\
        \begin{itemize}
            \item apache2
            \item cracklib2
            \item libc-ares1
            \item libcurl3
            \item libtiff4
            \item libxml2
            \item libsybdb5
            \item libgd2-noxpm
            \item libt1-5
            \item libpq-5
            \item libltdl3
            \item libgdbm3
            \item libpcre3
            \item libsasl2-2
            \item libmysql5-0
            \item libpdflite\_7
        \end{itemize}

\section{Installation}
    Das apache2-php5-Paket wird "uber das Setup-Men"u im Untermen"u ''Package
    administration'' installiert. Wird eine "altere Paketversion vorgefunden,
    so wird deren Konfiguration gesichert und das alte Paket deinstalliert bevor
    die neuen Programmdateien installiert werden und die Konfiguration "ubernommen
    wird.\\
    Bei einer Neuinstallation wird automatisch die
    \textbf{Standardkonfiguration} erstellt. Nach Beendigung diese
    Schrittes werden die Konfigurationsdateien generiert und der httpd-Prozess
    wird neu gestartet, mit dem integrierten php5 Modul.

\section{Men"u im Setup-Programm}
    Das Men"u des apache2-php5 Paketes im Setup-Programm ist wie folgt
    aufgebaut:

    \begin{itemize}
        \item Apache2 module configuration\\
        \begin{itemize}
            \item PHP5 Documentation\\
            \item Edit PHP5 Configuration\\
            Konfiguration von PHP5 "uber die eisfair-Konfigurationsebene
            bearbeiten.
        \end{itemize}
    \end{itemize}

\section{"Anderung der Konfiguration}
    Die Konfiguration von PHP5 unter eisfair erfolgt "uber den Men"upunkt
    ''Edit PHP5 configuration'' im Paketmen"u. Die vorgenommenen "Anderungen
    werden nach Beenden des Editors automatisch "ubernommen.

\section{Die Konfigurationsdatei}
    In der Konfigurationsdatei, die "uber das Men"u zug"anglich ist, sind
    die in den folgenden Unterabschnitten beschriebenen Parameter vorhanden.

    \subsection{Allgemeine Konfiguration}
        \begin{description}
            \config{PHP5\_SAFE\_MODE}{PHP5\_SAFE\_MODE}{PHP5SAFEMODE}
                Hier kann der SAFE-Mode ein- bzw. ausgeschaltet werden.
                N"ahere Informationen dazu unter
                \link{http://de.php.net/features.safe-mode}{http://de.php.net/features.safe-mode}

                Standardeinstellung: \emph{PHP5\_SAFE\_MODE='no'}
            \config{PHP5\_MAX\_EXECUTION\_TIME}{PHP5\_MAX\_EXECUTION\_TIME}{PHP5MAXEXECUTIONTIME}
                Hat ein PHP-Skript eine l"angere Laufzeit als die hier angegebene, wird die
                Ausf"uhrung des Skripte abgebrochen.

                Standardeinstellung: \emph{PHP5\_MAX\_EXECUTION='30'}
            \config{PHP5\_DISPLAY\_ERRORS}{PHP5\_DISPLAY\_ERRORS}{PHP5DISPLAYERRORS}
                Hier kann man die Anzeige von Syntaxfehlern im Browser w"ahrend
                der Laufzeit unterdr"ucken.

                Standardeinstellung: \emph{PHP5\_DISPLAY\_ERRORS='yes'}
            \config{PHP5\_LOG\_ERROR}{PHP5\_LOG\_ERROR}{PHP5LOGERROR}
                Mit Hilfe dieser Variablen kann gesteuert werden, ob Fehler in
                der log-Datei protokolliert werden sollen, oder nicht.

                Standardeinstellung: \emph{PHP5\_LOG\_ERROR='no'}
            \config{PHP5\_INCLUDE\_PATH}{PHP5\_INCLUDE\_PATH}{PHP5INCLUDEPATH}
                In diesen Verzeichnissen schaut PHP nach, wenn per include(),
                require() o."a. eine Datei ohne die Angabe von einem absoluten
                Verzeichnis inkludiert werden soll. Oder wenn diese Datei im
                aktuellen Verzeichnis nicht gefunden wird.

                Als Trennzeichen der Verzeichnisse wird ein Doppelpunkt (:)
                verwendet.

                Standardeinstellung:
                \emph{PHP5\_INCLUDE\_PATH='.:/usr/share/php5:/usr/include/php5'}
            \config{PHP5\_REGISTER\_GLOBALS}{PHP5\_REGISTER\_GLOBALS}{PHP5REGISTERGLOBALS}
                Wird diese Variable auf 'yes' gesetzt, stellt dies ein
                Sicherheitsrisiko da! "altere PHP-Skripte laufen evtl. nicht,
                wenn diese Variable auf 'no' steht. Es ist allerdings keine
                L"osung diese Variable einfach auf 'yes' zu stellen, damit die
                alten Skripte laufen. Ferner wird empfohlen diese auf den
                neusten Stand zu bringen!

                N"ahere Informationen dazu unter
                http://de.php.net/register\_globals

                \achtung{Es wird unter keinen Umst"anden empfohlen diese
                Variable zu aktivieren}

                Standardeinstellung: \emph{PHP5\_REGISTER\_GLOBALS='no'}
            \config{PHP5\_EXTENSION\_DIR}{PHP5\_EXTENSION\_DIR}{PHP5EXTENSIONDIR}
                "uber die Variable kann festgelegt werden, wo php5 nach
                Erweiterungen suchen soll. Normalerweise muss diese Variable
                nicht ver"andert werden.

                Standardeinstellung:
                \emph{PHP5\_EXTENSION\_DIR='/usr/lib/php5/extensions'}
            \config{PHP5\_SENDMAIL\_PATH}{PHP5\_SENDMAIL\_PATH}{PHP5SENDMAILPATH}
                Hier kann der Pfad zum Sendmail-Programm angegeben werden. Wenn diese
                Variable leer ist, wird das Sendmail-Programm in dem Standardverzeichnis
                gesucht.

                Standardeinstellung: \emph{PHP5\_SENDMAIL\_PATH=''}
            \config{PHP5\_SENDMAIL\_APP}{PHP5\_SENDMAIL\_APP}{PHP5SENDMAILAPP}
                Hier k"onnen zus"atzlich Kommandos angegeben werden, die f"ur die
                Benutzung von Sendmail notwendig sind. Ist diese Variable leer,
                werden die Standardeinstellung genutzt.

                Standardeinstellung: \emph{PHP5\_SENDMAIL\_APP=''}
            \config{PHP5\_DATE\_TIMEZONE}{PHP5\_DATE\_TIMEZONE}{PHP5DATETIMEZONE}
                Hier kann die Datums und Zeitzone definiert werden, die von PHP
                genutzt werden soll.

                Standardeinstellung: \emph{PHP5\_DATE\_TIMEZONE='Europe/Berlin'}
            \config{PHP5\_INFO}{PHP5\_INFO}{PHP5INFO}
                Steht diese Variable auf 'yes' werden in
                \jump{APACHE2DOCUMENTROOT}{APACHE2\_DOCUMENT\_ROOT} drei
                Skripte abgelegt, um die Funktionalit"at der GD- bzw. PDF-Library
                zu testen oder um allgemeine PHP-Informationen abzurufen.

                Die Skripte hei"sen folgenderma"sen

                \begin{itemize}
                    \item info.php - Generelle Informationen "uber die PHP-Installation
                    \item gd.php - "Uberpr"ufung der Funktionalit"at der GB-Library (Erstellen von JPEGs, GIFs, etc.)
                    \item pdf.php - "Uberpr"ufung der Funktionalit"at der PDF-Library (Erstellung von PDF-Dateien)
                \end{itemize}

                Standardeinstellung: \emph{PHP5\_INFO='no'}
            \config{PHP5\_MAX\_POST\_SIZE}{PHP5\_MAX\_POST\_SIZE}{PHP5MAXPOSTSIZE}
                Clients k"onnen gr"o"sere Datenmengen an den Server "uber HTTP
                schicken. Dazu wird meistens die POST-Methode verwendet.

                Diese Variable definiert, wie gro"s die Datenmenge f"ur einen
                Upload mit der POST-Methode maximal sein darf.

                Standardeinstellung: \emph{PHP5\_MAX\_POST\_SIZE='8M'}
            \config{PHP5\_MAX\_UPLOAD\_FILESIZE}{PHP5\_MAX\_UPLOAD\_FILESIZE}{PHP5MAXUPLOADFILESIZE}
                Neben der POST-Methode existieren noch weitere Methoden, um
                gr"o"sere Daten an den Server zu senden, z.B. die PUT-Methode.

                Diese Variable definiert, wie gro"s die Datenmenge f"ur einen
                Upload generell sein darf.

                Standardeinstellung: \emph{PHP5\_MAX\_UPLOAD\_FILESIZE='2M'}
            \config{PHP5\_MEMORY\_LIMIT}{PHP5\_MEMORY\_LIMIT}{PHP5MEMORYLIMIT}
                Verbraucht ein Skript mehr als den in dieser Variable
                definierten Arbeitsspeicher, wird die Ausf"uhrung abgebrochen.

                Standardeinstellung: \emph{PHP5\_MEMORY\_LIMIT='8M'}
            \config{PHP5\_UPLOAD\_DIR}{PHP5\_UPLOAD\_DIR}{PHP5UPLOADDIR}
                Gibt den Pfad an, an den die Uploads tempor"ar gespeichert
                werden. Wichtig: Der Web-Server muss Schreibzugriff auf dieses
                Verzeichnis haben.

                Standardeinstellung: \emph{PHP5\_UPLOAD\_DIR='/tmp'}
            \config{PHP5\_EXT\_CACHE}{PHP5\_EXT\_CACHE}{PHP5EXTCACHE}
                Mit Hilfe dieser Variablen kann gesteuert werden, ob ein PHP
                Caching-Modul verwendet werden soll. Soll ein solches Modul
                verwendet werden, so kann das zu verwendende ausgew"ahlt werden
                (zur Verf"ugung stehen apc und eac).

                Standardeinstellung: \emph{PHP5\_EXT\_CACHE='no'}
            \config{PHP5\_EXT\_MYSQL}{PHP5\_EXT\_MYSQL}{PHP5EXTMYSQL}
                Hier kann die MySQL Erweiterung in PHP5 aktiviert werden

                Standardeinstellung: \emph{PHP5\_EXT\_MYSQL='no'}
            \config{PHP5\_EXT\_MYSQL\_SOCKET}{PHP5\_EXT\_MYSQL\_SOCKET}{PHP5EXTMYSQLSOCKET}
                Wurde die MySQL Erweiterung aktiviert, muss hier der Pfad zum
                MySQL Socket angegeben werden.

                Standardeinstellung: \emph{PHP5\_EXT\_MYSQL\_SOCKET='/var/run/mysql/mysql.sock'}
            \config{PHP5\_EXT\_MSSQL}{PHP5\_EXT\_MSSQL}{PHP5EXTMSSQL}
                Hier kann die MSSQL Erweiterung in PHP5 aktiviert werden

                Standardeinstellung: \emph{PHP5\_EXT\_MSSQL='no'}
            \config{PHP5\_EXT\_PGSQL}{PHP5\_EXT\_PGSQL}{PHP5EXTPGSQL}
                Hier kann die PostgreSQL Erweiterung in PHP5 aktiviert werden

                Standardeinstellung: \emph{PHP5\_EXT\_PGSQL='no'}
            \config{PHP5\_EXT\_INTER}{PHP5\_EXT\_INTER}{PHP5EXTINTER}
                Hier kann die Interbase Erweiterung in PHP5 aktiviert werden

                Standardeinstellung: \emph{PHP5\_EXT\_INTER='no'}
        \end{description}

\section{Einstellungen beim "Ubersetzen des Paketes}
    PHP5 wurde mit den folgenden Einstellungen "ubersetzt:
    \begin{description}
        \item[apache2]
            -{}-prefix=/usr \\
            -{}-exec-prefix=/usr \\
            -{}-with-apxs2=/usr/local/apache2/bin/apxs \\
            -{}-with-config-file-path=/etc/php5/apache2 \\
            -{}-program-prefix= \\
            -{}-build=i486-pc-linux-gnu \\
            -{}-target=i486-pc-linux-gnu \\
            -{}-host=i486-pc-linux-gnu \\
            -{}-bindir=/usr/bin \\
            -{}-sysconfdir=/etc/php5 \\
            -{}-libdir=/usr/lib/php5 \\
            -{}-datadir=/usr/lib/php5 \\
            -{}-includedir=/usr/include/php5 \\
            -{}-with-pear=/usr/share/php5 \\
            -{}-disable-debug \\
            -{}-enable-bcmath \\
            -{}-enable-calendar \\
            -{}-enable-dba \\
            -{}-enable-exif \\
            -{}-enable-ftp \\
            -{}-enable-gd-native-ttf \\
            -{}-enable-gd-jis-conv \\
            -{}-enable-inline-optimization \\
            -{}-enable-ipv6 \\
            -{}-enable-magic-quotes \\
            -{}-enable-mbstring \\
            -{}-enable-session \\
            -{}-enable-shmop \\
            -{}-enable-sigchild \\
            -{}-enable-sockets \\
            -{}-enable-sysvmsg \\
            -{}-enable-sysvsem \\
            -{}-enable-sysvshm \\
            -{}-enable-wddx \\
            -{}-enable-zend-multibyte \\
            -{}-enable-zip \\
            -{}-with-bz2 \\
            -{}-with-curl \\
            -{}-with-db4 \\
            -{}-with-gettext \\
            -{}-with-gd \\
            -{}-with-freetype-dir \\
            -{}-with-iconv \\
            -{}-with-interbase=shared,/usr \\
            -{}-with-jpeg-dir \\
            -{}-with-layout=GNU \\
            -{}-with-ldap \\
            -{}-with-ldap-sasl \\
            -{}-with-libmbfl \\
            -{}-with-mhash \\
            -{}-with-mcrypt \\
            -{}-with-mime-magic \\
            -{}-with-mm \\
            -{}-with-mssql=shared,/usr \\
            -{}-with-pdo-dblib \\
            -{}-with-mysql=shared,/usr \\
            -{}-with-pdo-mysql \\
            -{}-with-pgsql=shared \\
            -{}-with-pdo-pgsql \\
            -{}-with-pdo-firebird \\
            -{}-with-openssl \\
            -{}-with-png-dir \\
            -{}-with-t1lib \\
            -{}-with-zlib \\
            -{}-with-imap=/usr/local/imap-2007 \\
            -{}-with-imap-ssl=/usr/local/imap-2007 \\
            -{}-with-pdflib=shared,/usr \\
            -{}-enable-dbase \\
            -{}-with-advantage=shared,/usr \\
            -{}-enable-track-vars \\
            -{}-with-curlwrappers \\
            -{}-enable-eaccelerator=shared \\
            -{}-with-snmp=shared \\
            -{}-with-config-file-scan-dir=/etc/php5/conf.d \\
            -{}-with-config-file-path=/etc/php5/apache2 \\
            -{}-enable-embedded-mysqli \\
    \end{description}

\section{Verschiedenes}
