• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Apache 2, PHP 5: PHP aus DocumentRoot ja, UserDir nein

bb1898

Newbie
Apache 2 und PHP 5 habe ich von der SuSE 9.3-Professional-DVD installiert und das PHP5-Modul in Apache aktiviert.

Apache läuft. Statische HTML-Seiten aus dem DocumentRoot- und aus dem UserDir-Verzeichnis (/home/xxx/public_html) werden richtig angezeigt. Ein PHP-Testskript, das in DocumentRoot liegt, wird richtig ausgeführt (mit "echo phpinfo()" als Inhalt).

Aber weder PHP-Skripte aus public_html noch CGI-Skripte aus public_html/cgi-bin werden ausgeführt. Entweder der Quelltext wird angezeigt oder es wird nachgefragt, ob die Datei angezeigt oder heruntergeladen werden soll.

Wo fehlt da welche Einstellung? Für die CGI-Skripte brauche ich vermutlich noch so etwas wie
<directory /home/*/public_html/cgi-bin/>
Options +ExecCGI
SetHandler cgi-script
</directory>

Aber für PHP? ExecCGI für public_html? Aber PHP läuft ja gerade nicht als CGI.

Ich habe gegoogelt mit "Apache php userdir", aber nur die gleiche Frage ohne eine Antwort gefunden (zumindest auf Deutsch oder Englisch). Und in der Dokumentation zu Apache und PHP finde ich auch nichts Passendes.

Zusatzfrage: SuSE empfiehlt ja, nicht in die httpd.conf zu schreiben, sondern eigene Include-Dateien anzulegen. Wo ist für die der beste Platz, gibt es dafür einen Standardort?

Nachträgliche Ergänzung:
Konqueror und Firefox verhalten sich unterschiedlich. Konqueror hat das PHP-Skript aus dem public_html-Verzeichnis immer ausgeführt (hatte ich nicht gleich probiert) und führt nach Einfügen einer Include-Datei in httpd.conf mit dem oben angegebenen Directory-Abschnitt auch die CGI-Skripte richtig aus. Aber Firefox tut nach wie vor keins von beiden. Sieht aus als müsste ich im Firefox etwas einstellen, aber was? Etwas Offensichtliches kann ich nicht finden.
 
OP
B

bb1898

Newbie
bb1898 schrieb:
Nachträgliche Ergänzung:
Konqueror und Firefox verhalten sich unterschiedlich. Konqueror hat das PHP-Skript aus dem public_html-Verzeichnis immer ausgeführt (hatte ich nicht gleich probiert) und führt nach Einfügen einer Include-Datei in httpd.conf mit dem oben angegebenen Directory-Abschnitt auch die CGI-Skripte richtig aus. Aber Firefox tut nach wie vor keins von beiden. Sieht aus als müsste ich im Firefox etwas einstellen, aber was? Etwas Offensichtliches kann ich nicht finden.
Es wird immer verrückter, je mehr ich experimentiere:

Konqueror führt meine PHP- und CGI-Skripte aus, egal, ob sie in /srv/www/-Unterverzeichnissen oder in public_html bzw. Unterverzeichnissen davon liegen.

Firefox führt alles aus, was in Unterverzeichnissen von /srv/www liegt und manches, aber nicht alles, was in public_html bzw. Unterverzeichnissen liegt. Welche Unterschiede in den Skripten dafür verantwortlich sind, bringe ich nicht heraus - die Skriptsprache scheint es nicht zu sein.

Es handelt sich dabei immer um die gleichen Skripten, die ich nur an einer Stelle schreibe bzw. ändere und dann an kopiere.

Ich begreife das nicht. Wären die Skripte fehlerhaft, könnte ich mir durchaus vorstellen, dass Konqueror und Firefox verschieden reagieren; aber warum hängt die Reaktion im Fall Firefox vom Standort des fehlerhaften Skripts ab?

Wäre Apache nicht richtig eingestellt, müssten m.E. Konqueror und Firefox gleich reagieren.

Wo liegt mein Denkfehler?
 

Dakuan

Hacker
Ich habe mir vor 3 Tagen ebenfalls Apache2 und PHP4 installiert und habe jetzt das gleiche Problem.
Bei mir sind es allerdings 2 PC's mit Ubuntu 5.04 die direkt nebeneinander stehen und über einen Router verbunden sind.

Bei mir werden die Dateien immer zum Download angeboten oder aber wie HTML Dateien ausgeliefert (Seite bleibt leer, aber wenn man sich den Quelltext anzeigen läßt wird der PHP Code angezeigt.
Bisher getestete Browser: Firefox und IE4.0.

Die Kommentarzeichen vor "AddType application ... php" in der apache2.conf habe ich entfernt, bisher blieb das aber ohne Wirkung.

Dakuan

Sorry. Hat sich erledigt. Nachdem ich einen Tippfehler gefunden hatte, habe ich die 3 Dateien mit den VirtualHost Daten komplett neu geschrieben und nun vertragen sich Apache2 und PHP4.
 
Oben