%
% php.tex
% Last Update: $Id$
%
%%%%%%%%%%%%%%%%%%%%%%% Kapitel php %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Die PHP-Skriptsprache f"ur \eisfair}
\marklabel{phpscript}{}
\index{php}


\section{Einleitung}

    PHP f"ur \eisfair wird in 3 Versionen bereitgestellt.


    \begin{tabular}{llll}
      & apache2\_php & \pfeil & Modul f"ur den Apache2 Server \\
      & php-fpm      & \pfeil & Fast CGI f"ur den Apache2 Server\\
      & php-cli      & \pfeil & Kommandozeilen Tool \\
    \end{tabular}


    In dieser Dokumentation wird f"ur die Parameter der Name PHP
    verwendet. In den jeweiligen Paketen wird der Paket Name verwendet
    und entspricht somit dem zweiten Teil des Parameters.


    Wie:

    START\_PHP7      \\
    START\_PHP7CLI   \\
    START\_PHP7\_FPM \\

    Es werden weitere Module, die in eigenen Paketen verwaltet werden,
    bereitgestellt.


    \achtung{Nach der Installation von Zusatzpaketen ist in
             jedem Fall das Aktuallisieren der Konfiguration
             in den jeweiligen Basispaketen erforderlich,
             d.h. die Konfiguration muss einmal aufgerufen
             und gespeichert werden.}


    Ein Wechsel von 'apache2\_php' zu 'php-fpm' erfordert auch einen
    Wechsel in der Apache2 Konfiguration    'APACHE2\_MPM'


    \begin{tabular}{llll}
    & apache2\_php & \pfeil & APACHE2\_MPM='prefork' \\
    & php-fpm      & \pfeil & APACHE2\_MPM='event' oder 'worker' \\
    \end{tabular}


\section{Die Installation}

    Die jeweiligen php-Pakete werden "uber das Setup-Men"u installiert.
    Wird eine "altere Paketversion vorgefunden, so wird diese deinstalliert
    bevor die neuen Programmdateien installiert werden.



\section{Men"u im Setup-Programm}

    Die PHP Pakete sind im Setup-Programm wie folgt aufgebaut:


    \mbox{}

    \begin{tabular}{llll}
    & 4. &  Service administration \\
    \end{tabular}
\eline
    \begin{tabular}{p{1cm}llll}
    & x. & Apache2 Webserver \\
    & x. & PHP Command Line Interface (Optional) \\
    \end{tabular}
\eline
    \begin{tabular}{p{2cm}llll}
    & x. & Configuration \\
    \end{tabular}
\eline
    \begin{tabular}{p{3cm}llll}
    & x. & Modules configuration \\
    \end{tabular}
\eline
    \begin{tabular}{p{4cm}llll}
    & x. & PHP-FPM Administration (Optional) \\
    & x. & PHP Administration (Optional) \\
    \end{tabular}

    \mbox{}



\section{"Anderung der Konfiguration}

    Die Konfiguration kann "uber den Men"upunkt \glqq{}Edit configuration\grqq{}
    ge"andert werden. 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
    folgendene Parameter vorhanden.


\subsection{Allgemeine Konfiguration}


\begin{description}

\config{START\_PHP}
{START\_PHP}
{STARTPHP}
{
    Soll die php Unterst"utzung aktiviert werden.

    Standardeinstellung: \texttt{START\_PHP='no'}
}


\config{PHP\_MAX\_EXECUTION\_TIME}
{PHP\_MAX\_EXECUTION\_TIME}
{PHPMAXEXECUTIONTIME}
{

    Hat ein PHP-Skript eine l"angere Laufzeit als die hier angegebene,
    wird die Ausf"uhrung des Skripte abgebrochen.

    Standardeinstellung: \texttt{PHP\_MAX\_EXECUTION\_TIME='30'}
}


\config{PHP\_DISPLAY\_ERRORS}
{PHP\_DISPLAY\_ERRORS}
{PHPDISPLAYERRORS}
{
    Hier kann man die Anzeige von Syntaxfehlern im Browser w"ahrend
    der Laufzeit unterdr"ucken.

    Standardeinstellung: \texttt{PHP\_DISPLAY\_ERRORS='yes'}
}


\config{PHP\_LOG\_ERROR}
{PHP\_LOG\_ERROR}
{PHPLOGERROR}
{
    Mit Hilfe dieser Variablen kann gesteuert werden, ob Fehler in
    der log-Datei protokolliert werden sollen, oder nicht.

    Standardeinstellung: \texttt{PHP\_LOG\_ERROR='no'}
}


\config{PHP\_SENDMAIL\_PATH}
{PHP\_SENDMAIL\_PATH}
{PHPSENDMAILPATH}
{
    Hier kann der Pfad zum Sendmail-Programm angegeben werden. Wenn diese
    Variable leer ist, wird das Sendmail-Programm in dem Standardverzeichnis
    gesucht.

    Standardeinstellung: \texttt{PHP\_SENDMAIL\_PATH='{}'}
}


\config{PHP\_SENDMAIL\_APP}
{PHP\_SENDMAIL\_APP}
{PHPSENDMAILAPP}
{
    Hier k"onnen zus"atzlich Kommandos angegeben werden, die f"ur die
    Benutzung von Sendmail notwendig sind. Ist diese Variable leer,
    werden die Standardeinstellungen genutzt.

    Standardeinstellung: \texttt{PHP\_SENDMAIL\_APP='{}'}
}


\config{PHP\_DATE\_TIMEZONE}
{PHP\_DATE\_TIMEZONE}
{PHPDATETIMEZONE}
{
    Hier kann die Datums und Zeitzone definiert werden, die von PHP
    genutzt werden soll.

    Standardeinstellung: \texttt{PHP\_DATE\_TIMEZONE='Europe/Berlin'}
}


\config{PHP\_DEFAULT\_CHARSET}
{PHP\_DEFAULT\_CHARSET}
{PHPDEFAULTCHARSET}
{
    Hier kann man der default Character set gesetzt werden. Standardm"a"sig
    wird der Zeichensatz des Systems genutzt.

    Standardeinstellung: \texttt{PHP\_DEFAULT\_CHARSET='{}'}
}


\config{PHP\_INFO}
{PHP\_INFO}
{PHPINFO}
{
    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 GD-Library (Erstellen von JPEGs, GIFs, etc.)
        \item pdf.php - "Uberpr"ufung der Funktionalit"at der PDF-Library (Erstellung von PDF-Dateien)
    \end{itemize}

    Standardeinstellung: \texttt{PHP\_INFO='no'}
}


\config{PHP\_MAX\_POST\_SIZE}
{PHP\_MAX\_POST\_SIZE}
{PHPMAXPOSTSIZE}
{
    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: \texttt{PHP\_MAX\_POST\_SIZE='8M'}
}


\config{PHP\_MAX\_UPLOAD\_FILESIZE}
{PHP\_MAX\_UPLOAD\_FILESIZE}
{PHPMAXUPLOADFILESIZE}
{
    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: \texttt{PHP\_MAX\_UPLOAD\_FILESIZE='2M'}
}


\config{PHP\_MEMORY\_LIMIT}
{PHP\_MEMORY\_LIMIT}
{PHPMEMORYLIMIT}
{
    Verbraucht ein Skript mehr als den in dieser Variable
    definierten Arbeitsspeicher, wird die Ausf"uhrung abgebrochen.

    Standardeinstellung: \texttt{PHP\_MEMORY\_LIMIT='8M'}
}


\config{PHP\_UPLOAD\_DIR}
{PHP\_UPLOAD\_DIR}
{PHPUPLOADDIR}
{
    Gibt den Pfad an, an den die Uploads tempor"ar gespeichert
    werden. Wichtig: Der Web-Server muss Schreibzugriff auf dieses
    Verzeichnis haben.

    Standardeinstellung: \texttt{PHP\_UPLOAD\_DIR='/tmp'}
}


\config{PHP\_EXT\_CACHE}
{PHP\_EXT\_CACHE}
{PHPEXTCACHE}
{
    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

    Mit 'apcu' wird das APC Chaching Modul geladen. \\
    Mit 'redis' wird das redis Modul geladen. \\
    Mit 'apcu+redis' werden das APC und das redis Chaching Modul geladen. \\

    Standardeinstellung: \texttt{PHP\_EXT\_CACHE='no'}
}


\config{PHP\_EXT\_SOAP}
{PHP\_EXT\_SOAP}
{PHPEXTSOAP}
{
    Hier kann die Soap Erweiterung in PHP aktiviert werden.

    Standardeinstellung: \texttt{PHP\_EXT\_SOAP='no'}
}


\config{PHP\_EXT\_LDAP}
{PHP\_EXT\_LDAP}
{PHPEXTLDAP}
{
    Hier kann die Ldap Erweiterung in PHP aktiviert werden.

    Standardeinstellung: \texttt{PHP\_EXT\_LDAP='no'}
}


\config{PHP\_EXT\_MYSQL}
{PHP\_EXT\_MYSQL}
{PHPEXTMYSQL}
{
    Hier kann die MySQL Erweiterung in PHP aktiviert werden.

    Standardeinstellung: \texttt{PHP\_EXT\_MYSQL='no'}
}


\config{PHP\_EXT\_MYSQL\_SOCKET}
{PHP\_EXT\_MYSQL\_SOCKET}
{PHPEXTMYSQLSOCKET}
{
    Wurde die MySQL Erweiterung aktiviert, muss hier der Pfad zum
    MySQL Socket angegeben werden.

    Standardeinstellung: \texttt{PHP\_EXT\_MYSQL\_SOCKET='/run/mysql/mysql.sock'}
}


\config{PHP\_EXT\_MYSQL\_HOST}
{PHP\_EXT\_MYSQL\_HOST}
{PHPEXTMYSQLHOST}
{
    Hier kann die IP-Adresse oder der Hostname eines lokalen (127.0.0.1)
    oder externen MySQL Servers eingetragen werden.

    Standardeinstellung: \texttt{PHP\_EXT\_MYSQL\_HOST='{}'}
}


\config{PHP\_EXT\_MYSQL\_PORT}
{PHP\_EXT\_MYSQ\_PORT}
{PHPEXTMYSQLPORT}
{
    Hier kann ein Port des lokalen oder externen MySQL-Server f"ur
    die Verbindung angegeben werden.

    Standardeinstellung: \texttt{PHP\_EXT\_MYSQL\_PORT='3306'}
}

\config{PHP\_EXT\_MSSQL}
{PHP\_EXT\_MSSQL}
{PHPEXTMSSQL}
{
    Hier kann die MSSQL Erweiterung in PHP aktiviert werden.

    Standardeinstellung: \texttt{PHP\_EXT\_MSSQL='no'}
}


\config{PHP\_EXT\_PGSQL}
{PHP\_EXT\_PGSQL}
{PHPEXTPGSQL}
{
    Hier kann die PostgreSQL Erweiterung in PHP aktiviert werden.

    Standardeinstellung: \texttt{PHP\_EXT\_PGSQL='no'}
}


\config{PHP\_EXT\_INTER}
{PHP\_EXT\_INTER}
{PHPEXTINTER}
{
    Hier kann die Interbase Erweiterung in PHP aktiviert werden.

    Standardeinstellung: \texttt{PHP\_EXT\_INTER='no'}
}


\config{PHP\_EXT\_SQLITE3}
{PHP\_EXT\_SQLITE3}
{PHPEXTSQLITE3}
{
    Hier kann die SQLite3 Erweiterung in PHP aktiviert werden.

    Standardeinstellung: \texttt{PHP\_EXT\_SQLITE3='no'}
}

\end{description}
