Skip to content

Opcache fails because of uncaught Preloader exception #38693

@rgeraads

Description

@rgeraads

Symfony version(s) affected: 5.1.7

Description
I couldn't manage to get opcache working for a small application that uses api-platform. The only thing that I got was php exiting with error code 70.

After some digging I found the following:
Preloader catches \ReflectionException, but in some cases a parent exception can be thrown.
https://github.com/symfony/symfony/blob/5.x/src/Symfony/Component/DependencyInjection/Dumper/Preloader.php#L109-L111

I added a catch (\Throwable $e) { var_dump($e) } and got the following when trying to load Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener:

object(Error)#19 (7) {
  ["message":protected]=>
  string(94) "Interface 'Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface' not found"
  ["string":"Error":private]=>
  string(0) ""
  ["code":protected]=>
  int(0)
  ["file":protected]=>
  string(78) "/app/vendor/symfony/security-core/Authorization/ExpressionLanguageProvider.php"
  ["line":protected]=>
  int(22)

Stacktrace:

#0 /app/vendor/composer/ClassLoader.php(444): include()
#1 /app/vendor/composer/ClassLoader.php(322): Composer\Autoload\includeFile('/app/vendor/com...')
#2 [internal function]: Composer\Autoload\ClassLoader->loadClass('Symfony\\Compone...')
#3 [internal function]: spl_autoload_call('Symfony\\Compone...')
#4 /app/vendor/symfony/security-core/Authorization/ExpressionLanguage.php(18): class_exists('Symfony\\Compone...')
#5 /app/vendor/composer/ClassLoader.php(444): include('/app/vendor/sym...')
#6 /app/vendor/composer/ClassLoader.php(322): Composer\Autoload\includeFile('/app/vendor/com...')
#7 [internal function]: Composer\Autoload\ClassLoader->loadClass('Symfony\\Compone...')
#8 /app/vendor/sensio/framework-extra-bundle/src/Security/ExpressionLanguage.php(21): spl_autoload_call('Symfony\\Compone...')
#9 /app/vendor/composer/ClassLoader.php(444): include('/app/vendor/sen...')
#10 /app/vendor/composer/ClassLoader.php(322): Composer\Autoload\includeFile('/app/vendor/com...')
#11 [internal function]: Composer\Autoload\ClassLoader->loadClass('Sensio\\Bundle\\F...')
#12 [internal function]: spl_autoload_call('Sensio\\Bundle\\F...')
#13 /app/vendor/symfony/dependency-injection/Dumper/Preloader.php(84): ReflectionClass->__construct('Sensio\\Bundle\\F...')
#14 /app/vendor/symfony/dependency-injection/Dumper/Preloader.php(128): Symfony\Component\DependencyInjection\Dumper\Preloader::doPreload('Sensio\\Bundle\\F...', Array)
#15 /app/vendor/symfony/dependency-injection/Dumper/Preloader.php(109): Symfony\Component\DependencyInjection\Dumper\Preloader::preloadType(Object(ReflectionNamedType), Array)
#16 /app/vendor/symfony/dependency-injection/Dumper/Preloader.php(65): Symfony\Component\DependencyInjection\Dumper\Preloader::doPreload('Sensio\\Bundle\\F...', Array)
#17 /app/var/cache/prod/App_KernelProdContainer.preload.php(389): Symfony\Component\DependencyInjection\Dumper\Preloader::preload(Array)
#18 /app/config/preload.php(4): require('/app/var/cache/...')
#19 {main}"

debug_print_backtrace:

#0  Symfony\Component\DependencyInjection\Dumper\Preloader::doPreload(Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage, Array ([Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener] => 1,[Sensio\Bundle\FrameworkExtraBundle\Request\ArgumentNameConverter] => 1,[Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactoryInterface] => 1,[Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent] => 1,[Symfony\Component\HttpKernel\HttpKernelInterface] => 1,[Symfony\Component\HttpFoundation\Request] => 1,[Symfony\Component\HttpFoundation\Session\SessionInterface] => 1,[Symfony\Component\HttpFoundation\Session\SessionBagInterface] => 1,[Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage] => 1)) called at [/app/vendor/symfony/dependency-injection/Dumper/Preloader.php:128]
#1  Symfony\Component\DependencyInjection\Dumper\Preloader::preloadType(ReflectionNamedType Object (), Array ([Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener] => 1,[Sensio\Bundle\FrameworkExtraBundle\Request\ArgumentNameConverter] => 1,[Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactoryInterface] => 1,[Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent] => 1,[Symfony\Component\HttpKernel\HttpKernelInterface] => 1,[Symfony\Component\HttpFoundation\Request] => 1,[Symfony\Component\HttpFoundation\Session\SessionInterface] => 1,[Symfony\Component\HttpFoundation\Session\SessionBagInterface] => 1,[Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage] => 1)) called at [/app/vendor/symfony/dependency-injection/Dumper/Preloader.php:109]
#2  Symfony\Component\DependencyInjection\Dumper\Preloader::doPreload(Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener, Array ([Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener] => 1,[Sensio\Bundle\FrameworkExtraBundle\Request\ArgumentNameConverter] => 1,[Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactoryInterface] => 1,[Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent] => 1,[Symfony\Component\HttpKernel\HttpKernelInterface] => 1,[Symfony\Component\HttpFoundation\Request] => 1,[Symfony\Component\HttpFoundation\Session\SessionInterface] => 1,[Symfony\Component\HttpFoundation\Session\SessionBagInterface] => 1,[Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage] => 1)) called at [/app/vendor/symfony/dependency-injection/Dumper/Preloader.php:65]
#3  Symfony\Component\DependencyInjection\Dumper\Preloader::preload(Array ([0] => Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener)) called at [/app/var/cache/prod/App_KernelProdContainer.preload.php:389]
#4  require(/app/var/cache/prod/App_KernelProdContainer.preload.php) called at [/app/config/preload.php:4]

Possible Solution
Change catch (\ReflectionException $e) to catch (\Throwable $e)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions