Bug #68480

compatibility6 crashes TYPO3 BE - part 2

Added by Franz Holzinger over 6 years ago. Updated about 4 years ago.

Status:
Closed
Priority:
Must have
Assignee:
Category:
-
Target version:
Start date:
2015-07-23
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
7
PHP Version:
5.5
Tags:
Complexity:
Is Regression:
No
Sprint Focus:
Remote Sprint

Description

I did fetch the Git for the patch of bug #67933. However Compatibility6 still causes a crash.

The Install Tool hangs and shows these debug trace lines.

Uncaught TYPO3 Exception
#1320585902: $hookObject "TYPO3\CMS\Compatibility6\Hooks\ExtTablesPostProcessing\TcaMigration" must implement interface TYPO3\CMS\Core\Database\TableConfigurationPostProcessingHookInterface (More information)

UnexpectedValueException thrown in file
/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/core/Classes/Core/Bootstrap.php in line 1023.

12 TYPO3\CMS\Core\Core\Bootstrap::runExtTablesPostProcessingHooks()

/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/core/Classes/Core/Bootstrap.php:

00975:   ExtensionManagementUtility::loadExtTables($allowCaching);
00976:   $this->executeExtTablesAdditionalFile();

00977:   $this->runExtTablesPostProcessingHooks();

00978:   return $this;
00979:  }

11 TYPO3\CMS\Core\Core\Bootstrap::loadExtensionTables(boolean)

/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/install/Classes/Controller/Action/AbstractAction.php:

00253:    ->unsetReservedGlobalVariables()
00254:    ->initializeTypo3DbGlobal()

00255:    ->loadExtensionTables(FALSE);

00256:  }
00257: 

10 TYPO3\CMS\Install\Controller\Action\AbstractAction::loadExtLocalconfDatabaseAndExtTables()

/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/install/Classes/Controller/Action/Tool/ImportantActions.php:

00055:    || isset($this->postValues['set']['databaseAnalyzerAnalyze'])
00056:   ) {

00057:    $this->loadExtLocalconfDatabaseAndExtTables();

00058:   }
00059:   if (isset($this->postValues['set']['databaseAnalyzerExecute'])) {

9 TYPO3\CMS\Install\Controller\Action\Tool\ImportantActions::executeAction()

/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/install/Classes/Controller/Action/AbstractAction.php:

00087:  public function handle() {
00088:   $this->initializeHandle();

00089:   return $this->executeAction();

00090:  }
00091: 

8 TYPO3\CMS\Install\Controller\Action\AbstractAction::handle()

/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/install/Classes/Controller/ToolController.php:

00185:   $toolAction->setPostValues($this->getPostValues());
00186:   $toolAction->setLastError($this->getLastError());

00187:   $this->output($toolAction->handle());

00188:  }
00189: 

7 TYPO3\CMS\Install\Controller\ToolController::dispatchAuthenticationActions()

/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/install/Classes/Controller/ToolController.php:

00061:   $this->outputLoginFormIfNotAuthorized();
00062:   $this->registerExtensionConfigurationErrorHandler();

00063:   $this->dispatchAuthenticationActions();

00064:  }
00065: 

6 TYPO3\CMS\Install\Controller\ToolController::execute()

/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/install/Classes/Http/RequestHandler.php:

00058:     $controllerClassName = \TYPO3\CMS\Install\Controller\StepController::class;
00059:   }

00060:   GeneralUtility::makeInstance($controllerClassName)->execute();

00061:  }
00062: 

5 TYPO3\CMS\Install\Http\RequestHandler::handleRequest()

/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/core/Classes/Core/Bootstrap.php:

00188:  public function handleRequest() {
00189:   $requestHandler = $this->resolveRequestHandler();

00190:   $requestHandler->handleRequest();

00191:   return $this;
00192:  }

4 TYPO3\CMS\Core\Core\Bootstrap::handleRequest()

/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/install/Classes/Http/Application.php:

00070:    ->startOutputBuffering()
00071:    ->loadConfigurationAndInitialize(FALSE, \TYPO3\CMS\Core\Package\FailsafePackageManager::class)

00072:    ->handleRequest();

00073: 
00074:   if ($execute !== NULL) {

3 TYPO3\CMS\Install\Http\Application::run()

/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/install/Start/Install.php:

00106: call_user_func(function() {
00107:  $classLoader = require __DIR__ . '/../../../contrib/vendor/autoload.php';

00108:  (new \TYPO3\CMS\Install\Http\Application($classLoader))->run();

00109: });

2 {closure}()

1 call_user_func(Closure)

/var/www/html/developer/TYPO3.CMS-master/typo3/sysext/install/Start/Install.php:

00107:  $classLoader = require __DIR__ . '/../../../contrib/vendor/autoload.php';
00108:  (new \TYPO3\CMS\Install\Http\Application($classLoader))->run();

00109: });

Related issues

Related to TYPO3 Core - Bug #67933: compatibility6 crashes TYPO3 BEClosed2015-07-06

Actions
Related to TYPO3 Core - Bug #71507: compatibility6 still crashes TYPO3 7.6 BE and InstalltoolClosedNicole Cordes2015-11-12

Actions
#1

Updated by Mathias Schreiber over 6 years ago

  • Status changed from New to Needs Feedback
  • Assignee set to Mathias Schreiber

Hi Franz,

first off, please do not open new tickets for the same issue.
Apart from that I am unable to reproduce the error you described.
Maybe we do something differently so here's my clickpath:
  • Update to current master
  • Go to extension manager
  • type "compat" in the searchbox
  • click the Install icon

I clicked through the install tool as well as through modules, I can't seem to find the error you describe.

Same way works for disabling the extension again.

Can you give some more information on what you did prior to the error showing up?

#2

Updated by Franz Holzinger over 6 years ago

Hello Mathias,

I could not reopen the former issue #67933. This has already been marked as resolved. And it is easier for you to have a new error number.

I am still in the Update process coming from a former TYPO3 7 version.
Now I did fetch the most recent master from Git. Don't I need another patch level from Git?
The TYPO3 site still hangs in the Install Tool upgrade process. I can hardly open th TYPO3 backend now. It is gone anyways.

*http://localhost/developer/typo3/sysext/install/Start/Install.php?install[action]=upgradeWizard&install[context]=standalone&install[controller]=tool *

Uncaught TYPO3 Exception
#1320585902: $hookObject "TYPO3\CMS\Compatibility6\Hooks\ExtTablesPostProcessing\TcaMigration" must implement interface TYPO3\CMS\Core\Database\TableConfigurationPostProcessingHookInterface (More information)

UnexpectedValueException thrown in file
/var/www/html/developer/TYPO3.CMS/typo3/sysext/core/Classes/Core/Bootstrap.php in line 1003.

12 TYPO3\CMS\Core\Core\Bootstrap::runExtTablesPostProcessingHooks()

/var/www/html/developer/TYPO3.CMS/typo3/sysext/core/Classes/Core/Bootstrap.php:

00955:   ExtensionManagementUtility::loadExtTables($allowCaching);
00956:   $this->executeExtTablesAdditionalFile();

00957:   $this->runExtTablesPostProcessingHooks();

00958:   return $this;
00959:  }

11 TYPO3\CMS\Core\Core\Bootstrap::loadExtensionTables(boolean)

/var/www/html/developer/TYPO3.CMS/typo3/sysext/install/Classes/Controller/Action/AbstractAction.php:

00252:    ->unsetReservedGlobalVariables()
00253:    ->initializeTypo3DbGlobal()

00254:    ->loadExtensionTables(FALSE);

00255:  }
00256: 

#3

Updated by Franz Holzinger over 6 years ago

You can close this issue.

I deinstalled compatibility6 by the file PackageStates.php. Then I could follow the upgrade steps in the Install Tool. After reinstallation of compatibility6 everything was fine.

#4

Updated by Mathias Schreiber over 6 years ago

  • Status changed from Needs Feedback to Closed
#5

Updated by Mathias Schreiber over 6 years ago

  • Status changed from Closed to New
  • Target version set to 7.4 (Backend)
  • Sprint Focus set to Stabilization Sprint
#6

Updated by Mathias Schreiber over 6 years ago

  • Assignee changed from Mathias Schreiber to Helmut Hummel

hey helmut, can you take a look at this, please?

#7

Updated by Helmut Hummel over 6 years ago

Mathias Schreiber wrote:

hey helmut, can you take a look at this, please?

Franz Koch: how did you enable compatibility6 extension?

general question: when and how or if at all should we enable compatibility for upgrade?

#8

Updated by Franz Holzinger over 6 years ago

I did an upgrade from the TYPO3 version 7.2.0.
Everything had been running and installed already. Then I copied the new TYPO3 source files of TYPO3 7.3.0 there and run the Install Tool which hung on the bug (part 1). I was not able to continue with the Install Tool. Then I did fetch your latest bug fix from Git. It brought me a step further.
compatibility6 has been enabled in TYPO3 7.2 already, when this extension did work fine.

#9

Updated by Helmut Hummel over 6 years ago

Thanks for your quick response!

Franz Holzinger wrote:

compatibility6 has been enabled in TYPO3 7.2 already, when this extension did work fine.

Allright. So the question is, when and where to re-build the class loading information, when the core is updated.

At least the core updater should do so, but maybe we should also have a step in the migration wizard to tackle that issue.

#10

Updated by Helmut Hummel over 6 years ago

  • Status changed from New to Accepted
#11

Updated by Christian Kuhn about 6 years ago

  • Target version changed from 7.4 (Backend) to 7.5
  • Sprint Focus changed from Stabilization Sprint to On Location Sprint
#12

Updated by Anja Leichsenring about 6 years ago

  • Sprint Focus changed from On Location Sprint to Remote Sprint
#13

Updated by Sebastian Schawohl about 6 years ago

I have the same error but with a fresh installed TYPO3 CMS 7.4 with composer (no other dependencies).
After the installation, my first action is to enable compatibility6 in EM and then I get the exception.

I tried the same, but this time I installed TYPO3 CMS 7.4 from the sources and it worked.

The exception is thrown with a new TYPO3 CMS 7.4 installation in composer mode.

#14

Updated by Helmut Hummel about 6 years ago

Sebastian Schawohl wrote:

I have the same error but with a fresh installed TYPO3 CMS 7.4 with composer (no other dependencies).

You have a composer distribution?

After the installation, my first action is to enable compatibility6 in EM and then I get the exception.

Then you need to specify the class aliases and the class loading information for in your root composer.json
There is no way around that. We cannot add these to our typo3/cms package, because then we basically enable the compatibility layer for all users!

I tried the same, but this time I installed TYPO3 CMS 7.4 from the sources and it worked.

Yes, this is different. It is on purpose that extensions can be handled with the EM in that case, including their classes and aliases
Then it works also for compat6

The exception is thrown with a new TYPO3 CMS 7.4 installation in composer mode.

This will be more transparent once we extract compatiblity6 to an own package. Then you can simply require this package via composer and be done

#15

Updated by Sebastian Schawohl about 6 years ago

Helmut Hummel wrote:

Sebastian Schawohl wrote:

I have the same error but with a fresh installed TYPO3 CMS 7.4 with composer (no other dependencies).

You have a composer distribution?

I followed these instructions.

After the installation, my first action is to enable compatibility6 in EM and then I get the exception.

Then you need to specify the class aliases and the class loading information for in your root composer.json

Thank you, this was the missing part: classes aliases were missing for compatibility6.

There is no way around that. We cannot add these to our typo3/cms package, because then we basically enable the compatibility layer for all users!

Yes of course this would not be a good solution.

The exception is thrown with a new TYPO3 CMS 7.4 installation in composer mode.

This will be more transparent once we extract compatiblity6 to an own package. Then you can simply require this package via composer and be done

Yes I think it will be more transparent.
From reading the docs I didn't understand that I needed to add these lines in my composer.json file:

"autoload": {
    "psr-4": {
        "TYPO3\\CMS\\Compatibility6\\": "vendor/typo3/cms/typo3/sysext/compatibility6/Classes/" 
    }
}

After that it worked.
For me no more issue, there wasn't any actually, sorry.

#16

Updated by Helmut Hummel about 6 years ago

Sebastian Schawohl wrote:

I followed these instructions.
For me no more issue, there wasn't any actually, sorry.

Thanks for the swift reply! No need to be sorry! You can do us a favor and add your new knowledge to the wiki. Thanks in advance!

Btw. The composer config you need to do for compatibility6 is only "complete" if you also add the aliases:

"autoload": {
    "psr-4": {
        "TYPO3\\CMS\\Compatibility6\\": "vendor/typo3/cms/typo3/sysext/compatibility6/Classes/" 
    }
},
"extra": {
        "helhum/class-alias-loader": {
            "class-alias-maps": [
                "vendor/typo3/cms/typo3/sysext/compatibility6/Migrations/Code/ClassAliasMap.php" 
            ]
        }
    }

This would be the equivalent config to what happens when you install the ext in non composer mode

#17

Updated by Helmut Hummel about 6 years ago

Helmut Hummel wrote:

This would be the equivalent config to what happens when you install the ext in non composer mode

uhm, I think this config will only work in TYPO3 master

The extra section for 7.4 must still look like this:


    "extra": {
        "class-alias-maps": [
            "Migrations/Code/ClassAliasMap.php" 
        ]
    },

#18

Updated by Benni Mack about 6 years ago

  • Target version changed from 7.5 to 7 LTS
#19

Updated by Helmut Hummel about 6 years ago

  • Status changed from Accepted to Resolved

I consider this resolved. compatiblity6 will be moved out of core soon. And we have a command which updates the class information if needed (which should be very seldomly the case)

Issues during upgrade from 7.x to 7LTS are acceptable imho and can be solved by executing the command.

#20

Updated by Stefanos Karasavvidis almost 5 years ago

I just hit this issue. So it seems that it has not been fixed yet.
I'm upgrading from 6.2.29 to 7.6.14. After executing the first upgrade wizards, I came to the compatibility6 one. Right after executing this, I got this exception.

This was NOT a composer installation. I just downloaded the source and set the new symbolic link.

What is the command that you refer to when you say "...solved by executing the command"?

#21

Updated by Stefanos Karasavvidis almost 5 years ago

ok. In my case this was caused by the typo3temp/autoload folder that had gotten somehow root ownership. After deleting this manually, everything worked. I assume this folder got this ownership from the command line reference index checking I did previously.

#22

Updated by Riccardo De Contardi about 4 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF