PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehlermeldung: PHP Warning: Undefined variable


MGeee
2002-09-26, 13:45:42
Hallo,

seit kurzem bekomme ich immer folgende Fehlermeldung, wenn ich mit meinem selbstgeproggten Tool auf die MySQL Datenbank zugreifen will:
PHP Warning: Undefined variable

wobei vorher alles funktioniert hat... am Script kann es also definitiv nicht liegen.
Als Webserver nutze ich unter WinXP-Prof. den JanaServer2, sowie PHP 4.1.1 und MySQL. Hatr vorher alles einwandfrei funktioniert. Kanns vielleicht am WinXP liegen, dass da irgendeine Einstellung hakt?

bloddy newbie
2002-09-26, 15:19:29
hast du eventuell in der php.ini die register_globals auf off gestellt?
ab version 4.2 sind diese nämlich als standard off eingestellt...und dort taucht dann dieses prob auch auf.

deshalb meine vermutung...

cya

MGeee
2002-09-26, 15:50:14
Originally posted by bloddy newbie
hast du eventuell in der php.ini die register_globals auf off gestellt?
ab version 4.2 sind diese nämlich als standard off eingestellt...und dort taucht dann dieses prob auch auf.

deshalb meine vermutung...

cya

nein, dass wars leider nicht, der Fehler tritt immer noch auf. Wie du ja schon geschrieben hast, tritt der Fehler erstab 4.2 auf. Bisher hab ich aber 4.1.1 eingesetzt. Jetzt hab ich´s mal mit der neuen 4.2.2 versucht (und da "register_globals" auf On gestellt). Leider kommt bei 4.2.2 nur folgende Fehlermeldung:

Security Alert! The PHP CGI cannot be accessed directly.
This PHP CGI binary was compiled with force-cgi-redirect enabled. This means that a page will only be served up if the REDIRECT_STATUS CGI variable is set, e.g. via an Apache Action directive.

For more information as to why this behaviour exists, see the manual page for CGI security.

For more information about changing this behaviour or re-enabling this webserver, consult the installation file that came with this distribution, or visit the manual page.


by the way, was bedeutet eigentlich "register_global=Off" ?! ... heißt das, das meine Variablen, die ich z.B. per Formular weitergebe, in der Zieldatei nicht mehr lesbar sind??

mfg
MGeee

bloddy newbie
2002-09-26, 16:01:42
Zitat:
"...Seit PHP 4.2.0 wurde register-globals in der php.ini per Default abgeschaltet. Die Option war dafür zuständig, dass ein Parameter an das Script automatisch in eine entsprechend genannte Variable kopiert wurde. Ein Angreifer hat damit jedoch die Möglichkeit, versehentlich uninitialisierte Variablen mit beliebigen Werten vorzubelegen.
..."

was deine fehlermeldung angeht, kann ich leider auch nicht weiterhelfen...bin ratlos...sorry.

cu

MGeee
2002-09-26, 16:04:55
trotzdem thx :)

Wudu
2002-09-27, 20:35:34
unter windows wird bei den neuen PHP versionen geschimpft wenn eine nicht vordefinierte variable verwendet wird (zB bei Übergabe mit Post oder Get).

Lösung:

du definierst jede Var vor
like this


//richtiges "holen" der var (mit register_globals off/on
$var = $_POST["var"];
IchBinDieFunktionDieVarVerwendet($var);

//falsch aber geht auch (nur mit register_globals = on)
$var = $var;
IchBinDieFunktionDieVarVerwendet($var);



oder du stellst PHP in der ini so um, das es keine oder weniger Fehlermeldungen ausspuckt, aber ich weiss ned genau wie die settingst sind.

Beste Variante, du installierst Linux :-)

MGeee
2002-09-28, 14:03:28
THX @Wudu

genau das wird auch das Problem sein, da ja z.B. PHPMyAdmin funzt, aber meine eigene Scripte nicht. Allerdings kann ich jetzt nicht alle Variablen in jeder PHP-Datei vorher deklarieren, da bin ich nächste Woche noch dabei.
Fehlermeldungen werden allerdings auch nicht ausgespuckt. Ich bekomme den PHP-Code im Browser ausgegeben...
Was muss ich in der php.ini einstellen, damit ich die Variablen vorher nicht deklarieren muss?
Ich hab´s schonmal mit:
cgi.force_redirect = 0 (und 1) probiert, allerdings hat es wohl damit nicht viel zu tun :(

Gruß,
MGeee

bytheway: momentan geht es mir um die Software/Filme/MP3-Listen, die ich mit PHP/MySQL realisiert habe und genau an die komme ich momentan nicht ran :(

PS: bin mitlerweile auf Apache2 und PHP4.2.3 umgestiegen, MySQL3.23.47 bleibt. Alles läuft unter WinXP-Prof.
Mit Linux hab ich mir auch schon überlegt, hab die neueste Suse auch schon hier rumliegen, allerdings muss ich ständig an mein WinXP dran. Aber diese Probleme hätte ich z.B. bei Linux nicht!!! soviel steht mal fest..

MGeee
2002-09-28, 14:13:50
register_globals = on
Datei: "C:\Windows\php.ini"
zeigt bei mir keinerlei Wirkung (war vorher Off)

MGeee
2002-09-28, 14:14:50
Statt einer Ausgabe bekomme ich z.B. sowas zu sehen:

\n" . mysql_errno() . ": " . mysql_error()); $spalten = mysql_num_fields($ergebnis); echo "\n "; for ($i = 0; $i < $spalten; $i++) echo " " . mysql_field_name($ergebnis, $i) . " "; echo "
"; while ($zeile = mysql_fetch_row($ergebnis)) { echo " "; for ($i = 0; $i < $spalten; $i++) echo " " . $zeile[$i] . " "; echo "
\n"; } echo " \n"; schliessen ($ergebnis); } ?>


Update:
dürfte vielleicht auch an der httpd.vonf liegen, weil der Eintrag:
LoadModule php4_module c:/programme/php/sapi/php4apache2.dll
keinerlei Wirkung hat, PHP also anscheinend nicht eingebunden wird ...

Update 2:
PROBLEM GELÖST
hab mal testweise das php-verz. nach c:\php geschoben (vorher c:\programme\php)---> und schwups ging es--> obwohl ich in den Konfig-Dateien überall c:\programme\php angegeben habe, komisch irgendwie... aba egal, jetzt läuft es erstmal *freu* :D

MGeee
2002-09-28, 17:28:24
so, hab jetzt mal bisserl rumprobiert und dabei die error.log von Apache beobachtet:
wenn register_globals = Off, funzen meine Scripte nicht, und ich bekomme nur nen blanken Screen.

wenn register_globals = On, funzen zwar meine Scripte, aber nur sehr unbeständig, manchmal ja, manchmal nein, und in der error.log (von Apache) bekomme sehe ich:
" Undefined variable on line ... "

also muss ich wohl doch noch mal alle meine Scripts umschreiben und die Variablen global deklarieren ;(
arbeit arbeit arbeit

Wudu
2002-09-28, 20:34:22
wenn dir dein Webserver den Source der File ausspuckt, wird die PHP file vom Apache nicht mit PHP interprätiert,dh dein Apache ist falsch conf.

Ich weis leider nicht auswendig welcher EIntrag in der php.ini dafür zuständig ist (*aufphp.netbrause*)

search.....

so hab was gefunden für dich

http://www.php.net/manual/en/features.error-handling.php

hf
/wudd