|
Verfasst am: 26. 08. 2011 [12:16]
|
|
chewbacca1
Themenersteller
Dabei seit: 26.08.2011
Beiträge: 2
|
Hallo zusammen,
in einem unserer Projekte benutzen wir Typo3 4.1.2.
Mittels einem typoscript ("root.ts" und dem Befehl includeLibs.globalincphp = "fileadmin/php/includes/global_typo3.inc.php" wird ein user-basiertes Session Handling eingebunden:
ini_set("session.save_handler", "user" ;
Dieses funktionierte bisher auch einwandfrei.
Nach dem Update von 4.1.2 auf 4.5.4 funktioniert dieses Session Handling aber nicht mehr.
Der ini_set-Befehl wird jetzt nicht mehr ausgeführt.
Beispiel:
Gibt man in der Version 4.1.2 nach dem ini_set ein phpinfo() aus, sieht man, daß der Befehl sofort korrekt umgesezt wurde:
session.save_handler user files
In der neuen Version 4.5.4 sieht man in der phpinfo(), daß der Wert nicht geändert wird:
session.save_handler files files
Das Session Handling bleibt also auf "files".
Der ini_set-Befehl selber funktioniert und gibt einen korrekten Wert zurück:
$a = ini_set("session.save_handler", "user" ;
echo $a; // gibt "files" aus
(php.net - ini_set: Returns the old value on success, FALSE on failure.)
Andere Werte (z.B. display_errors) lassen sich mittels ini_set auch problemlos ändern.
Auf Seiten, die nicht direkt von Typo3 bereitgestellt werden (z.B. angepostete Form-Action Seiten) funktioniert das ganze wie bisher.
Weiß jemand woran das liegen kann?
Warum wird speziell der ini_set Befehl "session.save_handler" in der neuen Typo3 Version ignoriert?
Wie kann man Typo3 (bzw. php) dazu bringen das user-basierte Session Handling zu übernehmen?
Mit besten Grüßen
chewbacca1
|
|
Verfasst am: 22. 09. 2011 [12:37]
|
|
chewbacca1
Themenersteller
Dabei seit: 26.08.2011
Beiträge: 2
|
Hallo zusammen,
das Problem konnte gelöst werden.
Der entscheidene Hinweis auf die Fehlerursache gab das Typo3 BE.
Unter Adminwerkzeuge->Protokoll stand folgende Meldung:
Core: Error handler (FE): PHP Warning: ini_set(): A session is active. You cannot change the session module's ini settings at this time. in fileadmin/php/includes/global_typo3.inc.php line 5
Der Fehler war, daß noch bevor unsere Datei „global_typo3.inc.php“ eingebunden wurde ein „session_start()“ aufgerufen wurde, und zwar in: \typo3_src\t3lib\class.t3lib_userauth.php Zeile 256.
Es mußte also dafür gesorgt werden, daß vor diesem session_start() Aufruf das user definierte Session-Handling aufgerufen wurde.
Dies konnte erreicht werden in dem die global_typo3.inc.php innerhalb der Seite typo3_src\index.php als erstes eingebunden wurde:
…
require_once("fileadmin/php/includes/global_typo3.inc.php" ;
…
Daraufhin funktionierte das ganze wieder.
Beste Grüße
chewbacca1
|