Unlösbar? Session-Problem

d4m3th0d

Grünschnabel
hallo leute,

hab seit längerem eine Homepage für meinen fußball verein auf nem webspace liegen und funtzt auch einwandfrei. jetzt habe ich mal die homepage komplett auf meine platte gezogen und mit hilfe von xampp lokal getestet (mysql konfiguration natürlich angepasst). hat früher auch immer schön funktioniert. aber seit kurzem tritt ein problem auf. der browser läd einfach nicht zu ende und es scheint so, als wird das skript einfach nicht fertig geparst. komisch ist, dass es von 10 versuchen tatsächlich einmal klappt......ist aber wie gesagt eher selten.......

hab zuerst an eine endlose schleife gedacht......hab mich also auf die suche nach dem fehler gemacht und angefangen die homepage stückchenweise auszukommentieren, um den fehler zu lokalisieren! und siehe da. sobald ich die aller erste zeile (session_start() ) auskommentiere funktioniert wieder alles. der browser läd fertig und krieg die html datei vom webserver geschickt! und diesmal auch immer! hab keine ahnung an was das liegen könnte. bin auf die funktion von session_start wegen meinem login system angewiesen. könnt ihr mir helfen?

Code?

PHP:
<?PHP
	session_start();
	echo "TEST";
?>

dieser lächerliche zweizeiler reicht schon, damit der browser sich zu tode läd!
wenn ich jemals die ausgabe TEST haben will, muss ich session_start() auskommentieren.

benutze keine frames. die navi, mainframe und der poll werden mittels include geladen.

hab gegoogelt....dass problem gabs schon öfters auch bei anderen. aber nie stand der lösungsweg dabei ;) deswegen versuch ich nun hier mein glück ;P

mit freundlichen grüßen
andy

Auszug aus der php.ini:

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; As of PHP 4.0.1, you can define the path as:
;
; session.save_path = "N;/path"
;
; where N is an integer. Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories. This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
; You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
; use subdirectories for session storage
;
; The file storage module creates files using mode 600 by default.
; You can change that by using
;
; session.save_path = "N;MODE;/path"
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
session.save_path = "C:\Programme\xampp\tmp"

; Whether to use cookies.
session.use_cookies = 1

; This option enables administrators to make their users invulnerable to
; attacks which involve passing session ids in URLs; defaults to 0.
; session.use_only_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

; Handler used to serialize data. php is the standard serializer of PHP.
session.serialize_handler = php

; Define the probability that the 'garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.

session.gc_probability = 1
session.gc_divisor = 100

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440

; NOTE: If you are using the subdirectory option for storing session files
; (see session.save_path above), then garbage collection does *not*
; happen automatically. You will need to do your own garbage
; collection through a shell script, cron entry, or some other method.
; For example, the following script would is the equivalent of
; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
; cd /path/to/sessions; find -cmin +24 | xargs rm

; PHP 4.2 and less have an undocumented feature/bug that allows you to
; to initialize a session variable in the global scope, albeit register_globals
; is disabled. PHP 4.3 and later will warn you, if this feature is used.
; You can disable the feature and the warning separately. At this time,
; the warning is only displayed, if bug_compat_42 is enabled.

session.bug_compat_42 = 1
session.bug_compat_warn = 1

; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
session.referer_check =

; How many bytes to read from the file.
session.entropy_length = 0

; Specified here to create the session id.
session.entropy_file =

;session.entropy_length = 16

;session.entropy_file = /dev/urandom

; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
session.cache_limiter = nocache

; Document expires after n minutes.
session.cache_expire = 180

; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
; to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
; in publically accessible computer.
; - User may access your site with the same session ID
; always using URL stored in browser's history or bookmarks.
session.use_trans_sid = 0

; Select a hash function
; 0: MD5 (128 bits)
; 1: SHA-1 (160 bits)
session.hash_function = 0

; Define how many bits are stored in each character when converting
; the binary hash data to something readable.
;
; 4 bits: 0-9, a-f
; 5 bits: 0-9, a-v
; 6 bits: 0-9, a-z, A-Z, "-", ","
session.hash_bits_per_character = 4
 
Landet denn irgendwas im tmp Ordner?
C:\Programme\xampp\tmp

Was hast du max_execution_time srinn stehen?
Was ist mit display_errors und error_reporting?

Welche PHP Version ist denn auf dem Server und welche Lokal?

Grüße
 
hallo liquidbeats,

danke für deine antwort.
also aufm webserver läuft 4.4.3 und lokal hab ich 5.2.0.

im ordner C:\Programme\xampp\tmp landen dateien, die mit sess_ beginnen und dann ne folge von hex werten. eine datei heißt why.tmp

PHP:
<?php
	error_reporting(E_ALL);
	ini_set('display_errors', TRUE);
	session_name();
	session_start();
	
	$_SESSION['TEST'] = "TEST<BR>\n";
?>

meldet keine fehler.

jetzt hab ich es nochmal versucht. es hat vielleicht auf meiner homepage 3, 4 oder 5 klicks funktioniert und dann wieder nicht mehr....dass ist doch echt bescheuert

max_execution_time = 60

ob session_name() weglassen oder davor ändert auch nichts....

gruß andy
 
Vielleicht liegt es an einem Rechteproblem seitens deiner Betriebssystems her. Das er alte sessions nicht löschen kann.

Das würde die Willkürlichkeit erklären, du könntest die beiden zeilen hier auskommentieren und die veralteten Sessions von Zeit zu Zeit selbstständig löschen. Vielleicht behebt das das Problem. Aber seltsam ist es allemal.

Code:
session.gc_probability = 1
session.gc_divisor = 100
 
hmmm hat leider auch ned geholfen ;( ich hoff ja immernoch auf ein wunder.....

hab dass tmp verzeichnis geleert. dann apache samt mysql neugestartet und die seite geladen. erste ladevorgang erfolgreich. dann hab ich im tmp verzeichnis nachgeschaut. eine datei namens sess_670feed01501c63134c62f6f2dc8ab17 wurde erstellt, mit der größe von sagenhaften 0 KB......

kann es vll. an dieser mysteriösen größe liegen?

naja, ich werd wohl die platte mal formatieren und das system neu aufziehen!

ich poste mal meine erfahrungen, wenn ich fertig bin ;)

hat vll. noch jemand ne idee, bevor ich radikal vorgehe ;)

gruß andy
 
hallo leute,

wie gesagt hab meinen computer formatiert. hatt leider nicht geholfen, aber ich habe neue hinweise für des rätsel's lösung.

also wenn ich die homepage lokal anspreche mit leeren mysql-tabellen, funktioniert irgendwie alles wunderbar. erst wenn ich die mysql datenbank vom webserver exportiere und lokal importiere, tritt das oben genannte problem auf und mir bleibt nichts anderes übrig, als die zeile mit session_start() auszukommentieren, was natürlich nicht so bleiben kann ;)

hier habe ich mal die sql befehle geuppt:
http://www.vfr-kronau.de/priv/sql.txt

also irgendwie muss es ja an der datenbank liegen....schauts euch mal bitte an, vll. findet ihr ja irgendwie eine ungereimtheit!

wär echt nett! ;)

gruß andy
 
Sessions haben eigentlich nix mit der DB zu tun.

Hast du mal

PHP:
error_reporting(E_ALL);

in die PHP-Datei geschrieben und eine Fehlermeldung erhalten, aus der man etwas entnehmen kann?
 
hey Admi,

danke für deine antwort.

ja, index.php fängt so an:
PHP:
<?PHP
	error_reporting(E_ALL);
	ini_set('display_errors', TRUE);
	session_start();

?>
 
hey Admi,

danke für deine antwort.

ja, index.php fängt so an:
PHP:
<?PHP
	error_reporting(E_ALL);
	ini_set('display_errors', TRUE);
	session_start();

//Code......

?>

dass ist auch die datei, welche die mysql verbindung herstellt. es kommt keine fehlermeldung, der browser läd auch nicht fertig!

sorry für doppelpost!!

gruß andy
 
Hi!

Du kannst dir ja mal mit session_id(), mal per echo deine Session ausgeben lassen. Mal sehen ob er überhaupt eine ID erzeugt.

Denn das die Session Dateien im tmp Ordner leer sind darf ja nicht sein.
 
Zurück