# apache2 - php4 - sehr seltsames problem

## batzee

Hallo Leute,

auf meinem Gentoo Webserver läuft bisher erfolgreich apache 1.3 und mod_php, alles funktioniert problemlos. Weil aber apache2 eigentlich unter Gentoo Standard ist und überall vorgesehen wird, wollte ich mal updaten auf apache 2.0.

Also habe ich apache2 zu den USE-Flags dazugeschrieben und "emerge apache php mod_php" gemacht, um auch das PHP-Modul neu mit Apache2-Unterstützung zu übersetzen.

Jetzt das PROBLEM: Apache2 macht bei PHP-Skripten irgendwie garnichts, weder wird der Quelltext ausgeliefert, noch die Skriptausgabe. Weder im access_log noch im error_log noch im Syslog wird ein Eintrag verzeichnet, wenn man ein PHP-Skript abruft.

Hier mal die per telnet abgegriffene Ausgabe des Apache bei einem PHP-Skript:

```

1 # telnet localhost 80

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

GET /cpg132/index.php HTTP/1.0

Connection closed by foreign host.

```

Wie man sieht gibt er einfach garnichts aus... beim apache 1.3 hat das immer geklappt?!?

Hat irgendwer eine Idee?

----------

## dalu

hmm kann es sein das du apache1 nicht deinstalliert hast davor?

hast du auch in der conf die richtigen aenderungen gemacht dann, auch an richtiger stelle? 

z.B. LoadModule mod_php4 mod_php4.so

ganz unten statt in den block wo die anderen LoadModule anweisungen sind

ach ne wartmal, welche php version ist jetzt drauf?

----------

## batzee

 *dalu wrote:*   

> hmm kann es sein das du apache1 nicht deinstalliert hast davor?

 

Das habe ich in der Tat nicht. Aber die beiden sollten sich doch eigentlich nicht in die Quere kommen? 

Ich habe auch keine Lust den Apache1 zu deinstallieren wenn der 2er auch nicht läuft, dann habe ich ja gar keinen Webserver mehr...

 *dalu wrote:*   

> 
> 
> hast du auch in der conf die richtigen aenderungen gemacht dann, auch an richtiger stelle? 
> 
> z.B. LoadModule mod_php4 mod_php4.so
> ...

 

Hmm, also die gesamte PHP-Konfiguration ist bei mir in ner Extra-Datei /etc/apache2/conf/modules.d/70_php_mod. Da sieht auch alles richtig aus. Das einzige was ich geändert habe ist die /etc/conf.d/apache2, da habe ich -D PHP4 reingeschrieben. Lösche ich diese Datei, so wird statt PHP auszuführen der Quelltext ausgeliefert. Soweit normal. Aber wenn ich diese Datei einbinde, dann liefert er NICHTS MEHR. Das kann doch nicht mit einer falschen Modulkonfiguration zusammenhängen? Dann würde ich denken dass wenigstens eine Fehlermeldung oder ein PHP-Quelltext kommt, aber der Server antwortet nicht mehr und schließt einfach unwillkürlich die Verbindung.

 *dalu wrote:*   

> 
> 
> ach ne wartmal, welche php version ist jetzt drauf?

 

Eine 4er, ich meine es ist 4.3.8. Die aus der stable halt

----------

## Dodga

ich glaube schon das sich beide Apache in die quere kommen, da beide standarmaessig port 80 belegen wollen. 

Ich weiss nicht ob das hilft aber ich würde folgendes probieren:

lege eine alias ipadresse and (/etc/conf.d/net)

im apache2 verwendest du diese alias ip adresse mit port 80

sollte rein theoretisch funktionieren

Wegen PHP im doppelbetrieb, ehrlich gesagt keine ahnung. Bei mir rennt apache 2 und php4 ohne probleme

Dodga

----------

## batzee

OK, jetzt sehe ich das Mißverständnis - ich habe zwar beide Apache-Versionen installiert, aber sie sollen natürlich nicht beide gleichzeitig laufen. Klar - sonst gibt es ein Problem mit dem doppelt belegten Port aber das ist es ja gar nicht. Wie gesagt, der Apache2 startet und liefert auch ohne Probleme html-Seiten. Nur bei PHP haperts eben.

Ich möchte nur, dass der Apache2 lauffähig ist bevor ich den Apache1 deinstalliere, sonst bringt mir das ganze ja nix.

----------

## Xylometer

Bist du Dir sicher das deine apache2.conf  auch Handler für php erwähnt

der Rest scheint ja richtig zu sein.   :Confused: 

----------

## moe

Wenn der Handler fehlt, sollte eigentlich der PHP-Quelltext angezeigt werden. Komische Sache..

Hast du verschiedene PHP-Seiten probiert, nich dass der Fehler im Skript selbst liegt.. Erstell doch einfach mal so eine Datei

```

<?

phpinfo();

?>

```

und rufe sie auf..

Und nur zur Sicherheit, wenn du eine nicht existierende Seite aufrufst, meldet sich auch wirklich der Apache2?

HTH Maurice

----------

## Xylometer

@moe:

Ja, du hast recht, ich hab Unfug erzählt   :Embarassed:  , die Handler sind beim zweier eh in einer Datei /etc/apache2/modules.d/70_mod_php.conf versteckt.

----------

## dalu

ich denke schon das es daran liegen kann das du apache1 nicht deinstalliert hast, ich habs noch nicht versucht a1+2 zusammen auf einem rechner zu haben, ich hab aber ein paarmal php per hand compiliert, da kann man einstellen ob pear die argh wie heists, apache irgendwas nutzen soll. evtl hat pear da was in der falschen hals bekommen und das modul fuer apache1 erstellt.

bei einer anderen "kisteninstallation" bei der ich das portage hab machen lassen, musste ich am ende die conf per hand aendern, obwohl am ende der conf ein include der php conf war

ergaenzung zu moe, 

# php

<?php

phpinfo();

?>

(strg+d)

kommt da nen segmentation fault evtl?

----------

## mdoering

Hi! At the end of my emerge I did read:

```
>>> original instance of package unmerged safely.

 * To have Apache run php programs, please do the following:

 * Edit /etc/conf.d/apache2 and add "-D PHP5" to APACHE2_OPTS

 * This is a change from the old "-D PHP4"!

 * Caching service dependencies...

>>> dev-php/mod_php-5.0.1 merged.
```

Maybe, you have to change something here too?[/code][/b]

----------

## Dodga

hast du auch sicher PHP eingeschalten?

in  /etc/conf.d/apache2 

APACHE2_OPTS="-D SSL -D PHP4"

Dodga

----------

## batzee

ja, hab ich alles, hat alles nichts gebracht  :Sad: 

Ich hab jetzt sogar mal testweise alles deinstalliert (apache1, apache2, php, mod_php, mod_ssl) und apache2, php und mod_php neukompiliert, ohne erfolg

habe den thread jetzt auch im englischsprachigen forum aufgemacht:

https://forums.gentoo.org/viewtopic.php?p=1560699

----------

## batzee

 *Quote:*   

> 
> 
> # php
> 
> <?php
> ...

 

Ne, das geht wunderbar. Allerdings muss ich 2x Strg-D drücken bevor er mir glaubt dass die Datei zuende ist

----------

## batzee

Das hier ist die Meldung die ich beim Abrufen einer nichtexistierenden Seite bekomme:

Not Found

The requested URL /cpg132/thumbnails.pjhg was not found on this server.

Apache/2.0.51 (Gentoo/Linux) Hardened-PHP/4.3.8 Server at voigt.in-berlin.de Port 80

----------

## Tuna

hast du deine php.ini für das apache2 modul editiert? lädst du vielleicht eventuell einige php extensions? solch einen fehler kann ich mir nur so erklären, dass php segfaulted, und deswegen einfach keinerlei ausgaben mehr schreiben kann. vielleicht einmal versuchen, den httpd prozess zu 'stracen'.

----------

## batzee

 *Tuna wrote:*   

>  vielleicht einmal versuchen, den httpd prozess zu 'stracen'.

 

danke für den Tipp!

nur welchen Prozess soll ich tracen? So siehts aus:

```

root     11256  0.0  1.6 23528 8600 ?        Ss   12:46   0:00 /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11258  0.0  1.1 22384 6092 ?        S    12:46   0:00  \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11439  0.0  1.6 78824 8744 ?        S    12:48   0:00  \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11440  0.0  1.6 78824 8744 ?        S    12:48   0:00      \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11442  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11443  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11444  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11445  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11446  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11447  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11448  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11449  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11450  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11451  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11452  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11453  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11454  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11455  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11456  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11457  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11458  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11459  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11460  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11461  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11462  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11463  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11464  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11465  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11466  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

apache   11467  0.0  1.6 78824 8744 ?        S    12:48   0:00          \_ /usr/sbin/apache2 -k start -D SSL -D PHP4

```

----------

## Tuna

tja da sis immer sone sache ;-) vielleicht den parent apache prozess. ansonsten versuchen in der apache.conf die threads auf einen zu limitieren. dann solltes einfacher werden.

----------

## batzee

Was mir gerade noch aufgefallen ist - nach dem Start von Apache sind zwei große Gruppen von Prozessen vorhanden, nach dem ersten PHP-Request stirbt eine von den beiden Gruppen weg. Was man oben sieht, ist nur noch das was nach einem PHP-Zugriff übrigbleibt, eigentlich gibt es noch viel mehr prozesse. So habe ich mal den, der immer stirbt, mit strace verfolgt:

```

# strace -p 11699

Process 11699 attached - interrupt to quit

read(4, 0xbffffbab, 1)                  = ? ERESTARTSYS (To be restarted)

--- SIGRT_1 (Unknown signal 33) @ 0 (0) ---

waitpid(11703, NULL, __WCLONE)          = 11703

exit_group(1)                           = ?

Process 11699 detached

```

Was sagt mir das jetzt?? ich habe keinen Schimmer :-/

----------

