• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]Website unter Windows ok aber unter Linux fehlerhaft

Jonas

Newbie
Hallo,

ich habe neulich unter Windows angefangen was zu programmieren (Website mit PHP und MYSQL). Da hat alles wunderbar funktioniert.
Dann bin ich auf Linux umgestiegen, und habe den Apachen und MYSQL konfiguriert.
Läuft auch alles soweit wunderbar.
Daten werden aus der DB genommen usw.!

Aber dann habe ich versucht mich probeweise auf der Seite anzumelden.
Formular mit allen möglichen Daten die in die DB eingetragen werden sollen. Eingegebenen Daten werden überprüft ob sie vorhanden sind und die richtige Länge haben.
Als ich alles ausgefüllt hatte, wurden jedoch nur Fehlermeldungen ausgegeben.
Die eingetragenen Daten die eigentlich bei einem Fehler wieder in die Fomfelder eingetragen werden sollen, wurden allerdings nicht eingetragen.
Als ich dann versucht habe die eingetragenen Daten (als Beispiel den Loginname) mit echo (echo "$loginname"; ) auszugeben, wurde er nicht ausgegeben!
Ich habe das gleiche Skript schon unter dem Apachen bei Windows getestet und dort hat alles funktioniert (wie schon oben gesagt). Könnte es sein, dass ein Fehler im Apachen (z.B. installation) ist?
Oder hatte jemand ein selbes/ähnliches Problem?
Kann mir einfach nicht vorstellen was falsch sein soll.

Gruß Jonas

PS: Habe die Website auch unter zwei verschiedenen Browsern getestet. Das gleiche Ergebnis. Eingetragene Daten sind einfach weg. Die deklarierten Variabeln sind auf einmal wieder frei. Ich weiß nicht warum.
 
A

Anonymous

Gast
Ich glaube eher es handelt sich eher um mangelnde Rechtezuweisungen (Dateien anlegen, lesen, ausführen oder das gleiche für Verzeichnisse).

Unter Windows (also mit XAMPP) spiielen diese Rechte eine völlig untergeordnete Rolle, denn sie liegen fast immer automatisch vor.

Noch ein kleiner Hinweis , was lokal gut unter Linux funktioniert muss nicht unbedingt auf einem Linux Webserver so arbeiten, da könne auch schon unterschiedliche Konfigurationen einen Erfolg verhindern.
 
OP
J

Jonas

Newbie
mit den Rechten kann ich mir nicht vorstellen (aber habe noch nicht viel Ahnung von Linux)
Alle Datein liegen im Ordner home/public_html
mmit dem localhost greife ich mit localhost/~jonas/"spezieller ORdner mit Inhalt" zu.
Demnach bin ich sogar eigentümer. Und die Seite wird ja auch fehlerfrei dargestellt.
Das einzige was nicht geht:
-Die eingetragenen Daten in ein Formular werden nicht gesendet.
Also wie wenn du hier im Forum in das Titel Feld den Titel test schreibst.
Sagen wir der Name des Feldes ist ...name=\"titel\"...
und wenn du dann
echo $titel;
ausgeben willst, dann tut sich nichts. Die Variable ist einfach nicht mehr deklariert.
Und ich verstehe nicht warum. Habe es auch mit anderen Seiten versucht.
Überall, bei allen Formularen das selbe Problem.

Muss das aber lösen, denn ich will (endlich) weiterprogrammieren, und zwar nicht under windoof. ;-)

Über Lösungsvorschläge würde ich mich sehr freuen.

Gruß Jonas

PS: Ich installiere den Apachen jetzt nochmal neu. Und alles andere was mit dem apachen zu tun hat ebenfalls.
 

Snubnose

Hacker
bist du dir sicher dass du sowohl unter windows als auch unter linux die gleiche config verwendst ?
zum beispiel was register globals angeht ?
und auch noch was anderes worauf man gerne reinfliegt: dateien sind normalerweise unter Linux case-sensitive....
 
OP
J

Jonas

Newbie
bitte was?
Bin wie gesagt neu in Linux eingestiegen.
Wenn du ne Idee hast wie man das lösen kann, dann bitte in Anfängersprache :).

Ich bin mir nicht sicher das ich die gleiche config verwende.
was ist case-sensitive?

Gruß Jonas
 

Snubnose

Hacker
okay, es liegt liegt am register_globals - das ist im Linux aus was auch sinnvoll ist, da es sicherheitsrisiken birgt wenn du es an machst
also wenn du die Formulardaten per post überträgst musst du statt mit
$titel
$_POST['titel']
verwenden
ebenso sind ein paar sachen anders
z.B.:
$_SERVER['DOCUMENT_ROOT']
$_SERVER['PHP_SELF']
 
OP
J

Jonas

Newbie
oui danke,
das hat geklappt. Dann lag es daran.
Gibt es irgend ne möglichkeit das aufm PC zu deaktivieren?
Denn das würde es mir einfacher machen...

Gruß Jonas
 

Snubnose

Hacker
auf dem PC zu deaktivieren ?
was meinst du ?

wenn es das register_globals meinst:

änder in deiner Windows php.ini das
register_globals = On
auf
register_globals = Off

und wenn du schon dabei bist:
bei beiden configs wüde ich
error_reporting auf
error_reporting = E_ALL
stellen - da bekommst du ab und an richtig gute tipps was Programmierfelher angeht - und zudem zwingt es dich sauber zu programmieren
 
OP
J

Jonas

Newbie
ich meine mit deaktivieren, dass im Localhost Variablen die per Post übergeben werden auch mit
echo $test;
und nicht nur mit
echo $_POST['test'];
ausgegeben werden können.

änder in deiner Windows php.ini das
register_globals = On
auf
register_globals = Off

und wenn du schon dabei bist:
bei beiden configs wüde ich
error_reporting auf
error_reporting = E_ALL

Habe in der php.ini im Verzeichnis
file:/etc/php.ini
nachgeschaut. Da war schon alles so eingestellt wie du es gesagt hast.
 

Snubnose

Hacker
Jonas schrieb:
ich meine mit deaktivieren, dass im Localhost Variablen die per Post übergeben werden auch mit
echo $test;
und nicht nur mit
echo $_POST['test'];
ausgegeben werden können.
genau das ist schlechter Programmierstil
http://at.php.net/manual/de/security.registerglobals.php

deswegen immer $_POST & $_SERVER verwenden
das funktioniert immer und überall und ist sauber

und bitte in deiner php.ini im WINDOWS
register_globals = Off
 
OP
J

Jonas

Newbie
also ich bin jetzt bei den EInstellungen geblieben.
Klappt auch alles wunderbar. Hat nur ein bisschen gedauert bis ich mich dran gewöhnt hatte.

Danke für die Hilfe, Jonas
 
Oben