PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : prob mit apache bzw phpmayadmin



chrimp
06.10.03, 09:32
hallo

hab ein kleines prob mit meinem apache bzw php modul.
habe mandrake 9.1 und den apache 2.0 (inkl modulen).
bis jetzt lief alles gut, bis ich gezwungen war, die php.ini anzupassen.
habe die php.ini-dist in /etc kopiert und umbenannt in php.ini.
diese habe ich dann angepasst indem ich den safe mode = Off und register_globals = On gesetzt habe.
danach liefen mein php scripts optimal.
leider geht seitdem mein phpmyadmin nciht mehr und es kommt folgende fehlermeldung:
"die mysql erweiterung konnte nicht geladen werden.
bitte überprüfen sie ihre php konfiguration
dokumentation"

leoder konnte ich weder in der doku, noch in der php.ini.conf was passendes finden.
weiß jmd rat?
danke schonmal!

corresponder
06.10.03, 09:56
hi,

du must einen superuser für mysql erstellen, da du dich sonst nicht korrekt anmelden kannst!

gruss

c.

in der bash:

mysql schreiben dann:

mysql> use mysql;
mysql> update user set password=password('GEHEIM') where User='root';
mysql>exit;

bash> mysqladmin reload

...

chrimp
06.10.03, 10:15
hi

danke erstmal für deine antwort.
was ich jetzt aber leider nicht versthe, was das mit der php.ini zu tun haben könnte.
sorry wenn ich nochmal nachfrage, aber ich würde gern den zusammenhang verstehen.
thx

corresponder
06.10.03, 10:27
hi,

ich denk mal das hat mit den register_globals zu tun...

gruss

c.

chrimp
06.10.03, 10:35
hmm, werde ich dann mal testen.
die register_global habe ich angeschaltet, weil ich keine variablen ausgeben konnte.
warum auch immer :)
thx

elevator
06.10.03, 10:38
Hi,

hast du

extension=msql.so

in deiner php.ini stehen? Wenn nein, trag das mal ein und starte den Apache danach neu.

Gruß elevator

chrimp
06.10.03, 10:53
die zeile war auskommentiert.
hab dies geändert. apache restarted, hat aber leider nichts gebracht.
trotzdem thx

corresponder
06.10.03, 10:55
hi,

hast du nen root(super-) user für mysql?

Stanislaus
06.10.03, 17:26
Original geschrieben von chrimp
hmm, werde ich dann mal testen.
die register_global habe ich angeschaltet, weil ich keine variablen ausgeben konnte.
warum auch immer :)
thx
<INQUISITION>Register_globals sind absolut schändlich. Und seit php 4.2 standardmäßig deaktiviert; aus gutem Grund:
http://de2.php.net/manual/en/security.registerglobals.php</INQUISITION>
Wahrscheinlich versuchst Du GET und POST Variablen einfach per $NameDerVar abzufragen. Was nie wirklich richtig war. versuchs über $_GET['varName'] und gut is.
Genau das meint wohl dieser Satz:
"[...]this directive was quite common and many people didn't even know it existed and assumed it's just how PHP works."

Zu Deinem eigentlichen Problem.

Original geschrieben von chrimp
habe die php.ini-dist in /etc kopiert und umbenannt in php.ini.
Was hast Du mit der ürsprünglichen php.ini gemacht bzw. nicht direkt diese angepasst?
Wenn Du die alte php.ini noch hast kopier diese zurück und nimm Deine Änderungen an dieser vor.
Ansonsten klingt es eindeutig so, daß die mysql erweiterungen nicht gefunden werden. Hat 100%tig nix mit SafeMode oder register_globals zu tun.
In der php.ini werden alle module aufgelistet, die zusätzlich geladen werden sollen u.a. auch mysql. Daher ist der Ansatz von elevator wohl der Richtige.
Ich denke wohl, daß das modul eher mysql.so als msql.so heißt. msql ist imho MS SQL Server.
Guck mal welche Module in dem Verzeichnis, daß in der php.ini unter extension_dir angegeben ist, vorhanden sind; vielleicht kannst Du vom Namen auf das richtige schließen.

Um zu testen, ob es wirklich an den mysql Erweiterungen liegt (ziemlich sicher) teste mal folgende Zeile code.

<?php
$dbh = mysql_connect('root', 'peng', 'localhost');
?>
Wenn die mysql Erweiterungen nicht gefunden werden bekommst Du die Meldung "Call to undefined function ..." ansonsten kommt irgendein mysql Access denied Dingens Fehler.

Viel Erfolg!

chrimp
06.10.03, 20:39
Original geschrieben von Stanislaus
...........Wahrscheinlich versuchst Du GET und POST Variablen einfach per $NameDerVar abzufragen. Was nie wirklich richtig war. versuchs über $_GET['varName'] und gut is.
Genau das meint wohl dieser Satz:
"[...]this directive was quite common and many people didn't even know it existed and assumed it's just how PHP works."

jo da ist genau das prob.
bin blutiger php anfänger, hab es aber so beigebracht bekommen, werde es jetzt aber umlernen.
muss aber auch gestehen, dass mir der apache 2 noch extrem probs macht.


...Was hast Du mit der ürsprünglichen php.ini gemacht bzw. nicht direkt diese angepasst?
Wenn Du die alte php.ini noch hast kopier diese zurück und nimm Deine Änderungen an dieser vor.

bei mandrake ist für mich alles noch ein wenig komisch :)
es gibt/gab keine php.ini, sondern nur eine /usr/share/doc/libphp_common430-430/php.ini-dist
hab mir mit einer phpinfo nun den pfad gesucht wo die php.ini sein sollte (bis dahin ging auch noch alles perfekt, inkl phpmyadmin).
die alte geonmmen in /etc/php.ini kopiert/umbenannt und die einstellungen wie oben beschrieben vorgenommen.
habe auch versucht, erst in der php.ini-dist was zu ändern, aber die haben nichts bewirkt.


....... elevator wohl der Richtige.
Ich denke wohl, daß das modul eher mysql.so als msql.so heißt. msql ist imho MS SQL Server.
Guck mal welche Module in dem Verzeichnis, daß in der php.ini unter extension_dir angegeben ist, vorhanden sind; vielleicht kannst Du vom Namen.....

extension_msql.so hab ich aktiviert.
extensions_dir stand auf ./ das hab ich nun auf /etc/httpd/modules geändert.
leider ohne erfolg.


....... Zeile code.......
Wenn die mysql Erweiterungen nicht gefunden werden bekommst Du die Meldung "Call to undefined function ..." ansonsten kommt irgendein mysql Acc.....
folgendes kommt, wenn ich die datei aufrufe:
"Fatal error: Call to undefined function: mysql_connect() in /var/www/html/sy/test.php on line 2"

genau wie du es sagst.
leider sehe ich den wald vor leider bäumen nicht mehr :(
danke für eure hilfe!!!

elevator
06.10.03, 20:44
Original geschrieben von Stanislaus

[...]
Daher ist der Ansatz von elevator wohl der Richtige.
Ich denke wohl, daß das modul eher mysql.so als msql.so heißt. msql ist imho MS SQL Server.
[...]
Vollkommen richtig, es muss


extension=mysql.so

heissen. Kleiner Tippfehler mit grosser Auswirkung. Gut das dir das aufgefallen ist :). Korrigier die Zeile in der php.ini bitte mal chrimp.

Gruß elevator

chrimp
06.10.03, 20:57
hi alle!!!

es funzt endlich.
habe aus msql.so mysql.so gemacht und den extensions pfad auf /usr/lib/php/extensions/ geändert.
die sch*** geht! ;)
danke euch für eure unterstützung!!!

als nächstes werde ich die register_globals wieder anschalten und schauen wie ich das mit den variablen hinbekomme :)
gibts auch relevante gründe den safemode an zu lassen?
der server ist eh nur zu eigenzwecken. wenn sich dadurch aber auch fehler beim programmieren einschleichen, würde ich das auch gerne abschalten.
thx

Stanislaus
07.10.03, 08:08
Original geschrieben von chrimp
als nächstes werde ich die register_globals wieder anschalten und schauen wie ich das mit den variablen hinbekomme :)
gibts auch relevante gründe den safemode an zu lassen?
der server ist eh nur zu eigenzwecken. wenn sich dadurch aber auch fehler beim programmieren einschleichen, würde ich das auch gerne abschalten.
thx
Also register_globals sollte immer auf Off stehen und das aus folgendem Grund.


Außzug aus "Webserver Sicherheit ist realisierbar" http://www.johanneshoppe.de/publikationen/Sicherheit%20von%20Webservern.html
if ($pass == "hallo") $auth = 1;
if ($auth == 1) echo "Dies ist ein geheimer Text!";

Die erste Zeile dieses Programms prüft, ob die Variable $pass den Wert "hallo" hat. Trifft dies zu, so wird die Variable $auth auf den Wert 1 gesetzt.
Die zweite Zeile vergleicht $auth mit dem Wert 1. Trifft auch dies zu, so wird der geheime Text ausgegeben.

Der Programmierer geht davon aus, dass $auth solange leer bleibt, bis ein Wert gesetzt wird. Doch folgender Aufruf der Seite würde den Passwortschutz sinnlos machen:
"passwort.php?pass=mir_egal&auth=1"

Egal, welchen Wert die Variable $pass bekommt, $auth wird schon zum Start des Programms auf 1 stehen. Der korrekte Code müsste demnach so aussehen:
$auth = 0;
if ($pass == "hallo") $auth = 1;
if ($auth == 1) echo "Dies ist ein geheimer Text!";

Safemode kannst Du bedenkenloß an lassen. Der SafeMode bewirkt, daß php nur aus ganz bestimmten Verzeichnissen Dateien includen darf bzw. auch eben nur in diese Verzeichnisse schreiben darf. Sollte Dir i.d.R. nicht in die Queere kommen.

Bis neulich ...

chrimp
10.10.03, 10:40
hi

ich weiß, dass das heir kein programmierforum ist, aber vielleicht wird mir ja trotzdem kurz geholfen.
es ghet um den variablenaufruf wenn global_register=off ist.

wenn ich
echo $_GET['variable']; mache geht das perfekt.
wenn ich aber echo "das ist das ergebnis: $_GET['variable']! ";
mache, dann zeigt er die variable bzw das ergebnis nicht an.
was mache ich falsch?
danke

Stanislaus
10.10.03, 11:00
Original geschrieben von chrimp
[...]wenn ich aber echo "das ist das ergebnis: $_GET['variable']! ";
mache, dann zeigt er die variable bzw das ergebnis nicht an.
Was zeigt er denn an?
Kann es gerade leider nicht testen aber ich denke es gibt ein Problem mit den Hochkommata in den Anführungszeichen.

<?php
echo "das ist das ergebnis: " . $_GET['variable'] . "!";
?>
So sollte es auf jeden Fall gehen.
Oder versuch einfach mal die Hochkommata weg zu lassen.

Bis neulich ...

chrimp
10.10.03, 11:25
jo das war das prob.
die schießé ist nur, dass man jetzt jedesmal den string uaf und zumachen muss.
aber das geht wohl leider nicht anders.
dankeschön