• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

WAMP-Problem

Knowledge-Junki

New member
Hallo zusammen!
Ich habe im zuge einer Windows-Neuinstallation WAMP neu aufgesetzt und entsprechend die neusten Versionen von PHP, Apache und MySQL aufgespielt. Sollte doch eigentlich abwärtskompatibel sein, oder?
Jedenfalls kommen nun bei meiner Page einige Fehler, wenn ich auf die Datenbank zugreife... z.B.:
"Warning: Use of undefined constant REMOTE_ADDR - assumed 'REMOTE_ADDR' in e:\localhost\scripts\useronline\useronline.php on line 28"
oder
"
Warning: Use of undefined constant begriff - assumed 'begriff' in e:\localhost\scripts\db_lexikon\show_all.php on line 25"

Ich habe allerdings nichts am Quellcode geändert sondern nur neue Versionen aufgespielt (von Apache 1.3.19 auf 1.3.20; von PHP 4.0.4pl1 auf 4.0.6 und von MySQL 3.23.29a-gamma auf 3.23.39a)

Kann mir da jemand weiterhelfen?
 
Ich habe mittlerweile die alte Installation wiederhergestellt (hatte eine Sicherung), doch das Problem ist immer noch da.
Ich finde es teilweise ziemlich kurious, denn er gibt eine Warnung aus (soviel ich verstehe, dass die Variable nicht definiert ist) gibt dann nach der Warnung aber trotzdem den Inhalt der Variable aus... Dies ist allerdings nicht immer der Fall, dann kommt nur die Warnung.

Brauche dringend Hilfe!

MfG
Knowledge-Junkie
 
Warum hilft mir denn kein?

... *heul*
diese Warnung (Warning: Use of undefined constant CPU - assumed 'CPU' in ../../scripts/db_techdata/cpu_show_all.php on line 40) kommt nur wenn ich die Daten direkt aus der DB auslese...
$daten[CPU], wenn ich aber erst $CPU=$daten[CPU] setze, dann kommt die Warnung nicht...
Aber er gibt in beiden Fällen den Variablen Wert aus, beim ersten Fall halt nur mit einer Warnung davor (ich verstehe nicht warum). Sie scheint mir total überflüssig.
 
tja Jung', wie soll man Dir helfen???

ich könnte Dir die Fehlermeldung ins Deutsche übersetzen.... aber hilft Dir das?? keine Ahnung....

also: Ich kenne weder Dein Superskript cpu_show_all.php noch die Konstante CPU aber anscheinend machst Du etwas Grundlegendes falsch, woher hast Du denn den Code?? Hast Du mal probiert das ganze durchzudebuggen??
 
Das Script habe ich selber geschrieben und CPU ist einfach der Name eines Datenbankfeldes in der Tabelle Prozessor...
Das ganze besteht einfach nur aus einer MySQL Datenbank mit einer Tabelle und ein Script das die Daten aufbereitet.
Und es hat ja alles wunderbar funktioniert nur nach der Neu-Installtion nicht mehr, also der Code müsste korrekt sein...
Der Fehler hat seine Ursache, schätze ich bei irgendwelchen EInstellungen....

Trotzdem Danke für die Antwort.
 
Ich bin nun zu ein paar neuen Erkentnissen gelangt:

Seit der Windows-Neuinstallation hat sich bei meinem WAMP-System folgendes verändert:
1. Variablen, die ihre Werte aus einer Datenbank bekommen, lassen sich nur noch in Hochkommas auslesen (z.B. <?php echo "$daten[CPU]";?>" anstatt <?php echo $daten[CPU];?>) und auch bei bearbeitungen solcher Variablen (z.B. mit explode) müssen sie in Hochkommas gestellt werden, sonst wird eine Warnung produziert.
Selbst defenierte Variablen gehen allerdings weiterhin ohne Hochkommas. Das ist doch eigentlich auch Standard, oder?
Man schreibt doch: <?php $Next = explode(";",$pages3[name]);?> anstatt <?php $Next = explode(";","$pages3[name]");?> oder?
2. Wenn ein Datenbank-Feld leer ist wird ein Warnung produziert (die dazu führt, dass es nicht mehr weiter geht). Dies wirft entgegen dem ersten Problem erhebliche Schwierigkeiten auf, denn ich müsste nahezu meinen kompletten Quellcode umschreiben... Vor der Neuinstallation hat WAMP leere Variablen einfach so stehen gelassen und entsprechend nix ausgegeben...
(Fehlermeldung: "Warning: Undefined index: L1_Cache in ../../scripts/db_techdata/cpu_show_all.php on line 42", also das Feld "L1_Cache" beinhaltet in dem Fall keinen Wert, doch muss das eine Warnung nach sich ziehen? Kann man das nicht einfach so stehen lassen und nichts ausgeben? Wie gesagt vor der Windows-Neuinstallation war das so)

Ich wäre sehr dankbar, wenn ihr mir sagen könntet wie ich die beiden oder zumindest eines dieser Probleme beheben kann.
Vielen Dank schonmal.

MfG
Knowledge-Junkie
 
also ich weiß im Moment ned, welche Option man in der ini Datei von PHP verstellen muß damit ers macht, aber das Problem mit den Hochkommatas hat folgenden Hintergrund: $daten ist ein Hash, der Daten anhand eines Schlüssels (i.d.R. ein String) ablegt. Anscheinend belegt Dein PHP nicht automatisch die CPU oder L1_Cache als Defines, so daß PHP sie nicht kennt und dann logischerweise eine Warnung ausspuckt. Wenn Du alle vorkommenden Befehle ala $daten["CPU"] geschrieben hättest, dann wäre erstens Dein Code sauberer programmiert, und zweitens hättest Du jetzt keine Probleme.
Und um es genau zu sagen, beide Probleme beruhen auf genau diesem Zustand.
Jetzt kannst Du entweder Deinen Code ordentlich schreiben, oder Du definierst eine globale Datei, die alle, dies benötigen einbinden, in der Du alle Tabellenspalten als Defines definierst. Dann sind Deine Probleme passè!!

Dein Trick mit den Hochkommatas aussenrum hat vermutlich deshalb funktioniert, weil PHP dann den Index als String interpretiert hat.
Und so eine Änderung kann schon mal zwischen zwei Versionen von PHP vorkommen. Schau Dir halt mal das Changes File an, da steht bestimmt irgendwas dazu drinne.
 
erstmal Danke für deine Antwort.
Ist das wirklich sauberer Code? Ich habe das noch in keinem Quellcode so gesehen...
Warum das zweite Problem den selben Ursprung wie das erste hat verstehe ich allerdings überhaupt nicht. Selbst wenn ich dein Schema $daten["CPU"] nehme bekomme ich eine Warnung wenn CPU keinen Wert hat...
 
also das es sauberer programmiert ist zeigt ja schon die Tatsache, daß Du jetzt plötzlich damit auf die Nase gefallen bist. Meine Version läuft mit beiden... nennt sich defensives Programmieren...

Und eine Warnung solltest Du nur bekommen, wenn CPU nicht Teil des Hashes ist und dann ist es auch völlig korrekt. Ich würd mal das SQL Statement checken, denn wenn da keine CPU Spalte enthalten ist, dann kann auch später im Hash schlecht eine drin sein, oder??
 
eine CPU-Spalte ist schon enthalten nur ist diese nicht immer gefüllt.
Ich frage die Daten mit einer Schleifenfunktion ab und ab und zu hat CPU dann keinen Wert, weil das Feld nunmal leer ist...
 
Zurück
Oben