Project

General

Profile

Actions

Bug #60655

closed

BE-Login throws exception when session has expired

Added by Flummi no-lastname-given over 9 years ago. Updated over 8 years ago.

Status:
Closed
Priority:
Must have
Assignee:
-
Category:
Backend User Interface
Target version:
-
Start date:
2014-07-29
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
6.2
PHP Version:
5.3
Tags:
Complexity:
Is Regression:
No
Sprint Focus:

Description

The BE-Login with Typo3 Version 6.2.4 sometimes throws an exception:

#1: PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Function spl_autoload_call() hasn't defined the class it was called for in ***/typo3_src-6.2.4/typo3/sysext/backend/Classes/Controller/LoginController.php line 147 (More information)

This happens mainly when I don't log out from the backend and then open the browser on the next day, so I guess the session just has timed out. I also saw that there are 2 cookies set: PHPSESSID and be_typo_user - when I delete these cookies, the backend login works again until the next day (when I reopen the browser and the session propably has expired).

Here is the full stacktrace as shown by the excpetion:

TYPO3\CMS\Core\Error\Exception thrown in file
***/typo3_src-6.2.4/typo3/sysext/core/Classes/Error/ErrorHandler.php in line 101.

6 TYPO3\CMS\Core\Error\ErrorHandler::handleError(2, "session_start() [<a href='function.session-start'>…_call() hasn't defined the class it was called for", "***/typo3_src-6.2.4/t…ext/backend/Classes/Controller/LoginController.php", 147, array)

5 session_start()

***/typo3_src-6.2.4/typo3/sysext/backend/Classes/Controller/LoginController.php:

00145: public function init() {
00146: // We need a PHP session session for most login levels

00147: session_start();

00148: $this->redirect_url = GeneralUtility::sanitizeLocalUrl(GeneralUtility::_GP('redirect_url'));
00149: $this->GPinterface = GeneralUtility::_GP('interface');

4 TYPO3\CMS\Backend\Controller\LoginController::init()

***/typo3_src-6.2.4/typo3/sysext/backend/Classes/Controller/LoginController.php:

00134: */
00135: public function __construct() {

00136: $this->init();

00137: }
00138:

3 TYPO3\CMS\Backend\Controller\LoginController::__construct()

***/typo3_src-6.2.4/typo3/sysext/core/Classes/Utility/GeneralUtility.php:

04362: switch (count($arguments)) {
04363: case 1:

04364: $instance = new $className();

04365: break;
04366: case 2:

2 TYPO3\CMS\Core\Utility\GeneralUtility::instantiateClass("TYPO3\CMS\Backend\Controller\LoginController", array)

***/typo3_src-6.2.4/typo3/sysext/core/Classes/Utility/GeneralUtility.php:

04344: }
04345: // Create new instance and call constructor with parameters

04346: $instance = static::instantiateClass($finalClassName, func_get_args());

04347: // Register new singleton instance
04348: if ($instance instanceof \TYPO3\CMS\Core\SingletonInterface) {

1 TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance("TYPO3\CMS\Backend\Controller\LoginController")

***/typo3_src-6.2.4/typo3/index.php:

00046: }
00047:

00048: $loginController = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Controller\\LoginController');

00049: $loginController->main();
00050: $loginController->printContent();

Actions #1

Updated by Mathias Schreiber over 9 years ago

  • Target version changed from next-patchlevel to 7.4 (Backend)
Actions #2

Updated by Frederic Gaus about 9 years ago

Can confirm this issue in 6.2.9

Actions #3

Updated by Helmut Hummel almost 9 years ago

  • Status changed from New to Needs Feedback

please look for

ini_set('unserialize_callback_func', 'spl_autoload_call');

In your extension code. Report back the extension which uses it. The core itself does not use something like that, but Symfony apparently is.

Actions #4

Updated by Susanne Moog over 8 years ago

  • Target version changed from 7.4 (Backend) to 7.5
Actions #5

Updated by Flummi no-lastname-given over 8 years ago

I did a quick check and found it in the extension "extension builder' (https://typo3.org/extensions/repository/view/extension_builder):

$ grep -R 'spl_autoload_call' *
extension_builder/Classes/Parser/AutoLoader.php: ini_set('unserialize_callback_func', 'spl_autoload_call');
extension_builder/Resources/Private/PHP/PHP-Parser/lib/PHPParser/Autoloader.php: ini_set('unserialize_callback_func', 'spl_autoload_call');

I then looked up the version of extension builder I had installed: it is 2.5.2

I didn't expect an extension to force this behaviour. I will try to update the extension or to just delete it on live system and report later, if the problem disappears with this change.

Thanks for your help, Helmut!

Actions #6

Updated by Benni Mack over 8 years ago

  • Target version deleted (7.5)
Actions #7

Updated by Flummi no-lastname-given over 8 years ago

Actually I did update the extension_bulder to the newest version (6.2.0) but I still find this line of code in it (grep -R 'spl_autoload_call' *, see last comment). So I just deinstalled the extension_builder and since then the error did not occur any more.

Actions #8

Updated by Wouter Wolters over 8 years ago

  • Status changed from Needs Feedback to Closed

Not a core problem. Closing this ticket.

Actions

Also available in: Atom PDF