Error-Meldung
gerhard
- php
0 Bobby0 Gerhard0 Bobby0 Gerhard
0 Sönke Tesch0 Gerhard0 Tom0 Sönke Tesch0 Tom
0 Tom
Mein Compiler gibt mir ständig Error-Meldungen aus:
Notice: Undefined variable: ... on line ...
Die Variablen sind aber alle DEFINITIV global deklariert, und zwar in einer inkludierten Datei. Sie werden sogar teilweise schon in der eigenen Datei definiert, trotzdem kommt immer die Meldung. Das gilt für alle globalen Variablen.
Was gibts da noch für Fehlermöglichkeiten???
Danke im Voraus
Gerhard
Hallo Gerhard,
Der Code der Inklude-Datei und der Include Befehl bzw. die genauen Fehlermeldungen wären sehr gut. Ansonsten wird dir niemand das Problem lösen können
Gruß Bobby
Leider darf ich nicht allzuviel vom Code herzeigen weil ich in einem großen Betrieb in der Internetabteilung arbeite.
global_vars.php
------------------------------
global $var1;
global $var2;
global $var3;
global $var4;
...
if(...) {
$gvar1="xxx";
$gvar2="yyy";
$gvar3="zzz";
$gvar4="aaa";
}
else {
$gvar1="bbb";
$gvar2="ccc";
$gvar3="ddd";
$gvar4="hhh";
}
--------------------------------
Hauptdatei
--------------------------------
...
include("global_vars.php");
...
[102] else
[103] $localvar=$gvar2; //Notice: Undefined variable: $gvar2 in ... on line 103
//andererseits
[91] else
[92] $localvar2=$gvar3;
// kein Error
Hallo gerhard,
kann es sein das die if Abfrage in der Global_vars nicht richtig ist? Ich komme auf diesen Schluß weil ja die Variable $gvar3 funktioniert..... Schau mal in deiner Global_vars.php.... dort liegt sicher der Fehler.
Gruß Bobby
Wenn jemand nen anderen Fehler sieht wärs auch gut. Seh erst mal keinen... Vielleicht bin ich auch blind... grins
das wars leider auch nicht, wahrscheinlich steckt der hund irgendwo ganz klein im detail
trotzdem danke
[102] else
[103] $localvar=$gvar2; //Notice: Undefined variable: $gvar2 in ... on line 103//andererseits
[91] else
[92] $localvar2=$gvar3;
// kein Error
Pflaster den Bereich um Zeile 102 mit
var_dump($gvar2);
zu, zur Not nach jeder einzelnen Anweisung. Irgendwo muss $gvar2 bekannt sein, zumindest in global_vars.php nach dem if-Block, eigentlich auch nach der include()-Anweisung.
Mit var_dump() sollest Du zumindest die Stelle finden, an der sie verschwindet. Alles weitere muss sich dann aus der Position ergeben.
Diese Konstellation, $gvar2 und $gvar3 gleich deklariert, aber nur $gvar3 ist bekannt, ist eigentlich unmöglich. In unmöglichen Fällen hilft oft nur noch die Hammerschlag-auf-den-Kopf-Methode.
Gruß,
soenk.e
ich habe dass var_dump($gvar2); jetzt ausprobiert:
außerhalb jeglicher funktionen liefert es einwandfrei den inhalt
innerhalb EINER (zahlenmäßig gemeint) funktion liefert es garnichts
innerhalb aller anderen funktionen liefert es NULL und eine NOTICE
das ergibt alles keinen SINN !!!!!!!!!!!
das macht mich sehr böse
danke für den tipp
mfg gerhard
Hello,
außerhalb jeglicher funktionen liefert es einwandfrei den inhalt
innerhalb EINER (zahlenmäßig gemeint) funktion liefert es garnichts
innerhalb aller anderen funktionen liefert es NULL und eine NOTICE
Sowas hatte ich schon befürchtet/erwartet. Da Du ja aber im Hochsicherheitstrakt von Pullach arbeitest, hatte ich nicht gewagt danach zu fragen, ob Du auch die Gültigkeitsbreiche für Variablen kennst oder gar mit OOP und Kapselung arbeitest ;-)
Da solltet Du Dich nun also als erstes mit "Scope", "Gültigkeitsbereich", "Namensraum" beschäftigen.
Innerhalb einer Funktion sind nur die für die Funktion deklarierten Variablen bekannt sowie die "Superglobalen Arrays" von PHP.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
außerhalb jeglicher funktionen liefert es einwandfrei den inhalt
innerhalb EINER (zahlenmäßig gemeint) funktion liefert es garnichts
innerhalb aller anderen funktionen liefert es NULL und eine NOTICEdas ergibt alles keinen SINN !!!!!!!!!!!
Wie Deine zweite Feststellung zu Stande kommt, weiß ich nicht (ich tippe auf irrtümlich fehlenden Funktionsaufruf), aber die beiden anderen sind vollkommen in Ordnung. Du hast schließlich nicht $gvar2 als global definiert, sondern $var2 (ohne g).
Das erklärt natürlich noch nicht, warum $gvar3 sich anders verhalten soll als $gvar2, deutet aber leicht an, dass Du Dich möglicherweise nur in Deinem Code verlaufen hast :)
Gruß,
soenk.e
Hello,
außerhalb jeglicher funktionen liefert es einwandfrei den inhalt
innerhalb EINER (zahlenmäßig gemeint) funktion liefert es garnichts
innerhalb aller anderen funktionen liefert es NULL und eine NOTICEdas ergibt alles keinen SINN !!!!!!!!!!!
Wie Deine zweite Feststellung zu Stande kommt, weiß ich nicht (ich tippe auf irrtümlich fehlenden Funktionsaufruf), aber die beiden anderen sind vollkommen in Ordnung. Du hast schließlich nicht $gvar2 als global definiert, sondern $var2 (ohne g).
Das erklärt natürlich noch nicht, warum $gvar3 sich anders verhalten soll als $gvar2, deutet aber leicht an, dass Du Dich möglicherweise nur in Deinem Code verlaufen hast :)
Es deutet darauf hin, dass er Funktionen benutzt und us nicht vedrrät, wo. Ggf. bei der Global-Dekalration oder eventuell auch nur bei der verwendung der Variablen. Un innerhalb der Funktion wird dann wohl keine Global-Deklaration mehr stattfinden. Die äußere kann man sich ja auch schenken, die innere (iinerhalb der Funktion) eben nicht ...
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
...
include("global_vars.php");
...
hier mal zum Debug einbauen:
print_r(get_defined_vars());
http://de2.php.net/manual/de/function.get-defined-vars.php
Für solche Kontrollen ist die Funktion bestens geeignet.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom