httpd-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marcus Reimann" <Marcus.Reim...@reimann-systemberatung.de>
Subject RE: php4 modul cgi mysql
Date Sat, 15 Jul 2006 17:56:51 GMT
Hallo Holm,

Du schreibst:

>ähm na logisch habe ich ne info.php zum testen im root des jeweiligen
>apache2 dirs liegen, bloss sehe ich in der Ausgabe leider nicht ob php
>als cgi oder als Modul geladen wird.
>
>Wo steht denn das dort ?

Wenn Du die Ausgabe von phpinfo() anschaust, findest Du im oberen Kopf
der Ausgabe die Zeile "Server API":
- die Angabe "Apache 2.0 Handler" bedeutet, PHP wurde als PHP-Modul
  aufgerufen (unter dem Apache 2.0 Webserver)
- die Angabe "CGI/FastCGI" bedeutet, PHP wurde als CGI aufgerufen
  und zwar in diesem Falle als FastCGI.


>>> Und dann verseth ich nicht wann php4 als Modul und wann als cgi
>>> benutzt wird ?
>>
>> Es wird dann als Modul benutzt wenn man seinem Apache gesagt hat das
>> er das Modul laden soll.... ansonsten ist ein Handler zu definieren
>> welcher     das Programm php (in seiner CGI Form) aufruft.
>>
>>
>> z.B Apache 1:
>> LoadModule php5_module        libexec/libphp5.so
>> AddModule mod_php5.c
>>
>> DirectoryIndex index.php index.php3 index.php4 index.htm index.html
>> AddType application/x-httpd-php .php .php4 .php3
>> AddType application/x-httpd-php-source .phps
>>
>>
>> Bei Apache2 entfaellt das AddModule.
>
>genau hier liegt mein Verständnisproblem. Ich hab php als Modul geladen.
>Es wird scheinbar auch benutzt.  Indem ich das hier aktiviere im
>jeweiligen vhost wird also php4 als cgi ausgeführt?
>
>AddType application/x-httpd-php .php .php4 .php3
>AddType application/x-httpd-php-source .phps

Nein, damit wird PHP4 nicht als CGI ausgeführt.

Die Erklärung ist ganz einfach, wenn Du Dir genau die Namen der
benutzten Direktiven anschaust und Dir die Logik des Apache-
Servers verinnerlichst:

- "LoadModule" weist den Apache Server an, ein Modul zu laden
  ("load" = lade, "Module" = Modul...).
  Wenn Du dies in deiner Konfiguration stehen hast, dann versucht
  der Apache-Server das Modul zu laden - ob es dann auch
  angesprochen wird, hängt von einer weiteren Direktive, nämlich
  "AddType" ab. Die Direktive "LoadModul" lädt und aktiviert
  erstmal nur das Modul.
  vgl. http://httpd.apache.org/docs/2.0/mod/mod_so.html#loadmodule

  Ob Du PHP als Modul laden möchtest oder nicht, hängt von Deinen
  Sicherheitsbedürfnissen und Deiner Serverumgebung ab (weiter-
  führende Stichworte hierzu sind: mehrere Benutzer auf einem
  Webserver (chroot, suExec, ...) und Zuteilung von Ressourcen
  zu einzelnen Virtualhosts (FastCGI), ...).

  Es läßt sich übrigens nur ein PHP-Modul in den Apache laden.
  Das bedeutet, wenn Du gerne mehrere PHP-Versionen benötigst
  (z.B. PHP4 und PHP5 gleichzeitig auf einem Server), dann kann nur
  eine dieser Versionen als Modul eingebunden werden - die andere
  PHP-Version mußt Du dann als CGI/FastCGI aufrufen.


- AddType = zusätzliche Direktive, die den Apache Server anweist,
  Dateien mit einer speziellen Extension (z.B. ".php") einem
  MIME-Typ (z.B. dem geladenen PHP-Modul) zuzuordnen.

  Beispiel:
  Die Anweisung
  AddType application/x-httpd-php .php .php4 .php3
  weist den Apache an, alle Aufrufe mit dem Kürzel ".php" dem
  (vorher mit LoadModule geladenem) Apache-Modul zuzuordnen.

  vgl. http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addtype


- "AddHandler" zusammen mit "Action" weist den Apache Server
  dagegen an, bei einem Aufruf einer Datei mit einer gewissen
  Extension (z.B. ".php5" oder ".cgi") diesen Aufruf an einen
  speziellen Handler zu übergeben (AddHandler).
  Die Aktion, die beim Auftreten dieses Handlers ausgeführt
  wird, ist im Fall von PHP-CGI der PHP-Interpreter oder FastCGI.

  Mit "AddHandler" und "Action" kannst Du also dafür sorgen, dass
  der PHP-Interpreter als CGI (oder FastCGI) aufgerufen wird.

  vgl. http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addhandler
  und http://httpd.apache.org/docs/2.0/mod/mod_actions.html#action


Mit Hilfe dieser Direktiven kannst Du also sowohl PHP als Modul
als auch PHP als CGI aufrufen - es kommt nur darauf an, welche
Direktive Du letztendlich nutzt.

Viele Grüße
 Marcus Reimann
 M. Reimann Systemberatung
 http://www.reimann-systemberatung.de


--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Mime
View raw message