TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

jetzt buchen

Update-Problem: ini_set Befehl "session.save_handler" wird ignoriert


Autor Nachricht
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"icon_wink.gif 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"icon_wink.gif;

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"icon_wink.gif;
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
Profil
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"icon_wink.gif;


Daraufhin funktionierte das ganze wieder.

Beste Grüße
chewbacca1
Profil