php 8.1 Fatal error on composer run serve
ingen2 opened this issue · comments
ingeiuos commented
What steps will reproduce the problem?
when I ran composer run serve
What is the expected result?
> Composer\Config::disableProcessTimeout
> ./yii serve
PHP Fatal error: Declaration of Yiisoft\Log\Logger::log(mixed $level, Stringable|string $message, array $context = []): void must be compatible with PsrExt\Log\LoggerTrait::log($level, $message, array $context = []) in /var/www/yii3/vendor/yiisoft/log/src/Logger.php on line 146
PHP Stack trace:
PHP 1. {main}() /var/www/yii3/yii:0
PHP 2. Yiisoft\Yii\Runner\Console\ConsoleApplicationRunner->run() /var/www/yii3/yii:17
PHP 3. Yiisoft\Yii\Runner\ApplicationRunner->checkEvents() /var/www/yii3/vendor/yiisoft/yii-runner-console/src/ConsoleApplicationRunner.php:88
PHP 4. Yiisoft\Yii\Runner\ApplicationRunner->getContainer() /var/www/yii3/vendor/yiisoft/yii-runner/src/ApplicationRunner.php:116
PHP 5. Yiisoft\Yii\Runner\ApplicationRunner->createDefaultContainer() /var/www/yii3/vendor/yiisoft/yii-runner/src/ApplicationRunner.php:135
PHP 6. Yiisoft\Di\Container->__construct($config = class Yiisoft\Di\ContainerConfig { private array $definitions = ['Yiisoft\Yii\Debug\Debugger' => [...], 'Symfony\Component\Console\CommandLoader\CommandLoaderInterface' => [...], 'Yiisoft\Yii\Console\Command\Serve' => [...], 'Yiisoft\Yii\Console\Application' => [...], 'Yiisoft\EventDispatcher\Provider\ListenerCollection' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'Yiisoft\Cache\File\FileCache' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'Yiisoft\Router\UrlGeneratorInterface' => [...], 'Yiisoft\Aliases\Aliases' => [...], 'Yiisoft\Cache\CacheInterface' => 'Yiisoft\\Cache\\Cache', 'Psr\SimpleCache\CacheInterface' => 'Yiisoft\\Cache\\ArrayCache', 'Yiisoft\Log\Target\File\FileRotatorInterface' => [...], 'Yiisoft\Log\Target\File\FileTarget' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'Yiisoft\Router\RouteCollectorInterface' => 'Yiisoft\\Router\\RouteCollector', 'Yiisoft\Router\CurrentRoute' => [...], 'Yiisoft\View\View' => [...], 'Yiisoft\Yii\Debug\Collector\ContainerProxyConfig' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'Yiisoft\Yii\Debug\Collector\FilesystemStreamCollector' => [...], 'Yiisoft\Yii\Debug\Storage\StorageInterface' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'Yiisoft\Profiler\ProfilerInterface' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'Yiisoft\Profiler\Target\LogTarget' => [...], 'Yiisoft\Profiler\Target\FileTarget' => [...], 'Yiisoft\Validator\ValidatorInterface' => [...], 'Yiisoft\Validator\RuleHandlerResolverInterface' => 'Yiisoft\\Validator\\RuleHandlerResolver\\SimpleRuleHandlerContainer', 'yii.validator.categorySource' => [...], 'Yiisoft\Yii\Queue\Worker\Worker' => [...], 'Yiisoft\Yii\Queue\Worker\WorkerInterface' => 'Yiisoft\\Yii\\Queue\\Worker\\Worker', 'Yiisoft\Yii\Queue\Cli\LoopInterface' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'Yiisoft\Yii\Queue\QueueFactoryInterface' => 'Yiisoft\\Yii\\Queue\\QueueFactory', 'Yiisoft\Yii\Queue\QueueFactory' => [...], 'Yiisoft\Yii\Queue\QueueInterface' => 'Yiisoft\\Yii\\Queue\\Queue', 'Yiisoft\Yii\Queue\Middleware\Push\MiddlewareFactoryPushInterface' => 'Yiisoft\\Yii\\Queue\\Middleware\\Push\\MiddlewareFactoryPush', 'Yiisoft\Yii\Queue\Middleware\Consume\MiddlewareFactoryConsumeInterface' => 'Yiisoft\\Yii\\Queue\\Middleware\\Consume\\MiddlewareFactoryConsume', 'Yiisoft\Yii\Queue\Middleware\FailureHandling\MiddlewareFactoryFailureInterface' => 'Yiisoft\\Yii\\Queue\\Middleware\\FailureHandling\\MiddlewareFactoryFailure', 'Yiisoft\Yii\Queue\Middleware\Push\PushMiddlewareDispatcher' => [...], 'Yiisoft\Yii\Queue\Middleware\Consume\ConsumeMiddlewareDispatcher' => [...], 'Yiisoft\Yii\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher' => [...], 'Yiisoft\Translator\TranslatorInterface' => [...], 'Psr\EventDispatcher\EventDispatcherInterface' => 'Yiisoft\\EventDispatcher\\Dispatcher\\Dispatcher', 'Psr\EventDispatcher\ListenerProviderInterface' => 'Yiisoft\\EventDispatcher\\Provider\\Provider', 'App\ApplicationParameters' => [...], 'Yiisoft\I18n\Locale' => [...], 'Psr\Log\LoggerInterface' => [...], 'Yiisoft\Router\RouteCollectionInterface' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'translation.app' => [...], 'Yiisoft\Config\ConfigInterface' => class Yiisoft\Config\Config { ... }]; private array $providers = []; private array $tags = []; private bool $validate = TRUE; private array $delegates = []; private bool $useStrictMode = FALSE }) /var/www/yii3/vendor/yiisoft/yii-runner/src/ApplicationRunner.php:198
PHP 7. Yiisoft\Di\Container->addDefinitions($config = ['Yiisoft\Yii\Debug\Debugger' => ['__construct()' => [...]], 'Symfony\Component\Console\CommandLoader\CommandLoaderInterface' => ['class' => 'Yiisoft\\Yii\\Console\\CommandLoader', '__construct()' => [...]], 'Yiisoft\Yii\Console\Command\Serve' => ['class' => 'Yiisoft\\Yii\\Console\\Command\\Serve', '__construct()' => [...]], 'Yiisoft\Yii\Console\Application' => ['__construct()' => [...], 'setCommandLoader()' => [...], 'setDispatcher()' => [...], 'setAutoExit()' => [...], 'addOptions()' => [...]], 'Yiisoft\EventDispatcher\Provider\ListenerCollection' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", public $static = [...]; public $parameter = [...] }, 'Yiisoft\Cache\File\FileCache' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", public $static = [...]; public $parameter = [...] }, 'Yiisoft\Router\UrlGeneratorInterface' => ['class' => 'Yiisoft\\Router\\FastRoute\\UrlGenerator', 'setEncodeRaw()' => [...], 'reset' => class Closure { virtual $closure = "$this->{closure}", ... }], 'Yiisoft\Aliases\Aliases' => ['__construct()' => [...]], 'Yiisoft\Cache\CacheInterface' => 'Yiisoft\\Cache\\Cache', 'Psr\SimpleCache\CacheInterface' => 'Yiisoft\\Cache\\ArrayCache', 'Yiisoft\Log\Target\File\FileRotatorInterface' => ['class' => 'Yiisoft\\Log\\Target\\File\\FileRotator', '__construct()' => [...]], 'Yiisoft\Log\Target\File\FileTarget' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", public $static = [...]; public $parameter = [...] }, 'Yiisoft\Router\RouteCollectorInterface' => 'Yiisoft\\Router\\RouteCollector', 'Yiisoft\Router\CurrentRoute' => ['reset' => class Closure { virtual $closure = "$this->{closure}", ... }], 'Yiisoft\View\View' => ['__construct()' => [...], 'setParameters()' => [...], 'reset' => class Closure { virtual $closure = "$this->{closure}", ... }], 'Yiisoft\Yii\Debug\Collector\ContainerProxyConfig' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", public $static = [...]; public $parameter = [...] }, 'Yiisoft\Yii\Debug\Collector\FilesystemStreamCollector' => ['__construct()' => [...]], 'Yiisoft\Yii\Debug\Storage\StorageInterface' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", public $static = [...]; public $parameter = [...] }, 'Yiisoft\Profiler\ProfilerInterface' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", public $static = [...]; public $parameter = [...] }, 'Yiisoft\Profiler\Target\LogTarget' => ['definition' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'reset' => class Closure { virtual $closure = "$this->{closure}", ... }], 'Yiisoft\Profiler\Target\FileTarget' => ['definition' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'reset' => class Closure { virtual $closure = "$this->{closure}", ... }], 'Yiisoft\Validator\ValidatorInterface' => ['class' => 'Yiisoft\\Validator\\Validator', '__construct()' => [...]], 'Yiisoft\Validator\RuleHandlerResolverInterface' => 'Yiisoft\\Validator\\RuleHandlerResolver\\SimpleRuleHandlerContainer', 'yii.validator.categorySource' => ['definition' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'tags' => [...]], 'Yiisoft\Yii\Queue\Worker\Worker' => ['class' => 'Yiisoft\\Yii\\Queue\\Worker\\Worker', '__construct()' => [...]], 'Yiisoft\Yii\Queue\Worker\WorkerInterface' => 'Yiisoft\\Yii\\Queue\\Worker\\Worker', 'Yiisoft\Yii\Queue\Cli\LoopInterface' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", public $parameter = [...] }, 'Yiisoft\Yii\Queue\QueueFactoryInterface' => 'Yiisoft\\Yii\\Queue\\QueueFactory', 'Yiisoft\Yii\Queue\QueueFactory' => ['__construct()' => [...]], 'Yiisoft\Yii\Queue\QueueInterface' => 'Yiisoft\\Yii\\Queue\\Queue', 'Yiisoft\Yii\Queue\Middleware\Push\MiddlewareFactoryPushInterface' => 'Yiisoft\\Yii\\Queue\\Middleware\\Push\\MiddlewareFactoryPush', 'Yiisoft\Yii\Queue\Middleware\Consume\MiddlewareFactoryConsumeInterface' => 'Yiisoft\\Yii\\Queue\\Middleware\\Consume\\MiddlewareFactoryConsume', 'Yiisoft\Yii\Queue\Middleware\FailureHandling\MiddlewareFactoryFailureInterface' => 'Yiisoft\\Yii\\Queue\\Middleware\\FailureHandling\\MiddlewareFactoryFailure', 'Yiisoft\Yii\Queue\Middleware\Push\PushMiddlewareDispatcher' => ['__construct()' => [...]], 'Yiisoft\Yii\Queue\Middleware\Consume\ConsumeMiddlewareDispatcher' => ['__construct()' => [...]], 'Yiisoft\Yii\Queue\Middleware\FailureHandling\FailureMiddlewareDispatcher' => ['__construct()' => [...]], 'Yiisoft\Translator\TranslatorInterface' => ['class' => 'Yiisoft\\Translator\\Translator', '__construct()' => [...], 'addCategorySources()' => [...], 'reset' => class Closure { virtual $closure = "$this->{closure}", ... }], 'Psr\EventDispatcher\EventDispatcherInterface' => 'Yiisoft\\EventDispatcher\\Dispatcher\\Dispatcher', 'Psr\EventDispatcher\ListenerProviderInterface' => 'Yiisoft\\EventDispatcher\\Provider\\Provider', 'App\ApplicationParameters' => ['class' => 'App\\ApplicationParameters', 'charset()' => [...], 'name()' => [...]], 'Yiisoft\I18n\Locale' => ['class' => 'Yiisoft\\I18n\\Locale', '__construct()' => [...]], 'Psr\Log\LoggerInterface' => ['class' => 'Yiisoft\\Log\\Logger', '__construct()' => [...]], 'Yiisoft\Router\RouteCollectionInterface' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", public $static = [...]; public $parameter = [...] }, 'translation.app' => ['definition' => class Closure { virtual $closure = "Yiisoft\Config\Config::{closure}", ... }, 'tags' => [...]], 'Yiisoft\Config\ConfigInterface' => class Yiisoft\Config\Config { private Yiisoft\Config\Merger $merger = class Yiisoft\Config\Merger { ... }; private Yiisoft\Config\FilesExtractor $filesExtractor = class Yiisoft\Config\FilesExtractor { ... }; private bool $isBuildingParams = FALSE; private array $build = [...]; private ?string $paramsGroup = 'params-console' }]) /var/www/yii3/vendor/yiisoft/di/src/Container.php:88
PHP 8. Yiisoft\Di\Container->addDefinition($id = 'Psr\\Log\\LoggerInterface', $definition = ['class' => 'Yiisoft\\Log\\Logger', '__construct()' => ['targets' => [...]]]) /var/www/yii3/vendor/yiisoft/di/src/Container.php:244
PHP 9. Yiisoft\Di\Container->validateDefinition($definition = ['class' => 'Yiisoft\\Log\\Logger', '__construct()' => ['targets' => [...]], 'methodsAndProperties' => [], 'isPreparedArrayDefinitionData' => TRUE], $id = 'Psr\\Log\\LoggerInterface') /var/www/yii3/vendor/yiisoft/di/src/Container.php:205
PHP 10. Yiisoft\Definitions\Helpers\DefinitionValidator::validate($definition = ['class' => 'Yiisoft\\Log\\Logger', '__construct()' => ['targets' => [...]]], $id = 'Psr\\Log\\LoggerInterface') /var/www/yii3/vendor/yiisoft/di/src/Container.php:320
PHP 11. Yiisoft\Definitions\Helpers\DefinitionValidator::validateArrayDefinition($definition = ['class' => 'Yiisoft\\Log\\Logger', '__construct()' => ['targets' => [...]]], $id = 'Psr\\Log\\LoggerInterface') /var/www/yii3/vendor/yiisoft/definitions/src/Helpers/DefinitionValidator.php:52
PHP 12. ReflectionClass->__construct($objectOrClass = 'Yiisoft\\Log\\Logger') /var/www/yii3/vendor/yiisoft/definitions/src/Helpers/DefinitionValidator.php:77
PHP 13. Composer\Autoload\ClassLoader->loadClass($class = 'Yiisoft\\Log\\Logger') /var/www/yii3/vendor/yiisoft/definitions/src/Helpers/DefinitionValidator.php:77
PHP 14. Composer\Autoload\includeFile($file = '/var/www/yii3/vendor/composer/../yiisoft/log/src/Logger.php') /var/www/yii3/vendor/composer/ClassLoader.php:428
PHP 15. include() /var/www/yii3/vendor/composer/ClassLoader.php:571
Script ./yii serve handling the serve event returned with error code 255
What do you get instead?
I using php 8.0 And problem solved
Additional info
Q | A |
---|---|
Version | 3 |
PHP version | 8.1 |
Operating system | ubuntu 20.04 |
Sergei Predvoditelev commented
Seems, you use PSR extension that contain old version of PSR logger interface. Yii app support psr/log version of ^2.0|^3.0
only.