CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
12.10.2009, 16:02:03
|
Anfänger
|
|
Registriert seit: Oct 2009
Alter: 51
Beiträge: 5
|
|
Session nur teilweise
Hallo zusammen,
ich habe vor einigen Wochen die Betreuung eines Projekts übernommen, dass unter PHP 4 läuft. Durch vertragliche Gründe mussten wir auf einen neuen Server umziehen. Auf diesem läuft auch immer noch PHP4 in der Version 4.4.9
Auf dem alten Server lief die Anwendung einwandfrei, auch unter dem neuen Server läuft die Anwendung immer noch gut und stabil, nur ein Bestandteil der Anwendung arbeitet mit Sessions, und dieser läuft nicht einwandfrei.
Die Session wird ganz normal gestartet und läuft über einen mehrseitigen Dialog einwandfrei. Auf einer Seite muss auf eine Eingabe von Dritten "gewartet" werden, daher wird die Seite über den meta Tag refresh neu geladen. Jetzt passiert folgendes:
Mal wird die Datenbankabfrage ausgeführt, mal nicht??????
Die Session heisst immer gleich, die Sessionvariablen sind auch da, aber eben nicht immer. Durch testen und ausgeben lassen herausgefunden, die Session ist immer da, die dazugehörigen Variablen aber nicht.
Es macht keinen Unterschied, wenn ich den refresh rausnehme, der gleiche Effekt taucht bei F5 auf, mal da mal nicht.
Der Vollständigkeit halber, dies ist meine Session Einstellung der php.ini, sowohl aktuell als auch in der Version 4.3.2 bei der es funktioniert hat.
session
Session Support enabled
Registered save handlers files user
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid Off Off
|
12.10.2009, 17:32:54
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Session nur teilweise
der vollständigkeit halber: wo ist der code, der das problem erzeugt?
|
12.10.2009, 18:14:14
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 16
Beiträge: 2.269
|
|
AW: Session nur teilweise
Zitat:
Die Session heisst immer gleich, die Sessionvariablen sind auch da, aber eben nicht immer. Durch testen und ausgeben lassen herausgefunden, die Session ist immer da, die dazugehörigen Variablen aber nicht.
|
Wenn der Browser andere/wechselnde Header sendet, kann Suhosin die Zusammenarbeit verweigern, bzw. nicht in der Lage sein die verschlüsselten Session Daten zu rekonstruieren.
Evtl liegen die Sessiondaten auch auf einem NFS Dateisystem, dann könnte das Sessionlocking auf die Nase fallen.
|
12.10.2009, 20:19:36
|
Anfänger
|
|
Registriert seit: Oct 2009
Alter: 51
Beiträge: 5
|
|
AW: Session nur teilweise
Hier der Code:
PHP-Code:
include("*.php");
require_once ("*.php");
session_start();
global $HTTP_SESSION_VARS;
$projekt_id = $_SESSION['projekt'];
$begdat = $_SESSION['begdat'];
$enddat = $_SESSION['enddat'];
$kurs = $_SESSION['kurs'];
$teilnehmer = $_SESSION['teilnehmer'];
Daran kann es aber meiner Meinung nicht liegen, da nur durch das Aktualisiseren die Session mal einliest und mal nicht. Ich habe auch schon versucht, sowohl include als auch require nach der session zu setzen.
Nach teilnehmer ein die() mit Ausgabe der Variablen, auch die include und die require weg, führt dazu dass bei F5 Variable da, nochmal F5 Variable weg. Kann auch mal passieren, dass fünf mal da, fünf mal weg etc.
@DokuLeseHemmung
Der Header wird immer gleich gesendet, generiert durch die SYS Variablen. Das ganze läuft auf einer Suse Linux Umgebung.
|
12.10.2009, 20:22:22
|
Anfänger
|
|
Registriert seit: Oct 2009
Alter: 51
Beiträge: 5
|
|
AW: Session nur teilweise / Nachtrag
Ist übrigens in Firefox, IE und Opera so!
|
12.10.2009, 20:39:28
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 16
Beiträge: 2.269
|
|
AW: Session nur teilweise
Sonderlich intensiv gehst du ja nicht auf meine Fragen/Ansagen ein....
Zitat:
Der Header wird immer gleich gesendet,
|
Ich meinte die Request Header, nicht die Header des Response.
Zitat:
Wenn der Browser andere/wechselnde Header sendet
|
Diese Header können übrigens auch durch einen Proxy oder eine Client Firewall verfälscht werden.
Dieser Code ist bedenklich:
PHP-Code:
$begdat = $_SESSION['begdat'];
$enddat = $_SESSION['enddat'];
$kurs = $_SESSION['kurs'];
$teilnehmer = $_SESSION['teilnehmer'];
Man sollte Variablen grundsätzlich anderes nennen als die Keys im Session Array. Denn sonst könnte man in die PHP4.2 Session kompatibilitäts Falle tappen.
Dieses ist ganz großer Unsinn:
PHP-Code:
global $HTTP_SESSION_VARS;
Global ist an der Stelle flüssiger als Wasser.
Und $HTTP_SESSION_VARS ist hoffnungslos veraltet.
Also noch ein paar Fragen/Ansagen:
Ist Suhosin installiert?
Funktioniert das Sessionlocking?
Baue bitte error_reporting ein.
Wieso sehe ich keine Kontrollausgaben?
Warum stellst du nicht auf PHP5 um? PHP4 ist tot.
|
13.10.2009, 09:05:55
|
Anfänger
|
|
Registriert seit: Oct 2009
Alter: 51
Beiträge: 5
|
|
AW: Session nur teilweise
@DokuLeseHemmung
Der Request Header ist immer gleich!
Das der Code bedenklich ist, ist mir klar, wie ich schon sagte, Projekt so übernommen.
Suhosin ist nicht installiert
Sessionlocking funktioniert
Error_reporting ohne Fehlermeldung durchlaufen
Kontrollausgaben nicht mit kopiert.
Da das Projekt unkommentiert entwickelt wurde, will der Kunde die notwendigen Kosten für einen Umstieg nicht investieren, Anwendung läuft mit PHP5 nicht.
Folgendes gestern nochmal getestet:
Eine PHP-Datei mit folgendem Inhalt, weiter nichts, ausser das noch mehr echos drinstehen:
PHP-Code:
session_start();
$begdat = $_SESSION['begdat'];
$enddat = $_SESSION['enddat'];
$kurs = $_SESSION['kurs'];
$teilnehmer = $_SESSION['teilnehmer'];
echo $begdat;
Die Session wird über eine vorherige Formularseite gerfüllt, beim Erstaufruf ist die Session immer da, nach Aktualisierung mal eine leere Ausgabe, mal eine Ausgabe
|
13.10.2009, 13:49:37
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 16
Beiträge: 2.269
|
|
AW: Session nur teilweise
Der Fehler kann so nicht auftreten, es sei denn es gibt eine Unpässlichkeit zwischen Dateisystem und Sessionsavehandler. Oder du zeigst hier nicht den "wahren" Code.
Wie hast du das Sessionlocking getestet?
Dabei müsste der Fehler dann auch aufgetreten sein.
Mögliche Lösungen/Wege:
1. dem Provider Bescheid stoßen. Er hat ein System mit funktionierendem Sessionhandling zur Verfügung zu stellen.
2. einen eigenen session.save_path verwenden
3. einen eigenen Handler verwenden um näher an das Problem zu kommen
|
14.10.2009, 08:02:41
|
Anfänger
|
|
Registriert seit: Oct 2009
Alter: 51
Beiträge: 5
|
|
AW: Session nur teilweise
Hallo DokuLeseHemmung
Danke für deine Antwort. Es beruhigt mich ungemein, dass auchn hier die Meinung herscht, dass es den Fehler nicht geben kann. Ich habe den code genau so getestet und genau diesen Fehler.
Hatte ich noch nie, Provider sagt, würde alles funktionieren.
Danke für die Antworten.
|
14.10.2009, 11:19:33
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Session nur teilweise
dann erstelle ein minimalbeispiel das den fehler reproduziert und schicke es deinem provider, dann kann der den fehler nachvollziehen.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 01:14:53 Uhr.
|