michanismus
Aktives Mitglied
Thread Starter
- Dabei seit
- 23.08.2004
- Beiträge
- 434
- Reaktionspunkte
- 0
Hallo,
wie schon der Titel sagt bin ich auf ein größeres Problem gestoßen.
Die Vorgeschichte: Ich möchte bei meinem derzeitigen Projekt mittels
mod_rewrite von Apache ein PHP Skript vor jedem anderen ausführen
lassen. Aus welchem Grund? Ich möchte einfach das generell die Session
gestartet wird und grundlegende Konstanten und Objekte laden lassen.
Da liegt das Problem, eben bei den Objekten.
hier erstmal die Quelltexte (alles einfach gehalten):
.htaccess
rewrite.php
test.php
Ich bekomme immer folgenden Fehler:
Das komische ist, wenn ich die Session in dem Skript "test.php" (aktuell
auskommentiert) starte, und es in der Datei "rewrite.php" auskommentiere,
funktioniert alles wunderbar.
Die Session aber wird trotzdem vor dem betreffendem Objekt gestartet,
jedoch ohne Probleme!
Im Prinzip also das Selbe, bis auf unterschiedliche Dateien.
Aber genau das ist es ja, das ich die Session IMMER in "rewrite.php" starten
will, und auch während der Laufzeit, um diese optimieren zu können,
Objekte mittels include einbinden will und ggf. in der Session speichern.
Ich hoffe das Ganze war verständlich erklärt. Ich hoffe ihr habt da bereits
Erfahrungen gesammelt, bzw. habt Lust selbst etwas herauszufinden
Gruß,
Michanismus
EDIT:
Mit "normalen" Variablen die in $_SESSION geschrieben werden funktionierts
bestens.
Beispiel:
wie schon der Titel sagt bin ich auf ein größeres Problem gestoßen.
Die Vorgeschichte: Ich möchte bei meinem derzeitigen Projekt mittels
mod_rewrite von Apache ein PHP Skript vor jedem anderen ausführen
lassen. Aus welchem Grund? Ich möchte einfach das generell die Session
gestartet wird und grundlegende Konstanten und Objekte laden lassen.
Da liegt das Problem, eben bei den Objekten.
hier erstmal die Quelltexte (alles einfach gehalten):
.htaccess
Code:
RewriteEngine On
RewriteRule ^(.*)(\.php|\.php4|\.php5|\.php3)$ /Volumes/Daten/Work/XXX/lib/config/rewrite.php
rewrite.php
PHP:
ini_set('session.bug_compat_warn', 0);
session_start();
define( 'SERVER_ROOT', '/Volumes/Daten/Work' );
$request = $_SERVER['REDIRECT_URL'];
include (SERVER_ROOT.$request);
test.php
PHP:
<?
//session_start();
?>
<pre>
<? print_r($_SESSION); ?>
</pre>
<?php
class myObject {
var $num=0;
function show() {
echo $this->num;
}
function increment() {
$this->num++;
}
function __sleep() {
return array_keys( get_class_vars('myObject') );
}
function __wakeup() {}
}
if ( session_is_registered('lutscha') ) {
$lutscha =& $_SESSION['lutscha'];
$lutscha->show();
$lutscha->increment();
} else {
$lutscha =& new myObject();
session_register('lutscha');
}
?>
Ich bekomme immer folgenden Fehler:
Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>myobject</b> of the object you are trying to operate on was loaded _before_ the session was started in /Volumes/Daten/Work/XXX/lib/config/1/test.php on line 30
Das komische ist, wenn ich die Session in dem Skript "test.php" (aktuell
auskommentiert) starte, und es in der Datei "rewrite.php" auskommentiere,
funktioniert alles wunderbar.
Die Session aber wird trotzdem vor dem betreffendem Objekt gestartet,
jedoch ohne Probleme!
Im Prinzip also das Selbe, bis auf unterschiedliche Dateien.
Aber genau das ist es ja, das ich die Session IMMER in "rewrite.php" starten
will, und auch während der Laufzeit, um diese optimieren zu können,
Objekte mittels include einbinden will und ggf. in der Session speichern.
Ich hoffe das Ganze war verständlich erklärt. Ich hoffe ihr habt da bereits
Erfahrungen gesammelt, bzw. habt Lust selbst etwas herauszufinden
Gruß,
Michanismus
EDIT:
Mit "normalen" Variablen die in $_SESSION geschrieben werden funktionierts
bestens.
Beispiel:
PHP:
if ( session_is_registered('lolli') ) {
$_SESSION['lolli']++;
echo $_SESSION['lolli'];
} else {
$lolli = 1;
echo $lolli;
session_register('lolli');
}
Zuletzt bearbeitet: