PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP 4 auf SuSE Linux 7.0



PhobosUT
16.08.02, 22:09
Da aus irgendeinem Grund PHP nicht mehr auf meinem Windows98 PC laufen will, möchte ich nun meine Web Seiten auf Linux entwickeln. Mit der Standart Installation von SuSE Linux 7.0 wird Apache 1.3.12 und PHP3 gleich mitinstalliert. Da aber meine momentane Webseite in PHP4 geschrieben ist, brauche ich PHP4 um weiter an ihr zu arbeiten. Da Apache problemlos läuft und ich ihn über meinen Windows PC per LAN erreiche, möchte ich dort vorest nichts verändern, auch wenn's nicht die neuste Version von Apache ist. Nur wie kann ich nun PHP4 installieren? Muss ich PHP3 erst deinstallieren (mit yast)?
Und wie läuft das dann mit der PHP4 Installation genau ab?

piet
17.08.02, 15:54
Alles ganz einfach,
zuerst PHP3 und Apache deinstallieren, danach die neuesten Versionen von Apache und PHP4 für SuSE 7.0 downloaden und nacheinander installieren. Dann müsste es schon funktionieren.
Downloaden kannst du es von dieser Seite:
http://www.suse.de/de/private/download/updates/70_i386.html

Pakete:
apache 1.3.19
mod_php4 4.0.4pl1

PhobosUT
18.08.02, 03:58
Super, danke!
Das ist genau das, was ich gesucht habe! :D

PhobosUT
18.08.02, 20:46
Hat leider nicht funktioniert.
Beim Start von Apache was bei SuSE Linux ja sowieso automatisch beim Hochfahren des Systems passiert kommt folgende Fehlermeldung:


Startting httpd [ SuSEHelp PHP4 ]

Syntax error on line 199 of /etc/httpd/httpd.conf:
Cannot load /usr/lib/apache/libphp4.so into server: libc-client.so: cannot open
shared object file: Datei oder Verzeichnis nicht gefunden

Zeile 199 in httpd.conf sieht so aus:

<IfDefine PHP4>
LoadModule php4_module /usr/lib/apache/libphp4.so
</IfDefine PHP4>

Die Datei libphp4.so ist in dem Verzeichnis libphp4.so vorhanden, daran kann's also nicht liegen.
Aber mit dem libc-client.so kann ich nichts anfangen. Ich hab' mal nach einer datei mit diesem Namen gesucht, aber nichts gefunden. Könnte es daran liegen?
Das was in der Support Datenbank von SuSE steht hab' ich schon ausprobiert, bringt nix :(

Ich hoffe ihr könnt mir helfen.

piet
19.08.02, 00:53
In der SuSE SDB steht, dass man das imap Paket installieren muss. Du hast gesagt, dass das nicht funktioniert, deshalb habe ich dir mal meine libc-client.so angeheftet.

libc.tgz auspacken nach /usr/lib

PhobosUT
19.08.02, 09:10
Danke werd's mal ausprobieren :)

piet
20.08.02, 17:11
hats funktioniert ?

PhobosUT
20.08.02, 18:30
Das ja, aber es fehlt wohl noch was anderes.

Wenn ich den Server jetzt starte kommt wieder die gleiche Meldung, diesmal aber mit der Datei libsnmp-0.4.2.3.so

Laut SuSE muss das Paket snmp und ucdsnmp Serie n installiert sein. Hab' ich gemacht, passiert aber immer noch das gleiche. Ich hab' mal das gesamte Dateisystem nach libsnmp* durchsucht. Gefunden wurden 2 libsnmp Dateien mit niedrigeren Versionsnummern.
Ich hab' mal einen Link namens libsnmp-0.4.2.3.so auf eine der Dateien zeigen lassen. Dann kam eine andere Fehlermeldung, dass irgendeine Funktion nicht gefunden wurde. Vermutlich ist die snmp Bibliothek zu alt un eine Funktion die PHP4 benötigt ist nicht enthalten.
Dann hab' ich mal mit google nach snmp gesucht. Gefunden hab' ich diese Seite: http://sourceforge.net/project/showfiles.php?group_id=12694
Dort habe ich dann ucd-snmp-4.2.3-1.i386.rpm 'runtergeladen. Kommt ja auch von der Versionsnummer ganz gut hin. Dann natürlich das Ding mit yast installieren -> Pakete einspielen -> Datei ausgewählt -> geht nicht. Vor dem installieren kommt diese Fehlermeldung:
Cant' get PREIN for /home/phobos/Downloads/ucd-snmp-4.2.3-1.i386.rpm

Was bedeuted das? Ist die Datei vielleicht kaputt? Wenn ja wo bekomm' ich die noch her? Denn ich denk' mal das Paket liefert die benötigte Datei.

PhobosUT
21.08.02, 10:27
Ich hab' noch eine weitere ucd-snmp-4.2.3-1.i386.rpm 'runtergeladen und die funktionierte sogar. Nach der Installation war in /usr/lib eine Datei namens libsnmp-0.4.2.3.so enthalten, also genau die Datei die gebraucht wird. Ich musste also noch nicht mal einen Link setzen.
Jetzt kommt aber gleich das nächste Problem :( Nun kommt folgende Fehlermeldung:

Cannot load /usr/lib/apache/libphp4.so into server: /usr/lib/libsnmp-0.4.2.3.so undefined symbol: EVP_DigestInit

Was bedeutet das nun wieder? Jetzt scheinen ja wohl alle Dateien/Bibiotheken da zu sein...

piet
21.08.02, 11:58
Bei soviel Abhängigkeiten hörts selbst bei mir auf. Vielleicht fährst du besser, wenn du den Apache und das php selbst kompiliert und die vorher installierten Paket wieder deinstallierst. Auf www.baach.de gibts ein Lamp Tutorial zur Installation, aber es gibt auch einfachere im Netz. Schau mal bei Google nach Lamp.

Jinto
21.08.02, 12:28
Mit welchem Kommando hast du den Apache und PHP installiert? Normalerweise meckert rpm schon bei der Installation über fehlende Abhängigkeiten.

Kann es evtl. sein, dass du noch eine alte httpd.conf verwendest?

PhobosUT
21.08.02, 17:55
Habe das PHP rpm per yast installiert. Das merkt eigentlich wenn irgendwelche Pakete fehlen. An der httpd.conf kann's eigentlich nicht liegen, da diese durch SuSEconfig generiert wird. Je nachdem welche Pakete installiert sind. Die Zeile zum Laden des PHP Modules wurde auch automatisch eigefügt, als ich das PHP rpm installiert hatte.
Ich werd' dann mal PHP4 wieder entfernen. Apache lasse ich vorerst noch. Dann versuche ich mal PHP4 selbst zu kompilieren und in den bestehenden Apache einzubinden.
Aber noch etwas: Ich hab' noch nie Software für Linux selbst kompiliert, weiß aber zumindest in der Theorie wie's geht. Was ich aber noch nirgendswo gelesesen habe ist, wie man diese Software wieder deinstallieren kann. Rauszufinden welche Dateien erstellt wurden und wo diese dann hingekommen sind, um sie anschließend per Hand zu löschen stelle ich mir ziemlich mühsam vor.

piet
21.08.02, 20:53
Was ich aber noch nirgendswo gelesesen habe ist, wie man diese Software wieder deinstallieren kann.

Nachdem du die Sourcen mit ./configure für dein System konfiguriert und mit make kompiliert hast , kannst du nachher mit einem einfachen checkinstall dir ein rpm Paket drausbasteln, welches auch gleich mitinstalliert wird. Das checkinstall ersetzt somit die Routine make install.
Die Deinstallation erfolgt dann, wie du es mit rpm Pakete gewohnt bist.

Das Programm checkinstall müsste sich auf deinen Distributions CDs befinden.

PhobosUT
21.08.02, 21:37
Ist ja genial! Danke! :D

PhobosUT
21.08.02, 22:20
So, hab' mir jetzt mal die Sourcen von PHP 4.2.2 geholt und entpackt. Dann das das configure Script ausgeführt und was sollte auch anderes kommen: Fehlermeldung! Das Script läuft ein bisschen, dann kommt:

checking lex output file root... ./configure: lex: command not found
configure: error: cannot find output from lex; giving up

Was soll das nun wieder?

Jinto
21.08.02, 22:40
Also ich hab das hier gerade mal nachvollzogen. Die libc-client findest du im imap Paket (diese Abhängigkeit zeigt yast dir an), danach brauchst du auch noch die postgres-lib (diese Abhängigkeit wird auch angezeigt).
Das libsnmp Modul benötigst du AFAIK nicht, und lässt sich evtl auf eine Fehlerhafte httpd.conf zurückführen. Solltest du die httpd.conf mal "von Hand" editiert haben (wie z.B. um den Fehler in Zeile 199 zu beheben) aktualisiert yast diese Datei nichtmehr. statt dessen erzeugt es eine neue httpd.conf.SuSE (o.ä.)

Ach ja, bei piet hat sich ein Fehler eingeschlichen compiliert wird nicht mit make install, sondern mit make bzw. make all

HTH

piet
21.08.02, 23:38
Du solltest auch die Suchfunktion im Forum nutzen nutzen, denn diese Probleme traten schon auf. ;)
http://www.linuxforen.de/forums/showthread.php?s=&threadid=36225&highlight=php+lex

flex installieren.

@ Jinto
Danke, ich habs in meinen vorherigen Post gleich noch richtiggestellt. Da kann man mal sehen wie schnell man Fehler macht. :D

PhobosUT
22.08.02, 08:54
Oh, sorry! Werd's mir merken, und danke!

@Jinto: Danke dass du dir so viel Mühe gemacht hast!

PhobosUT
22.08.02, 19:00
Juhuu!!! :D:D:D:D:D:D:D
Endlich hat's geklappt hab's jetzt selbst kompliliert und mit checkinstall installiert. An Apache musste ich auch nicht's mehr ändern.
Nochmals danke, danke, danke für eure kompetente Hilfe!!! Jetzt kann ich endlich an meiner Webseite weiterbasteln. Ich musste 5 Wochen Zwangspause machen, wegen großem Rechner Umbau, und weil PHP4 auf einmal nicht mehr auf Windows lief.

PhobosUT
22.08.02, 21:48
Schon wieder neues Problem :(

MySQL ist mittlerweile auch installiert, von der SuSE CD, kein Problem.

Es funktionieren einfach bestimmte MySQL-Queries nicht. Ich musste auf Linux umsteigen, weil nach einer Windows Neuinstallation PHP4 einfach nicht mehr auf Windows zum laufen zu bekommen war. Und meine Webseite, die ich vorher also unter Windows entwickelt habe und die da problemlos lief, die auch auf'm Webspace problemlos lief, produziert nur noch: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/local/httpd/htdocs/test.php on line 20

Deshalb hab' ich mal ein ganz einfaches Script geschrieben, nur um zu sehen, ob MySQL Queries überhaupt funktionieren.

Also erstmal stell' ich 'ne Verbindung zu MySQL her, gar kein Problem, $linkID ist auch nicht false.


$linkID = mysql_connect($host, $user, $password);
mysql_select_db($db, $linkID);

Die Variablen $host, $user, $password, $db wurden natürlich vorher mit den richtigen Werten gefüllt.

Als nächstes kommt die Query:


$query = "SELECT * FROM gb";
$result = mysql_query($query, $linkID);

Und hier geht's los: $result ist false. Obwohl in der Query kein Sysntaxfehler ist. Auch existiert gb 100%ig und ist 100%ig mit Daten gefüllt. Woher ich das weiß? Kommt gleich.

Nur so zum Spaß ändere ich $query ab:


$query = "SELECT NOW()";

Und? $result ist nicht false und das Ergebnis lässt nich problemlos ausgeben. Merkwürdig, Queries an die Datenbank funktionieren also, nur nicht das Holen von Daten aus einer Tabelle.

Nun, woher ich weiß, dass gb existiert und mit Daten gefüllt ist: Ich habe auf dem lokalen Webserver phpmyadmin installiert. Das Script zeigt alle Datenbanken wie's sein soll an. Auch gb. Nun gebe ich in das Textfeld für SQL Befehle folgendes ein:


SELECT * FROM gb; (Also das gleiche wie gerade)

Tja, es funktioniert. Das phpmyadmin zeigt alle Daten an, so wie's sein soll. Häää??? Wieso kann phpmyadmin das und mein Script nicht. Das macht doch im Endeffekt genau das gleiche. Also kann PHP Queries an MySQL schicken.

Woran kann das liegen. Meine Webseite läuft schließlich im Internet nur lokal nicht. Aber phpmyadmin läuft im Internet und lokal.

Jinto
22.08.02, 22:22
Als erstes bitte ich dich für neue Fragen einen neuen Thread zu starten.

Zweitens zu deiner Frage:
verwendest du denn für beide Abfragen auch den gleichen user?

PhobosUT
22.08.02, 22:27
OK, werd' ich nächstes mal machen.

In Bezug auf User wirst du wohl recht haben. Mir ist noch mysql_error() eingefallen und da ergab' sich was in der Richtung:
Ich kann die Datenbank nicht auswählen. Es sind 3 Datenbanken definiert: mysql (ist ja klar), test und die, die ich erstellt habe. test kann ich auswählen, aber nicht mysql und nicht meine eigene, die ich übrigens mit phpmyadmin erstellt habe. Sieht wohl so aus als hätte mein PHP Script nicht die Zugriffsrechte für die beiden Datenbanken. Unter Windows hatte ich alles ohne Passwort und ging auch. Deswegen hab' ich jetzt keine Ahnung wie ich die Zugriffsrechte ändere.
Könnt ihr mir mal kurz erklären, was ich jetzt machen muss.

P.S. Mit dem mySQL Monitor unter Linux kann ich alle Datenbanken auswählen, muss aber kein Passwort eingeben.

Jinto
22.08.02, 22:33
phpMyAdmin bietet dir eine Möglichkeit zum setzen der Tabellenrechte/Tabellenuser.

PhobosUT
22.08.02, 23:30
Danke! Werd' ich morgen mal ausprobieren. Ich hoffe, dass dann endlich alles läuft.

PhobosUT
23.08.02, 11:05
Es war tatsächlich ein Problem mit den Zugriffsrechten, dass sich aber jetzt erledigt hat. Nochmals danke für eure Hilfe.