PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : deutsche Howtos



RH-Loki
20-01-2002, 14:54
Hi Leutz!
Ich möchte mal etwas in PHP reinschnuppern. Habe die PHP4 Pakete per yast 2 installiert. Muß ich jetzt noch irgendwelche Einträge in der httpd.conf oder srm.conf machen? Oder läuft das bei Suse 7.3 schon automatisch? Habe zwar einige Anfängerbeschreigungen Gefunden aber eigentlich nur über PHP3. Wahrscheinlich sehe ich vor lauter Bäumen den Wald nicht mehr. Könntet ihr mir bitte etwas helfen?

THX Loki :)

SirVival
20-01-2002, 15:20
erstell am besten im document root vom apache mal die file phpinfo.php mit folgendem inhalt



<?
phpinfo();
?>



damit solltest du erstmal festellen können, ob php läuft.

Der Webserver gibt dann einige Infos über sich aus.
und PHP Tut's gibts hier

www.dynamic-webpages.de

laubi
20-01-2002, 17:52
Hallo Ihr,

ich stehe im Moment vor den gleichen Problem. Erfahrungen hab ich in PHP (hab schon viel selbst programmiert), allerdings immer nur direkt auf dem Server meines Providers im Netz.

Jetzt moechte ich das selbst daheim laufen lassen und habe ( wie RH-Loki) einfach das Paket fuer php und MySQL installiert. Allerdings funktioniert keine PHP-Seite. Vielleicht muss ich doch irgendwo noch etwas aktivieren. In der rc.config habe ich eingestellt, dass der MySQL-Server automatisch gestartet wird. Aber mit phpMyAdmin komme ich ja nicht drauf, weil PHP irgendwie nicht laeuft (logisch).

Was mache ich falsch, kann doch nur eine Kleinigkeit sein, oder?

JoelH
21-01-2002, 06:15
läuft denn der Webserver überhaupt ?
Naja schau mal in der httpd.conf ob .php einkommentiert ist. Also da muss irgendwas mit x-application oder so stehen und dann weiter was mit php, das muss einkommentiert sein,
schau mal da , Kapitel 2
http://www.php.net/manual/de/installation.php

laubi
26-01-2002, 07:05
Hallo Ihr,

der Apache-Server laeuft. Mit ps -ef | grep apache gekomme ich eine
positive Rueckmeldung (username 1459 0 06:46 pst/1 00:00:00 grep
apache).

In der Konfiguration mit YAST2 finde ich auch den Eintrag
"HTTPD_SEC_MOD_PHP" auf "YES".

Auch direkt in der Datei steht kein PHP-Eintrag auskommentiert:

# Protect the php3 test page, so it cannot be viewed from an outside
system.
#
<Files test.php3>
Order deny,allow
deny from all
allow from localhost
</Files>

...und...

# For example, the PHP 3.x module (not part of the Apache
distribution - see
# http://www.php.net) will typically use:
#
<IfModule mod_php3.c>
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
AddType application/x-httpd-php3 .phtml
</IfModule>
#
# And for PHP 4.x, use:
#
<IfModule mod_php4.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php4
AddType application/x-httpd-php-source .phps
</IfModule>

...und...

<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>


Weiss jetzt eigentlich nichtmehr, wo ich suchen soll. Vielleicht habt Ihr
noch eine Idee - waere prima.

MfG

Laubi

Furzeimer
26-01-2002, 21:06
Hi,

ich habe genau das selbe Problem.
Er will die PHP Files einfach nicht ausführen.

Help!!!

Bis denne

Furzeimer

citizen428
29-01-2002, 13:03
Original geschrieben von Furzeimer
ich habe genau das selbe Problem.
Er will die PHP Files einfach nicht ausführen.


Was genau passiert denn? Bietet er sie dír nur zum Download an, oder kommt eine Fehlermeldung?

laubi
29-01-2002, 18:00
Es wird das file genauso behandelt, als ob es sich um ein *.html-File handelt - der PHP-Code wird einfach ignoriert!

Auch eine Fehlermeldung wird nicht erzeugt! Normalerweise kann es sich nur um eine Kleinigkeit handeln, aber welche?

:confused:



Habe gerade auch festgestellt, dass Beispielscripte unter file:/usr/local/httpd/htdocs (da soll z. B. text.php3 sein) nicht vorhanden sind - kann das vielleicht helfen? Ich bin wirklich jetzt schon alles zu diesem Thema auf der Suse-Homepage durchgegangen, kann aber nix finden.

Machen wir es dach mal anders: Woran erkenne ich, ob der Apache laeuft. Mein Befehl von oben ist doch richtig, oder? Auch in der Prozessueberwachung laeuft der Prozess httpd. Und welche Pakete muss ich installiert haben. Das Paket mod_php (auf das immer verwiesen wird), gibt es ja nichtmehr. Allerings gibt es vier mod_php4*-Module. Diese sind alle installiert.

Auch der MySQL-Serve ist installiert und wird per Einstellung in YAST automatisch beim Systemstart mit hoch gefahren. Der Prozess mysqld laeuft auch.

Hoffentlich helfen all diese Infos weiter.

emwe
29-01-2002, 18:39
Hallo.
Aehm... ich bin jetzt kein Experte, was den Apache angeht, aber gab es da nicht so einen Eintrag, wo man festlegen konnte, was und in welchem Verzeichnis überhaupt als script angesehen wird? Hab aber leider keine genaue Ahnung, wie die Direktive hieß -evtl. sucht ihr einfach mal nach '.cgi' oder so. Alternativ koennt ihr auch eure Skripts in den cgi-ordner packen und mit einer '.cgi'-Dateiendung versehen. Müßte dann eigentlich klappen...
Spass,
emwe

citizen428
29-01-2002, 19:39
Original geschrieben von laubi
Es wird das file genauso behandelt, als ob es sich um ein *.html-File handelt - der PHP-Code wird einfach ignoriert!


Und du lädst auch ganz sicher das php-Modul in der httpd.conf?

laubi
29-01-2002, 21:17
Ja, die Datei sieht genauso aus, wie ich sie oben beschrieben habe (mir ist selbst gerade aufgefallen, dass ich oben vergessen habe, den Dateinamen zu erwaehnen). Faellt Dir wohl nochwas auf, was oben fehlen koennt? Der Dateiinhalt stammt aus der Standardinstallation von SUSE Linux 7.2, die spaeter auf die Version 7.3 upgadatet wurde!

citizen428
30-01-2002, 09:29
Ich meinte eher eine Zeile wie "LoadModule php4_module libexec/libphp4.so" in der httpd.conf.

laubi
30-01-2002, 20:50
Nein, dieser Eintrag fehlt. Das PHP-Modul wird u. U. garnicht geladen?

Als dann, ran an den Speck! Ich habe mal gesucht und die Datei libphp4.so im Verzeichnis /usr/lib/apache/ gefunden. Anschliessend habe ich folgenden Eintrag in die Datei httpd.conf (nach den ganzen Auftrufen der Apache-Module wie z. B. expires_module oder usertrack_module geladen werden) eingefuegt:

LoadModule php4_module /usr/lib/apache/libphp4.so

Ein Erfolg hat sich jedoch nicht eingestellt. Muss ich vielleicht beim Eintrag in diese Datei noch etwas beachten?

Ich habe auch noch an zwei anderen Stellen Dateien mit dem Namen libphp4.so gefunden. Die eine liegt unter opt/aolserver/bin/ und die andere unter opt/jakarta/lib/! Muss ich vielleicht noch mit denen was anfangen?

citizen428
31-01-2002, 08:48
Original geschrieben von laubi
LoadModule php4_module /usr/lib/apache/libphp4.so

Ein Erfolg hat sich jedoch nicht eingestellt. Muss ich vielleicht beim Eintrag in diese Datei noch etwas beachten?


Den Apache hast du danach restartet? Ist vielleicht eine blöde Frage, aber sowas passiert hin und wieder mal...

laubi
31-01-2002, 09:57
Ich habe den ganzen Rechner neu gestartet - somit muesste ja der Apache auch neu gestartet sein. Muss ich den Apache-Server u. U. manuell durchstarten?

citizen428
31-01-2002, 10:21
Original geschrieben von laubi
Ich habe den ganzen Rechner neu gestartet - somit muesste ja der Apache auch neu gestartet sein. Muss ich den Apache-Server u. U. manuell durchstarten?

Nein, wenn du sowieso den Rechner rebootet hast (warum eigentlich?) wurde der Apache ja ohnehin neu gestartet.

Also: was genau passiert jetzt wenn du dir eine PHP-Seite auf dem Server ansehen willst? Hast du im DirectoryIndex angegeben daß auch index.php als Startseite gültig ist (nur für den Fall daß sie eventuell so heisst)? Schön langsam gehen mir die Ideen aus...

BTW: Welche Apache Version verwendest du eigentlich? IIRC musste man bei älteren Versionen Apache neu kompilieren wenn man ein Modul hinzugefügt hat (bin aber nicht sicher da ich meinen Server bequemerweise mit apt-get aufgesetzt hab und es da überhaupt keine Probleme gab :) ).

laubi
31-01-2002, 19:11
Erstmal vielen Dank, dass Du Dich so mit meinem Problem beschaeftigst!

Hier nochmal die Fakten. Ich habe jetzt gerade drei Dateien (mit den Dateinamen index.php, index.php3 und index.php4) mit folgendem Inhalt gemacht:


<html>
<head>
<title>Der Tietel</title>
</head>
<body>
<?
echo "Das ist der Text durch PHP!";
?>
<BR><BR>Das ist der html-Text!
</body>
</html>


Die Anzeige, die in Netscape dann rauskommt, sieht so aus:



Das ist der html-Text!


Der php-Code wird also voellig ignoriert.

Wo finde ich den DirectoryIndex???
...

Vielleicht habe ich ja auch ein Verstaendnisproblem. Gehen wir es mal der Reihe nach durch. Installiert habe
ich eigentlich nur die verschiedenen Pakete von der Suse-CD mit Yast2. Der PHP-Server (habe ich gelernt und
auch nachgesehen) ist schon von bei der Grundinstallation dabei.

Um zu pruefen, ob der Apache-Server laeuft, habe ich den Befehl ps -ef | grep apache eingegeben, der
folgende Meldung bringt:
username 2420 2406 0 18:58 pts/2 00:00:00 grep apache

Diese Meldung wuerde ich interpretieren, dass der Server laeuft, oder? Gibt es noch ein Administrationstool
fuer Apache, mit dem man verschiedene Sachen ueberpruefen kann. Im Moment muss ich halt einfach glauben,
dass das Ding laeuft.

Genauso ist es bei PHP. Ich sehe nirgends, ob dieser Prozess laeuft. Kann ich dies irgendwie nachpruefen?

Ich denke, irgendwo da muss der Fehler - den ich mache - liegen. Komisch ist auch, dass der Eintrag
LoadModule php4_module /usr/lib/apache/libphp4.so in der Datei httpd.conf fehlt, oder? Da muss doch noch
irgendein Packet fehlen, was noch nicht installiert ist...

Vielleicht faellt Dir doch noch etwas ein, ware wirklich prima!

Cu

Laubi

citizen428
01-02-2002, 10:06
Original geschrieben von laubi
1. Erstmal vielen Dank, dass Du Dich so mit meinem Problem beschaeftigst!

2. Der PHP-Server (habe ich gelernt und
auch nachgesehen) ist schon von bei der Grundinstallation dabei.

3. Gibt es noch ein Administrationstool fuer Apache, mit dem man verschiedene Sachen ueberpruefen kann.

4. Genauso ist es bei PHP. Ich sehe nirgends, ob dieser Prozess laeuft. Kann ich dies irgendwie nachpruefen?

5. Vielleicht faellt Dir doch noch etwas ein, ware wirklich prima!


ad 1. Kein Problem, ich hab bei meinem ersten Webserver auch ziemlich gekämpft (SuSE) der zweite ging dann schon weit besser, war allerdings auch Debian.

ad 2. Naja, PHP ist eigentlich kein Server. PHP (PHP: Hypertext Preprocessor) ist ein Interpreter. Wenn der Webserver eine Anfrage erhält die PHP Code enthält wird eben jener aufgerufen um den Code zu interpretieren und das Ergebnis wieder an den Apache zurück zu liefern.

ad 3. apachectl configtest überprüft ob deine Konfigdateien richtig sind, apachectl status respektive fullstatus gibt dir sofern lynx installiert ist auch eine Menge Information.

ad 4. PHP läuft nicht als Prozess, es wird einfach bei Bedarf vom Webserver dazu aufgefordert die Seiten zu interpretieren.

ad 5. Ja, poste bitte die Ausgaben von ps aux|grep apache und find / -name libphp4.so.

Wir kriegen das schon hin! :)

citizen428

laubi
03-02-2002, 12:00
Hallo,

ich stell mich an! Ist natuerlich klar, dass der Apache der Webserver ist und PHP dort ausgefuehrt wird. Hier aber die Meldungen, die Linux auswirft:

apachectl configtest gibt die Meldung: Syntax OK zurueck

apachectl status (oder fullstatus) bringt folgende Meldung zurueck:
Not Found

The requested URL /server-status was not found on this server
----------------------------------------------------------------------------
Apache/1.3.20 Server at work1.home.nil Port 80

ps aux|grep apache bringt folgende Zeile:

root 2859 0.0 0.2 1800 744 pts/1 R 11:54 0:00 grep apache

und schliesslich bringt find / -name libphp4.so die Position von libphp4.so an folgenden Stellen:
/usr/lib/apache/libphp4.so
/opt/jakarta/lib/libphp4.so
/opt/aolserver/bin/libphp4.so

Hoffentlich helfen uns die Info!!

Cu

Laubi

Pingu
03-02-2002, 12:13
Hi,

dein Ausgabe von ps zeigt doch, daß Apache gar nicht gestartet ist:

apachectl start


Warum er keinen Status anzeigt, er zählt er auch:

/server-status not found

Da ist wohl der entsprechende Abschnitt in der /etc/apache/httpd.conf auskommentiert.

Gruß

-= Pingu =-

citizen428
03-02-2002, 13:05
Original geschrieben von laubi


ps aux|grep apache bringt folgende Zeile:

root 2859 0.0 0.2 1800 744 pts/1 R 11:54 0:00 grep apache
[/B]

Genau wie Pingu schreibt, besagt diese Zeile daß der einzige Prozess in dem Apache vorkommt, das grep mit apache als Suchbegriff ist. Also: Server starten!

laubi
04-02-2002, 07:21
Hallo Ihr,

kaum zu glauben, jetzt klappt es. Der Fehler lag aber wo anders. Auch auf die Gefahr hin, dass ich jetzt ausgelacht werde (aber vielleicht begreift ein anderer genauso wenig wie ich), hier mein Fehler:

Ich habe die PHP-Dateien natuerlich in meinem Homeverzeichnis erstellt und dort getestet. Selbstverstaendlich muss ich die auf den lokalen Webserver (/usr/local/httpd/htdocs/) erst schieben, und dann dort ansehen! Ist ja eigentlich logisch, aber scheinbar war ich von html (wo das "ausfuehren" im Homeverzeichnis natuerlich geht) so fixiert, dass ich soweit nicht gedacht habe. Das neu starten des Webservers hat die Meldung bewirkt, dass der Server schon gestartet ist!

Drauf gekommen bin ich erst, als ich im Konquator die URL "http://localhost/" eingegeben habe und die Startseite des Apaches zu gesicht bekam. Kurios: Das hatte ich vorher schon mit dem Netscape 6.1 versucht, dort blieb der Bildschirm weiss, woran kann das liegen???

Nunja, jetzt blicke ich zumindest soweit durch und taste mich weiter vor.

Noch eine Kleine Frage: Wie gehe ich normalerweise vor? Ich entwickle die Seiten natuerlich weiter in meinem Homeverzeichnis uns schiebe sie auf den Webserver. Muss ich die Rechte auf dem Webserver noch irgendwie aendern (z. Z. hat nur root Zugriff), wenn ich als "normaler User" Datein dahin schiebe? Oder muss ich das FTP-Programm einfach als root ausfuehren - kann doch aber eigentlich auch nicht sein, oder?

Als dann, nochmal vielen dank fuer Eure Hilfe. Hat ziemlich lange gedauert, aber jetzt mache ich diesen Fehler sicherlich nichtmehr! ;)

MfG

Laubi

citizen428
04-02-2002, 10:14
Original geschrieben von laubi
ad 1. Der Fehler lag aber wo anders. Auch auf die Gefahr hin, dass ich jetzt ausgelacht werde

ad 2. Als dann, nochmal vielen dank fuer Eure Hilfe. Hat ziemlich lange gedauert, aber jetzt mache ich diesen Fehler sicherlich nichtmehr! ;)


ad 1. Warum auslachen? Fehler passieren jeden am Anfang, nur nicht entmutigen lassen!

ad 2. Nichts zu danken. Am Anfang wäre ich ohne die Hilfe anderer Leute (vor allem den HOWTO-Schreibern) auch oft nicht weitergekommen, ist doch selbstverständlich daß man das zurückgibt.

Viel Spass mit deinem Server,
citizen428