Bug #78868

Check for broken extensions should check ext_emconf.php

Added by Franz Holzinger almost 3 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Could have
Assignee:
-
Category:
Install Tool
Target version:
-
Start date:
2016-12-03
Due date:
% Done:

0%

TYPO3 Version:
7
PHP Version:
5.6
Tags:
Complexity:
Is Regression:
No
Sprint Focus:

Description

The Extension Manager throws exceptions after the upgrade from TYPO3 6.2.27 to 7.6.14. The Install Tool should have reported those problems before.
Those problematic extensons have never been installed. They are old and inside the typo3conf/ext folder. However they crash the EM:

Uncaught TYPO3 Exception
#1439552059: The extension "dd_extensionframework" has invalid version constraints in conflicts section. Extension key is missing! (More information)

TYPO3\CMS\Core\Package\Exception\InvalidPackageManifestException thrown in file
/var/www/html/typo3_src-7.6.14/typo3/sysext/core/Classes/Package/PackageManager.php in line 1022.

22 TYPO3\CMS\Core\Package\PackageManager::mapExtensionManagerConfigurationToComposerManifest("dd_extensionframework", array, stdClass)

/var/www/html/typo3_src-7.6.14/typo3/sysext/core/Classes/Package/PackageManager.php:

00955:             $extensionManagerConfiguration,
00956:             $composerManifest ?: new \stdClass()

00957:         );

00958: 
00959:         return $composerManifest;

21 TYPO3\CMS\Core\Package\PackageManager::getComposerManifest("/var/www/html/typo3conf/ext/dd_extensionframework/")

/var/www/html/typo3_src-7.6.14/typo3/sysext/core/Classes/Package/PackageManager.php:

00347:             }
00348:             try {

00349:                 $composerManifest = $this->getComposerManifest($packagePath);

00350:                 $packageKey = $this->getPackageKeyFromManifest($composerManifest, $packagePath, $packagesBasePath);
00351:                 $this->composerNameToPackageKeyMap[strtolower($composerManifest->name)] = $packageKey;

20 TYPO3\CMS\Core\Package\PackageManager::scanAvailablePackages("PackageManagement::packagesMayHaveChanged")

19 call_user_func_array(array, array)

/var/www/html/typo3_src-7.6.14/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php:

00138:             }
00139: 

00140:             $slotReturn = call_user_func_array([$object, $slotInformation['method']], $preparedSlotArguments);

00141: 
00142:             if ($slotReturn) {

18 TYPO3\CMS\Extbase\SignalSlot\Dispatcher::dispatch("PackageManagement", "packagesMayHaveChanged")

/var/www/html/typo3_src-7.6.14/typo3/sysext/extensionmanager/Classes/Utility/ListUtility.php:

00150:     protected function emitPackagesMayHaveChangedSignal()
00151:     {

00152:         $this->signalSlotDispatcher->dispatch('PackageManagement', 'packagesMayHaveChanged');

00153:     }
00154: 

That extension uses invalid constraints:
(see attached file)

    'constraints' => array(
        'depends' => array(
            'typo3' => '',
            'php' => '',
            'cms' => '',
        ),
        'conflicts' => array(
            '' => '',
        ),
    ),
    'suggests' => array(
    ),

ext_emconf.php View (1.97 KB) Franz Holzinger, 2016-12-03 09:31

ext_emconf.php View (1.07 KB) Franz Holzinger, 2016-12-03 09:35


Related issues

Duplicates TYPO3 Core - Feature #73015: Add ext_emconf.php validator New 2016-01-29

History

#1 Updated by Franz Holzinger almost 3 years ago

sk_fancybox:

    array (
        'depends' => 
        array (
            'typo3' => '4.4.0-6.0.99',
            '' => '',
        ),
        'conflicts' => 
        array (
        ),
        'suggests' => 
        array (
        ),
    ),

Uncaught TYPO3 Exception
#1439552058: The extension "sk_fancybox" has invalid version constraints in depends section. Extension key is missing! (More information)

TYPO3\CMS\Core\Package\Exception\InvalidPackageManifestException thrown in file
/var/www/html/typo3_src-7.6.14/typo3/sysext/core/Classes/Package/PackageManager.php in line 1012.

22 TYPO3\CMS\Core\Package\PackageManager::mapExtensionManagerConfigurationToComposerManifest("sk_fancybox", array, stdClass)

/var/www/html/typo3_src-7.6.14/typo3/sysext/core/Classes/Package/PackageManager.php:

00955:             $extensionManagerConfiguration,
00956:             $composerManifest ?: new \stdClass()

00957:         );

00958: 
00959:         return $composerManifest;

21 TYPO3\CMS\Core\Package\PackageManager::getComposerManifest("/var/www/html/typo3conf/ext/sk_fancybox/")

/var/www/html/typo3_src-7.6.14/typo3/sysext/core/Classes/Package/PackageManager.php:

00347:             }
00348:             try {

00349:                 $composerManifest = $this->getComposerManifest($packagePath);

00350:                 $packageKey = $this->getPackageKeyFromManifest($composerManifest, $packagePath, $packagesBasePath);
00351:                 $this->composerNameToPackageKeyMap[strtolower($composerManifest->name)] = $packageKey;

20 TYPO3\CMS\Core\Package\PackageManager::scanAvailablePackages("PackageManagement::packagesMayHaveChanged")

19 call_user_func_array(array, array)

/var/www/html/typo3_src-7.6.14/typo3/sysext/extbase/Classes/SignalSlot/Dispatcher.php:

00138:             }
00139: 

00140:             $slotReturn = call_user_func_array([$object, $slotInformation['method']], $preparedSlotArguments);

00141: 
00142:             if ($slotReturn) {

18 TYPO3\CMS\Extbase\SignalSlot\Dispatcher::dispatch("PackageManagement", "packagesMayHaveChanged")

/var/www/html/typo3_src-7.6.14/typo3/sysext/extensionmanager/Classes/Utility/ListUtility.php:

00150:     protected function emitPackagesMayHaveChangedSignal()
00151:     {

00152:         $this->signalSlotDispatcher->dispatch('PackageManagement', 'packagesMayHaveChanged');

00153:     }
00154: 

17 TYPO3\CMS\Extensionmanager\Utility\ListUtility::emitPackagesMayHaveChangedSignal()

/var/www/html/typo3_src-7.6.14/typo3/sysext/extensionmanager/Classes/Utility/ListUtility.php:

00110:         if ($this->availableExtensions === null) {
00111:             $this->availableExtensions = [];

00112:             $this->emitPackagesMayHaveChangedSignal();

00113:             foreach ($this->packageManager->getAvailablePackages() as $package) {
00114:                 $installationType = $this->getInstallTypeForPackage($package);

16 TYPO3\CMS\Extensionmanager\Utility\ListUtility::getAvailableExtensions()

/var/www/html/typo3_src-7.6.14/typo3/sysext/extensionmanager/Classes/Utility/ListUtility.php:

00290:     public function getAvailableAndInstalledExtensionsWithAdditionalInformation()
00291:     {

00292:         $availableExtensions = $this->getAvailableExtensions();

00293:         $availableAndInstalledExtensions = $this->getAvailableAndInstalledExtensions($availableExtensions);
00294:         $availableAndInstalledExtensions = $this->enrichExtensionsWithIconInformation($availableAndInstalledExtensions);

15 TYPO3\CMS\Extensionmanager\Utility\ListUtility::getAvailableAndInstalledExtensionsWithAdditionalInformation()

/var/www/html/typo3_src-7.6.14/typo3/sysext/extensionmanager/Classes/Controller/ListController.php:

00152:     {
00153:         $this->addComposerModeNotification();

00154:         $availableAndInstalledExtensions = $this->listUtility->getAvailableAndInstalledExtensionsWithAdditionalInformation();

00155:         ksort($availableAndInstalledExtensions);
00156:         $this->view->assign('extensions', $availableAndInstalledExtensions);

14 TYPO3\CMS\Extensionmanager\Controller\ListController::indexAction()

13 call_user_func_array(array, array)

/var/www/html/typo3_src-7.6.14/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php:

00281:         if (!$validationResult->hasErrors()) {
00282:             $this->emitBeforeCallActionMethodSignal($preparedArguments);

00283:             $actionResult = call_user_func_array([$this, $this->actionMethodName], $preparedArguments);

00284:         } else {
00285:             $methodTagsValues = $this->reflectionService->getMethodTagsValues(get_class($this), $this->actionMethodName);

12 TYPO3\CMS\Extbase\Mvc\Controller\ActionController::callActionMethod()

/var/www/html/typo3_src-7.6.14/typo3/sysext/extbase/Classes/Mvc/Controller/ActionController.php:

00174:             $this->initializeView($this->view);
00175:         }

00176:         $this->callActionMethod();

00177:     }
00178: 

11 TYPO3\CMS\Extbase\Mvc\Controller\ActionController::processRequest(TYPO3\CMS\Extbase\Mvc\Web\Request, TYPO3\CMS\Extbase\Mvc\Web\Response)

/var/www/html/typo3_src-7.6.14/typo3/sysext/extbase/Classes/Mvc/Dispatcher.php:

00084:             $controller = $this->resolveController($request);
00085:             try {

00086:                 $controller->processRequest($request, $response);

00087:             } catch (\TYPO3\CMS\Extbase\Mvc\Exception\StopActionException $ignoredException) {
00088:             }

10 TYPO3\CMS\Extbase\Mvc\Dispatcher::dispatch(TYPO3\CMS\Extbase\Mvc\Web\Request, TYPO3\CMS\Extbase\Mvc\Web\Response)

/var/www/html/typo3_src-7.6.14/typo3/sysext/extbase/Classes/Mvc/Web/BackendRequestHandler.php:

00030:         /** @var $response \TYPO3\CMS\Extbase\Mvc\ResponseInterface */
00031:         $response = $this->objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Response::class);

00032:         $this->dispatcher->dispatch($request, $response);

00033:         return $response;
00034:     }

9 TYPO3\CMS\Extbase\Mvc\Web\BackendRequestHandler::handleRequest()

/var/www/html/typo3_src-7.6.14/typo3/sysext/extbase/Classes/Core/Bootstrap.php:

00204:         $requestHandler = $requestHandlerResolver->resolveRequestHandler();
00205: 

00206:         $response = $requestHandler->handleRequest();

00207:         // If response is NULL after handling the request we need to stop
00208:         // This happens for instance, when a USER object was converted to a USER_INT

8 TYPO3\CMS\Extbase\Core\Bootstrap::handleRequest()

/var/www/html/typo3_src-7.6.14/typo3/sysext/extbase/Classes/Core/Bootstrap.php:

00191:     {
00192:         $this->initialize($configuration);

00193:         return $this->handleRequest();

00194:     }
00195: 

7 TYPO3\CMS\Extbase\Core\Bootstrap::run("", array)

/var/www/html/typo3_src-7.6.14/typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php:

00212:             // Run Extbase
00213:             $bootstrap = GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Core\Bootstrap::class);

00214:             $content = $bootstrap->run('', $configuration);

00215: 
00216:             $response->getBody()->write($content);

6 TYPO3\CMS\Backend\Http\BackendModuleRequestHandler::dispatchModule("tools_ExtensionmanagerExtensionmanager")

/var/www/html/typo3_src-7.6.14/typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php:

00090:         $moduleName = (string)$this->request->getQueryParams()['M'];
00091:         if ($this->isDispatchedModule($moduleName)) {

00092:             return $this->dispatchModule($moduleName);

00093:         } else {
00094:             // @deprecated: This else path is deprecated and throws deprecations logs at registration time. Can be removed with TYPO3 CMS 8.

5 TYPO3\CMS\Backend\Http\BackendModuleRequestHandler::handleRequest(TYPO3\CMS\Core\Http\ServerRequest)

/var/www/html/typo3_src-7.6.14/typo3/sysext/core/Classes/Core/Bootstrap.php:

00300: 
00301:         // Execute the command which returns a Response object or NULL

00302:         $this->response = $requestHandler->handleRequest($request);

00303:         return $this;
00304:     }

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

/var/www/html/typo3_src-7.6.14/typo3/sysext/backend/Classes/Http/Application.php:

00092:         }
00093: 

00094:         $this->bootstrap->handleRequest($this->request);

00095: 
00096:         if ($execute !== null) {

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

/var/www/html/typo3_src-7.6.14/typo3/index.php:

00018: call_user_func(function () {
00019:     $classLoader = require __DIR__ . '/../vendor/autoload.php';

00020:     (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run();

00021: });

2 {closure}()

1 call_user_func(Closure)

/var/www/html/typo3_src-7.6.14/typo3/index.php:

00019:     $classLoader = require __DIR__ . '/../vendor/autoload.php';
00020:     (new \TYPO3\CMS\Backend\Http\Application($classLoader))->run();

00021: });

#2 Updated by Wouter Wolters almost 3 years ago

  • Status changed from New to Closed

There was an issue within the TER extension which is fixed already. All extensions which were uploaded while that issue was there have that problem. there is nothing you can do except uploading a new version.

The version constraint contains a '' => '' which causes this problem. See also https://forge.typo3.org/issues/77259#note-4

A ext_emconf.php validator is planned but not on a short notice. See https://forge.typo3.org/issues/73015

#3 Updated by Thomas Mayer over 2 years ago

I just updated an instance from 6.2.31 (non-composer install) to 7.6.18 and ran into this issue:

#1439552059: The extension "simulatestatic" has invalid version constraints in conflicts section. Extension key is missing! (More information)

TYPO3\CMS\Core\Package\Exception\InvalidPackageManifestException thrown in file
/path/to/typo3/sysext/core/Classes/Package/PackageManager.php in line 1022.

Note that I never used extension simulatestatic.

Also note that I updated the TER list in 6.2.31 shortly before upgrading.

I get this error every time I call the extension manager.

Everything else still seems to run (backend/frontend), thereby the install tool tells me that all extensions can be loaded.

I worked around it with a

cd typo3conf/ext
rm -R simulatestatic

Now the extension manager runs again.

#4 Updated by Riccardo De Contardi over 2 years ago

would it help to clean the table tx_extensionmanager_domain_model_extension ?

Also available in: Atom PDF