<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/install.unix.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'install.unix.apache2.php',
    1 => 'Apache 2.x auf Unixsystemen',
    2 => 'Apache 2.x auf Unixsystemen',
  ),
  'up' => 
  array (
    0 => 'install.unix.php',
    1 => 'Installation auf Unix-Systemen',
  ),
  'prev' => 
  array (
    0 => 'install.unix.commandline.php',
    1 => 'CGI und Kommandozeilen Setups',
  ),
  'next' => 
  array (
    0 => 'install.unix.nginx.php',
    1 => 'Nginx 1.4.x auf Unix-Systemen',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'install/unix/apache2.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="install.unix.apache2" class="sect1">
 <h2 class="title">Apache 2.x auf Unixsystemen</h2>
 <p class="para">
  Dieser Abschnitt enthält Hinweise und Tipps, die sich auf die Installation
  von PHP speziell für Apache 2.x auf Unixsystemen beziehen.
 </p>

 <div class="warning"><strong class="warning">Warnung</strong><p class="para">Wir empfehlen, in einer
Produktionsumgebung kein Threaded MPM mit Apache2 zu verwenden. Verwenden Sie
stattdessen das Prefork MPM, welches der Standard-MPM für Apace 2.0 und 2.2 ist.
Für weitere Informationen und die Gründe lesen Sie bitte den entsprechenden
FAQ-Eintrag über die Verwendung von
<a href="faq.installation.php#faq.installation.apache2" class="link">Apache2 mit Threaded MPM.</a></p></div>

 <p class="para">
  Die <a href="http://httpd.apache.org/docs/current/" class="link external">&raquo;&nbsp;Apache Dokumentation</a> ist
  die maßgebliche Informationsquelle für den Apache 2.x Server. Dort können
  weitere Informationen über Installationsoptionen für Apache gefunden
  werden.
 </p>

 <p class="para">
  Die aktuellste Version des Apache HTTP Servers kann von der
  <a href="http://httpd.apache.org/" class="link external">&raquo;&nbsp;Apache Download Site</a> bezogen werden,
  und eine passende PHP-Version von den oben angegebenen Quellen.
  Dieser Schnelleinstieg behandelt nur die Grundlagen, um mit Apache 2.x und
  PHP einzusteigen. Für mehr Informationen lesen Sie bitte die
  <a href="http://httpd.apache.org/docs/current/" class="link external">&raquo;&nbsp;Apache-Dokumentation</a>.
  Versionsnummern wurden hier ausgelassen, um sicherzustellen, dass die
  Anweisungen nicht inkorrekt sind. In den folgenden Beispielen sollte &#039;NN&#039;
  durch die spezifische Version des verwendeten Apache ersetzt werden.
 </p>

 <p class="para">
  Es gibt aktuell zwei Versionen von Apache 2.x: 2.4 und 2.2. Obwohl es
  verschiedene Gründe gibt, sich für eine zu entscheiden, ist 2.4 die
  aktuellste Version, und diejenige, die empfohlen wird, wenn sie diese
  Möglichkeit haben. Allerdings funktionieren die folgenden Anweisungen
  sowohl für 2.4 als auch 2.2. Es ist zu beachten, dass Apache httpd 2.2
  offiziell das Lebensende erreicht hat, so dass keine Weiterentwicklungen oder
  Fehlerkorrekturen mehr erfolgen werden.
 </p>

 <ol type="1">
  <li class="listitem">
   <p class="para">
    Beziehen Sie den Apache HTTP Server vom oben genannten Ort,
    und entpacken Sie ihn:
   </p>
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
tar -xzf httpd-2.x.NN.tar.gz
</pre></div>
    </div>
   </div>
  </li>
  <li class="listitem">
   <p class="para">
    Beziehen und entpacken Sie die PHP-Quellen gleichermaßen:
   </p>
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
tar -xzf php-NN.tar.gz
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Kompilieren und installieren Sie Apache. Entnehmen Sie der
    Apache-Installationsdokumentation weitere Details zur Kompilierung.
   </p>
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cd httpd-2_x_NN
./configure --enable-so
make
make install
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Nun steht Ihnen Apache 2.x.NN unter /usr/local/apache2 zur Verfügung,
    konfiguriert mit Unterstützung für nachladbare Module und dem
    Standard MPM Prefork. Um diese Installation zu testen, verwenden Sie die
    übliche Prozedur, den Apacheserver zu starten, also z. B.:
    <div class="informalexample">
     <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/apache2/bin/apachectl start
</pre></div>
     </div>
    </div>
    Stoppen Sie nun den Server, um mit der Konfiguration von PHP fortzufahren:
    <div class="informalexample">
     <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/apache2/bin/apachectl stop
</pre></div>
     </div>
    </div>
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Konfigurieren und kompilieren Sie nun Ihr PHP. Dies ist die Stelle, an der
    Sie Ihr PHP mit verschiedenen Optionen, wie etwa installierten
    Erweiterungen, anpassen können. Rufen Sie
    <strong class="command">./configure --help</strong> auf, um eine Liste der verfügbaren
    Optionen zu erhalten. In unserem Beispiel werden wir eine einfache
    Konfiguration mit Unterstützung für Apache 2 und MySQL erzeugen.
   </p>
   <p class="para">
    Wenn Sie Apache aus den Quelltexten kompiliert haben, wie oben beschrieben
    wurde, dann stimmt im folgenden Beispiel der Pfad von
    <strong class="command">apxs</strong>, aber wenn Sie Apache auf andere Weise installiert
    haben, müssen Sie den Pfad von <strong class="command">apxs</strong> entsprechend
    anpassen. Es ist zu beachten, dass einige Distros möglicherweise
    <strong class="command">apxs</strong> zu <strong class="command">apxs2</strong> umbenennen.
   </p>
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cd ../php-NN
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql
make
make install
</pre></div>
    </div>
   </div>
   <p class="para">
    Wenn Sie sich entscheiden, Ihre Konfigurationsoptionen nach der
    Installation zu ändern, müssen Sie die Schritte
    <strong class="command">configure</strong>, <strong class="command">make</strong>, und
    <strong class="command">make install</strong> erneut ausführen.
    Um das neue Modul nutzen zu können, muss Apache nur neu gestartet werden.
    Eine erneute Kompilierung des Apache ist nicht nötig.
   </p>
   <p class="para">
    Beachten Sie, dass, wenn nicht anders erwähnt,
    <strong class="command">make install</strong> ebenso PEAR und verschiedene PHP-Werkzeuge
    wie <a href="install.pecl.phpize.php" class="link">phpize</a>, PHP CLI und anderes
    installieren wird.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Ihre <var class="filename">php.ini</var> einrichten
   </p>
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cp php.ini-development /usr/local/lib/php.ini
</pre></div>
    </div>
   </div>
   <p class="para">
    Sie können Ihre <code class="literal">.ini</code>-Datei ändern, um verschiedene
    PHP-Optionen zu setzen. Wenn Sie die <var class="filename">php.ini</var>-Datei
    an einer anderen Stelle bevorzugen, verwenden Sie
    <code class="literal">--with-config-file-path=/some/path</code> in Schritt 5.
   </p>
   <p class="para">
    Wenn Sie sich stattdessen für <var class="filename">php.ini-production</var>
    entscheiden, stellen Sie sicher, dass Sie die darin enthaltene Liste von
    Änderungen lesen, da diese das Verhalten von PHP beeinflussen.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Bearbeiten Sie Ihre <var class="filename">httpd.conf</var>, um das PHP Modul zu
    laden. Der Pfad auf der rechten Seite der Anweisung
    <code class="literal">LoadModule</code> muss auf den Ort des PHP-Moduls auf Ihrem
    System zeigen. Das obige <strong class="command">make install</strong> könnte dies
    bereits für Sie hinzugefügt haben, aber Stellen Sie sicher, dass dies der
    Fall ist.
   </p>
   <div class="informalexample">
    <p class="para">
     Für PHP 8:
    </p>
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">LoadModule php_module modules/libphp.so</pre>
</div>
    </div>

   </div>

   <div class="informalexample">
    <p class="para">
     Für PHP 7:
    </p>
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">LoadModule php7_module modules/libphp7.so</pre>
</div>
    </div>

   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Weisen Sie Apache an, bestimmte Dateiendungen als PHP Skripte zu behandeln.
    Zum Beispiel werden wir den Apache Dateien mit der Endung
    <code class="literal">.php</code> als PHP ausführen lassen. Anstatt nur die
    Apache-Direktive <code class="literal">AddType</code> zu verwenden, wollen wir
    zusätzlich verhindern, dass potentiell gefährliche hochgeladene und
    erzeugte Dateien wie <var class="filename">exploit.php.jpg</var> als PHP-Dateien
    ausgeführt werden. Wenn Sie dieses Beispiel verwenden, können Sie jede
    Dateiendung als PHP interpretieren lassen, wenn Sie sie einfach hinzufügen.
    Wir demonstrieren dies, indem wir <code class="literal">.php</code> einfügen.
   </p>
   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">&lt;FilesMatch \.php$&gt;
    SetHandler application/x-httpd-php
&lt;/FilesMatch&gt;</pre>
</div>
    </div>

   </div>
   <p class="para">
    Oder wenn wir erlauben wollen, dass nur Dateien mit den Endungen
    <code class="literal">.php</code>, <code class="literal">.php2</code>, <code class="literal">.php3</code>,
    <code class="literal">.php4</code>, <code class="literal">.php5</code>, <code class="literal">.php6</code>
    und <code class="literal">.phtml</code> als PHP interpretiert werden können, verwenden
    wir ein Statement wie dieses:
   </p>
   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">&lt;FilesMatch &quot;\.ph(p[2-6]?|tml)$&quot;&gt;
    SetHandler application/x-httpd-php
&lt;/FilesMatch&gt;</pre>
</div>
    </div>

   </div>
   <p class="para">
    Und um zu erlauben, dass <code class="literal">.phps</code>-Dateien vom PHP
    Source-Filter verarbeitet und als Quellcode mit Syntax-Highlighting
    angezeigt werden, verwenden Sie:
   </p>
   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">&lt;FilesMatch &quot;\.phps$&quot;&gt;
    SetHandler application/x-httpd-php-source
&lt;/FilesMatch&gt;</pre>
</div>
    </div>

   </div>
   <p class="para">
    <code class="literal">mod_rewrite</code> kann verwendet werden, um zu erlauben, dass
    jede beliebige <code class="literal">.php</code>-Datei als Quellcode mit
    Syntax-Highlighting angezeigt wird, ohne dass Sie die Datei zu
    <code class="literal">.phps</code> umbenennen oder kopieren müssen:
   </p>
   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">RewriteEngine On
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]</pre>
</div>
    </div>

   </div>
   <p class="para">
    Der PHP-Source-Filter sollte auf Produktionssystemen nicht aktiviert werden,
    da er vertrauliche oder anderweitig sensible Informationen, die im Quellcode
    enthalten sind, preisgeben könnte.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Verwenden Sie die übliche Prozedur, um den Apache-Server zu starten, z. B.:
   </p>
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/apache2/bin/apachectl start
</pre></div>
    </div>
   </div>

   <p class="para">ODER</p>
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
service httpd restart
</pre></div>
    </div>
   </div>
  </li>
 </ol>

 <p class="para">
  Wenn Sie den obigen Anweisungen folgen, werden Sie einen laufenden
  Apache2 mit Unterstützung für PHP als <code class="literal">SAPI</code>-Modul
  erhalten. Natürlich existieren für Apache und PHP viele weitere
  Konfigurationseinstellungen. Verwenden Sie
  <strong class="command">./configure --help</strong> im jeweiligen Quellcodeverzeichnis,
  um weitere Informationen zu erhalten.
 </p>
 <p class="para">
  Apache2 kann multithreaded kompiliert werden, indem das
  <var class="filename">worker</var>-MPM anstatt des standardmäßigen
  <var class="filename">prefork</var>-MPM für den Build gewählt wird. Dies erfolgt,
  indem die folgende Option zu dem Argument, das weiter oben in Schritt 3 an
  <strong class="command">./configure</strong> übergeben wird, hinzugefügt wird:
 </p>
 <div class="informalexample">
  <div class="example-contents screen">
<div class="cdata"><pre>
--with-mpm=worker
</pre></div>
  </div>
 </div>
 <p class="para">
  Dies sollte nicht durchgeführt werden, ohne sich der Konsequenzen dieser
  Entscheidung bewusst zu sein, und zumindest eine angemesse Kenntnis der
  Implikationen zu haben. Die Apache-Dokumentation bezüglich der
  <a href="http://httpd.apache.org/docs/current/mpm.html" class="link external">&raquo;&nbsp;MPM-Module</a> erörtert MPMs sehr
  ausführlich.
 </p>
 <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
  <p class="para">
   Das <a href="faq.installation.php#faq.installation.apache.multiviews" class="link">Apache MultiViews FAQ</a>
   erörtert die Verwendung von Multiviews mit PHP.
  </p>
 </p></blockquote>
 <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
  <p class="para">
   Um eine Multithreaded-Version von Apache zu erzeugen, muss das Zielsystem
   Threads unterstützen. In diesem Fall sollte auch PHP mit der Zend Thread
   Safety (ZTS) kompiliert werden. Unter dieser Konfiguration sind nicht alle
   Erweiterungen verfügbar. Die empfohlene Einstellung ist es, Apache mit dem
   standardmäßigen <var class="filename">prefork</var>-MPM-Modul zu bauen.
  </p>
 </p></blockquote>
</div><?php manual_footer($setup); ?>