In diesem Abschnitt geht es um übliche Fragen zur Installation von PHP. PHP
   gibt es für fast jedes Betriebssystem und fast jeden Webserver.
  
  
    - 
     
      Warum sollte ich Apache2 mit threaded MPM nicht in einer
      Produktionsumgebung verwenden?
     
    
- 
     
      PHP ist Klebstoff. Es ist der Klebstoff, der verwendet wird, um coole
      Web-Anwendungen zu erstellen, indem er dutzende von Bibliotheken von
      Drittanbietern zusammenklebt und sie über eine intuitiv und einfach
      erlernbare Schnittstelle als zusammenhängende Einheit erscheinen lässt.
      Die Flexibilität und die Mächtigkeit von PHP sind auf die Stabilität und
      Robustheit der zugrunde liegenden Plattform angewiesen. Es braucht ein
      funktionierendes Betriebssystem, einen funktionierenden Webserver und
      funktionierende Bibliotheken Dritter, um zusammenzukleben. Wenn eines
      davon nicht mehr funktioniert, braucht PHP Wege, um die Probleme
      erkennen und schnell beheben zu können. Wenn Sie das zugrunde liegende
      Gerüst dadurch komplexer machen, dass Sie keine völlig voneinander
      getrennten Ausführungsthreads und Speichersegmente und keine starke
      Sandbox für jede einzelne Anfrage haben, lassen Sie weitere
      Schwachstellen ins System von PHP einfließen.
      
      Falls Sie threaded MPM benutzen wollen, sollten Sie nach einer
      FastCGI-Konfiguration schauen, in der PHP in seinem eigenen
      Speicherbereich läuft.
      
    - 
     
      Unix/Windows: Wo sollte sich meine php.ini befinden?
     
    
- 
     
      Unter Unix sollte sie standardmäßig in
      /usr/local/lib sein, was
      <install-path>/lib ist. Die Meisten werden
      das beim Übersetzen mit der Option
      --with-config-file-path
      ändern wollen. Sie können das z. B. mit
       --with-config-file-path=/etc 
--with-config-file-scan-dir=PATH 
      Unter Windows ist der standardmäßige Pfad für die php.ini das
      Windows-Verzeichnis. Falls die den Apache Webserver verwenden, wird die
      php.ini zuerst im Apache-Installationsverzeichnis, z. B.
      c:\program files\apache group\apache, gesucht.
      Dadurch können Sie auf demselben Rechner verschiedene php.ini-Dateien
      für verschiedene Apache-Versionen haben.
      
      Siehe auch das Kapitel über die
      Konfigurationsdatei.
      
    - 
     
      Unix: Ich habe PHP installiert, aber jedesmal, wenn ich eine Seite
      aufrufe, bekomme ich die Meldung 'Document Contains No Data'! Woran
      liegt das?
     
    
- 
     
      Das bedeutet wahrscheinlich, dass PHP irgend ein Problem hat und einen
      Core Dump (Speicherauszug) erzeugt. Schauen Sie in der Fehler-Logdatei
      Ihres Servers nach, ob das der Fall ist, und versuchen Sie dann, das
      Problem mit einem kleinen Test-Skript zu reproduzieren. Falls Sie sich
      mit 'gdb' auskennen, ist es für die Entwickler beim Lokalisieren des
      Problems sehr hilfreich, wenn Sie Ihrem Fehlerbericht einen Backtrace
      hinzufügen. Falls Sie PHP als Apache-Modul verwenden, können Sie in etwa
      Folgendes versuchen:
       
       - 
        
         Stoppen Sie Ihre httpd-Prozesse
         
- 
        
         gdb httpd
         
- 
        
         Stoppen Sie Ihre httpd-Prozesse
         
- 
        
         > run -X -f /pfad/zur/httpd.conf
         
- 
        
         Rufen Sie mit Ihrem Browser die URL auf, die das Problem verursacht
         
- 
        
         > run -X -f /path/to/httpd.conf
         
- 
        
         gdb sollte Sie jetzt darüber in Kenntnis setzen, falls Sie einen Core
         Dump bekommen
         
- 
        
         Geben Sie ein: bt
         
- 
        
         Sie sollten Ihren Backtrace in Ihren Fehlerbericht einfügen und
         diesen unter » https://github.com/php/php-src/issues
         abgeben.
         
 
      Falls Sie in Ihrem Skript Funktionen regulärer Ausdrücke
      (preg_match() und Freunde) verwenden, sollten Sie
      sicherstellen, dass Sie PHP und Apache mit demselben Programmpaket für
      reguläre Ausdrücke übersetzt haben. Mit PHP und Apache 1.3.x sollte das
      automatisch der Fall sein.
      
    - 
     
      Unix: Ich habe PHP mit RPM-Paketen installiert, aber Apache verarbeitet
      die PHP-Seiten nicht. Was ist da los?
     
    
- 
     
      Unter der Annahme, dass Sie sowohl Apache als auch PHP mit RPM-Paketen
      installiert haben, müssen Sie einige oder alle der folgenden Zeilen in
      die Datei httpd.conf einfügen oder die Kommentarzeichen davor
      entfernen:
       
# Extra Modules
AddModule mod_php.c
AddModule mod_perl.c
# Extra Modules
LoadModule php_module         modules/mod_php.so
LoadModule php5_module        modules/libphp5.so
LoadModule perl_module        modules/libperl.so 
 Und fügen Sie
AddType application/x-httpd-php .php 
 ... in die globalen Eigenschaften oder in die Eigenschaften der
      VirtualDomain, für die Sie PHP-Unterstützung benötigen, ein.
    - 
     
      Unix: Ich habe Apache mit dem FrontPage-Erweiterungs-Patch versehen und
      plötzlich funktioniert PHP nicht mehr. Ist PHP zur FrontPage-Erweiterung
      für Apache inkompatibel?
     
    
- 
     
      Nein, PHP funktioniert bestens mit der FrontPage-Erweiterung. Das
      Problem liegt darin, dass der FrontPage-Patch mehrere Apache-Strukturen
      verändert, auf die sich PHP verlässt. Eine Neuübersetzung von PHP
      (mittels 'make clean ; make'), nachdem der Patch angewandt wurde, löst
      das Problem.
      
    - 
     
      Unix/Windows: Ich habe PHP installiert, aber wenn ich versuche, mit
      meinem Browser ein PHP-Skript aufzurufen, erhalte ich eine leere Seite.
     
    
- 
     
      Wenn Sie sich im Browser den Quelltext der Seite anschauen, werden Sie
      vermutlich den Quellcode Ihres PHP-Skripts sehen können. Das bedeutet,
      dass der Webserver das Skript nicht zur Interpretation an PHP übergeben
      hat. Mit Ihrer Server-Konfiguration ist etwas nicht in Ordnung -
      überprüfen Sie Ihre Server-Konfiguration nochmal genau anhand der
      PHP-Installationsanleitung.
      
    - 
     
      Unix/Windows: Ich habe PHP installiert, aber wenn ich versuche, mit
      meinem Browser ein PHP-Skript aufzurufen, erhalte ich vom Server einen
      500 Fehler.
     
    
- 
     
      Beim Versuch des Servers PHP zu starten ist etwas schiefgegangen.
      Wechseln Sie auf der Kommandozeile (in der Eingabeaufforderung) in das
      Verzeichnis, das die ausführbare PHP-Datei (unter Windows
      php.exe) enthält und lassen Sie php
      -i laufen, um eine sinnvolle Fehlermeldung zu bekommen. Falls
      PHP irgendwelche Probleme bei der Ausführung hat, werden entsprechende
      Fehlermeldungen ausgegeben, die Ihnen Hinweise darauf liefern, was zu
      tun ist. Falls sich der Bildschirm mit HTML-Quelltext füllt (die Ausgabe
      der Funktion phpinfo()), funktioniert PHP und Ihr
      Problem könnte mit Ihrer Server-Konfiguration zusammenhängen, die Sie
      dann nochmal genau überprüfen sollten.
      
    - 
     
      Manche Betriebssysteme: Ich habe PHP ohne Fehlermeldungen installiert,
      aber wenn ich versuche, Apache zu starten, erhalte ich Fehler wegen
      undefinierter Symbole:
      [mybox:user /src/php5] root# apachectl configtest
 apachectl: /usr/local/apache/bin/httpd Undefined symbols:
  _compress
  _uncompress 
- 
     
      Das hat nichts mit PHP zu tun, sondern mit den
      MySQL-Client-Bibliotheken. Manche benötigen --with-zlib, manche nicht. Auf diese Frage
      wird in den MySQL-FAQ eingegangen.
      
    - 
     
      Windows: Ich habe PHP installiert, aber wenn ich versuche, mit meinem
      Browser ein PHP-Skript aufzurufen, erhalte ich die Fehlermeldung:
      
cgi error:
 The specified CGI application misbehaved by not
 returning a complete set of HTTP headers.
 The headers it did return are:
 
 
- 
     
      Diese Fehlermeldung bedeutet, dass PHP daran gescheitert ist, überhaupt
      irgendwas auszugeben. Wechseln Sie auf der Kommandozeile (in der
      Eingabeaufforderung) in das Verzeichnis, das die ausführbare PHP-Datei
      (unter Windows php.exe) enthält und lassen Sie
      php -i laufen, um eine sinnvolle Fehlermeldung zu
      bekommen. Falls PHP irgendwelche Probleme bei der Ausführung hat, werden
      entsprechende Fehlermeldungen ausgegeben, die Ihnen Hinweise darauf
      liefern, was zu tun ist. Falls sich der Bildschirm mit HTML-Quelltext
      füllt (die Ausgabe der Funktion phpinfo()),
      funktioniert PHP.
      
      Funktioniert PHP erst mal auf der Kommandozeile, versuchen Sie nochmal,
      das Skript mit dem Browser aufzurufen. Falls das immer noch misslingt,
      könnte das eine der folgenden Ursachen haben:
      
      - 
       
        Die Zugriffsberechtigungen Ihres PHP-Skripts, Ihrer
        php.exe, php5ts.dll,
        php.ini oder irgendeiner PHP-Erweiterung, die Sie versuchen zu
        laden, sind für den anonymen Internetbenutzer
        ISUR_<machinename>nicht ausreichend.
- 
       
        Die Skriptdatei existiert nicht (oder ist vielleicht, bezogen auf Ihr
        Web-Wurzelverzeichnis, nicht da, wo Sie denken). Beachten Sie, dass
        Sie beim IIS diesen Fehler aufspüren können, wenn Sie im Internet
        Services Manager beim Einstellen der script mappings die Option 'check
        file exists' ankreuzen. Falls dann eine Skriptdatei nicht existiert,
        gibt der Server stattdessen einen 404 Fehler zurück. Das hat außerdem
        den zusätzlichen Vorteil, dass der IIS die erforderlichen
        Authentisierungen an Ihrem Skript auf Grundlage der
        NTLanMan-Berechtigungen für Sie durchführt.
       
      
 
    - 
     
      Windows: Ich habe alle Anweisungen befolgt, aber ich erreiche keine
      Zusammenarbeit zwischen PHP und den IIS.
     
    
- 
     
      Stellen Sie sicher, dass jeder Benutzer, der ein PHP-Skript ausführt,
      die Berechtigung hat php.exe auzuführen! Der IIS
      verwendet den Benutzer anonymous, der bei der Installation des IIS
      hinzugefügt wird. Dieser Benutzer benötigt die entsprechenden
      Berechtigungen für php.exe. Außerdem benötigt auch
      jeder angemeldete Benutzer die Berechtigung,
      php.exe auszuführen. Dem IIS4 müssen Sie mitteilen,
      dass PHP eine Skript-Engine ist. Lesen Sie auch
      diese FAQ.
      
    - 
     
      Wenn Ich PHP mit IIS, PWS, OmniHTTPD oder Xitami als CGI laufen lasse,
      bekomme ich die folgende Fehlermeldung: Security Alert! PHP CGI
      cannot be accessed directly..
- 
     
      Sie müssen die 
      cgi.force_redirect-Anweisung auf 0setzen.
      Weil diese Anweisung standardmäßig auf1gesetzt ist,
      müssen Sie darauf achten, dass sie nicht mit einem;auskommentiert ist. Wie alle Anweisungen wird auch diese in der
      php.ini gesetzt.
 
      Wegen des standardmäßigen Werts von 1ist es äußerst
      wichtig sicherzustellen, dass die richtige php.ini gelesen wird. Lesen
      Sie für Einzelheiten
      diese FAQ.
 
    - 
     
      Wie kann ich herausfinden, ob meine php.ini gefunden und gelesen wird?
      Anscheinend ist das nicht der Fall, weil meine Änderungen nicht
      übernommen werden.
     
    
- 
     
      Rufen Sie phpinfo() auf, um zu überprüfen, ob Ihre
      php.ini von PHP gelesen wird. Fast ganz oben gibt es einen Punkt
      namens Configuration File (php.ini). Dort können Sie
      feststellen, wo PHP nach der php.ini sucht und ob sie gelesen wird
      oder nicht. Falls es dort nur einen VerzeichnisPFAD gibt,
      wird sie nicht gelesen und Sie sollten Ihre php.ini in dieses
      Verzeichnis legen. Falls der Pfad die php.ini beinhaltet, dann wird
      sie auch gelesen.
 
      Wenn Ihre php.ini gelesen wird und Sie PHP als Modul verwenden, müssen
      Sie Ihren Webserver neu starten, nachdem Sie Änderungen an der php.ini
      vorgenommen haben.
      
      Siehe auch php_ini_loaded_file().
      
    - 
     
      Wie mache ich unter Windows die Datei php.ini für PHP verfügbar?
     
    
- 
     
      Es gibt mehrere Möglichkeiten, das zu erreichen. Falls Sie Apache
      verwenden, sehen Sie in der Apache-Dokumentation nach, andernfalls
      müssen Sie die Umgebungsvariable PHPRC setzen.
      
    - 
     
      Ist es möglich, die Apache Content-Negotiation (MultiViews Option) mit
      PHP zu verwenden?
     
    
- 
     
      Falls Links zu PHP-Dateien die Erweiterung enthalten, funktioniert alles
      perfekt. Diese FAQ ist nur für den Fall, dass Links zu PHP-Dateien keine
      Erweiterung enthalten und Sie die Content-Negotiation verwenden wollen,
      um PHP-Dateien von einer URL ohne diese Erweiterung zu wählen. Ersetzen
      Sie in diesem Fall die Zeile AddType application/x-httpd-php
      .phpdurch:
 
AddHandler php5-script php
AddType text/html php 
 Diese Lösung funktioniert nicht mit Apache 1, da das PHP-Modul keinphp-Skripterfasst.
    - 
     
      Ist PHP auf die Bearbeitung von Anfragen mit der GET- und POST-Methode
      beschränkt?
     
    
- 
     
      Nein, es ist möglich, jede Anfragemethode zu bearbeiten, z. B. auch
      CONNECT. Ein korrekter Antwortstatus kann mit
      header() gesendet werden. Falls nur die Methoden GET
      und POST bearbeitet werden sollen, kann das mit dieser
      Apache-Konfiguration erreicht werden:
       
<LimitExcept GET POST>
Deny from all
</LimitExcept>