Ankündigung

Einklappen
Keine Ankündigung bisher.

Composer installiert doctrine module für laminas nicht richtig

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Composer installiert doctrine module für laminas nicht richtig

    Hallo zusammen,

    ich verwende in allen Laminas MVC Anwendungen Doctrine via https://github.com/doctrine/DoctrineModule bzw. https://github.com/doctrine/DoctrineORMModule

    Seit dem letzten "composer up" begrüßt mich allerdings eine dieser Anwendungen mit:

    Fatal error: Uncaught InvalidArgumentException: Driver with type "Doctrine\Common\Persistence\Mapping\Driver\Mappin gDriverChain" could not be found in /var/www/cardrepository/vendor/doctrine/doctrine-module/src/DoctrineModule/Service/DriverFactory.php:69 Stack trace:
    #0 /var/www/cardrepository/vendor/doctrine/doctrine-module/src/DoctrineModule/Service/DriverFactory.php(39): DoctrineModule\Service\DriverFactory->createDriver(Object(Laminas\ServiceManager\Serv ic eManager), Object(DoctrineModule\Options\Driver))
    #1 /var/www/cardrepository/vendor/doctrine/doctrine-module/src/DoctrineModule/Service/DriverFactory.php(49): DoctrineModule\Service\DriverFactory->__invoke(Object(Laminas\ServiceManager\ServiceM an ager), 'Doctrine\\Persis...')
    #2 /var/www/cardrepository/vendor/doctrine/doctrine-module/src/DoctrineModule/ServiceFactory/AbstractDoctrineServiceFactory.php(43): DoctrineModule\Service\DriverFactory->createService(Object(Laminas\ServiceManager\Ser vi ceManager))
    #3 /var/www/cardrepository/vendor/laminas/laminas-servicemanager/src/ServiceManager.php(765): DoctrineModule\ServiceFactory\AbstractDoctrineServ iceFactory->__invoke(Object(Laminas\ServiceManager\ServiceM an ager), 'doctrine.driver...', NULL)
    #4 /var/www/cardrepository/vendor/laminas/laminas-servicemanager/src/ServiceManager.php(201): Laminas\ServiceManager\ServiceManager->doCreate('doctrine.driver...')
    #5 /var/www/cardrepository/vendor/doctrine/doctrine-orm-module/src/DoctrineORMModule/Service/ConfigurationFactory.php(64): Laminas\ServiceManager\ServiceManager->get('doctrine.driver...')
    #6 /var/www/cardrepository/vendor/doctrine/doctrine-orm-module/src/DoctrineORMModule/Service/ConfigurationFactory.php(16: DoctrineORMModule\Service\ConfigurationFactory->__invoke(Object(Laminas\ServiceManager\ServiceM an ager), 'Doctrine\\ORM\\Co...')
    #7 /var/www/cardrepository/vendor/doctrine/doctrine-module/src/DoctrineModule/ServiceFactory/AbstractDoctrineServiceFactory.php(43): DoctrineORMModule\Service\ConfigurationFactory->createService(Object(Laminas\ServiceManager\Ser vi ceManager))
    #8 in /var/www/cardrepository/vendor/laminas/laminas-servicemanager/src/ServiceManager.php on line 772
    (Das Leerzeichen in den Klassennamen und den Smiley macht der Editor hier im Forum!)

    Eine Prüfung des Vendor Ordners mit einer anderen funktionierenden Laminas MVC / Doctrine Anwendung hat ergeben, dass jede Menge Doctrine Klassen fehlen:

    Defekte Anwendung:

    Code:
    # grep -r 'Doctrine\\Common\\Persistence\\Mapping\\Driver' /var/www/cardrepository/vendor/
    /var/www/cardrepository/vendor/doctrine/doctrine-orm-module/config/module.config.php:use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain;
    /var/www/cardrepository/vendor/doctrine/doctrine-orm-module/test/DoctrineORMModuleTest/Service/ConfigurationFactoryTest.php:            $this->createMock(\Doctrine\Common\Persistence\Mapping\Driver\MappingDriver::class)
    /var/www/cardrepository/vendor/doctrine/doctrine-orm-module/test/DoctrineORMModuleTest/Service/DBALConnectionFactoryTest.php:use Doctrine\Common\Persistence\Mapping\Driver\MappingDriver;
    vs. funktionierende Anwendung:

    Code:
    # grep -r 'Doctrine\\Common\\Persistence\\Mapping\\Driver' /var/www/fbb/vendor/
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php:namespace Doctrine\Common\Persistence\Mapping\Driver;
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/Driver/DefaultFileLocator.php:namespace Doctrine\Common\Persistence\Mapping\Driver;
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/Driver/FileDriver.php:namespace Doctrine\Common\Persistence\Mapping\Driver;
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/Driver/FileLocator.php:namespace Doctrine\Common\Persistence\Mapping\Driver;
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriver.php:namespace Doctrine\Common\Persistence\Mapping\Driver;
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php:namespace Doctrine\Common\Persistence\Mapping\Driver;
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/Driver/PHPDriver.php:namespace Doctrine\Common\Persistence\Mapping\Driver;
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/Driver/StaticPHPDriver.php:namespace Doctrine\Common\Persistence\Mapping\Driver;
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Common/Persistence/Mapping/Driver/SymfonyFileLocator.php:namespace Doctrine\Common\Persistence\Mapping\Driver;
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/Driver/AnnotationDriver.php:class_exists(\Doctrine\Common\Persistence\Mapping\Driver\AnnotationDriver::class);
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/Driver/DefaultFileLocator.php:class_exists(\Doctrine\Common\Persistence\Mapping\Driver\DefaultFileLocator::class);
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/Driver/FileDriver.php:class_exists(\Doctrine\Common\Persistence\Mapping\Driver\FileDriver::class);
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/Driver/FileLocator.php:interface_exists(\Doctrine\Common\Persistence\Mapping\Driver\FileLocator::class);
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/Driver/MappingDriver.php:interface_exists(\Doctrine\Common\Persistence\Mapping\Driver\MappingDriver::class);
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/Driver/MappingDriverChain.php:class_exists(\Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain::class);
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/Driver/PHPDriver.php:class_exists(\Doctrine\Common\Persistence\Mapping\Driver\PHPDriver::class);
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/Driver/StaticPHPDriver.php:class_exists(\Doctrine\Common\Persistence\Mapping\Driver\StaticPHPDriver::class);
    /var/www/fbb/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/Driver/SymfonyFileLocator.php:class_exists(\Doctrine\Common\Persistence\Mapping\Driver\SymfonyFileLocator::class);
    /var/www/fbb/vendor/doctrine/doctrine-orm-module/config/module.config.php:use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain;
    /var/www/fbb/vendor/doctrine/doctrine-orm-module/test/DoctrineORMModuleTest/Service/ConfigurationFactoryTest.php:            $this->createMock(\Doctrine\Common\Persistence\Mapping\Driver\MappingDriver::class)
    /var/www/fbb/vendor/doctrine/doctrine-orm-module/test/DoctrineORMModuleTest/Service/DBALConnectionFactoryTest.php:use Doctrine\Common\Persistence\Mapping\Driver\MappingDriver;
    Die Composer.json sieht (in allen Anwendungen) hinsichtlich Doctrine wie folgt aus:
    Code:
            "doctrine/doctrine-module": "^4.0",
            "doctrine/doctrine-orm-module": "^3.0",
    Eingebunden ist Doctrine in beiden Anwendungen identisch über die Laminas Config Files so wie es bei Github beschrieben ist.

    Es gbt auch keine neuere Version von den beiden Modulen. Und ich verstehe halt nicht, warum die selben Module in anderen Anwendungen noch problemlos laufen.
    Wenn ich in der funktionierenden Anwendung ein "composer up" mache löscht er mir die Doctrine Klassen auch nicht weg. Ich habe auch nirgendwo im Code ausserhalb von /vendor die genannte Klasse direkt eingebunden.

    Hat jemand eine Idee? Bin echt ratlos. Danke
    sorry, shift-taste kaputt

  • #2
    Hmm, also in doctrine/common sind die Klassen wirklich nicht mehr dabei,
    aber in doctrine/DoctrineORMModule wird noch darauf zugegriffen.
    Das in der module.config der App wieder zu überschreiben mit dem AnnotationDriver geht auch nicht.

    Wenn ich ein Downgrade auf "doctrine/doctrine-module": "4.0.2" mache funktioniert wieder alles.
    Ich glaube, da haben ein paar Doctrine Entwickler gepennt
    Zumindest war ich bisher immer davon ausgegangen, dass es in minor versions keine breaking changes gibt.
    sorry, shift-taste kaputt

    Kommentar

    Lädt...
    X