Lumen 5.7.5 перерывы Обязательное разрешение - PullRequest
0 голосов
/ 15 ноября 2018

UPDATE

См. Мой ответ

Lumen Версия: 5.7.5

Версия PHP: 7.2

Я только что сделал обновление с 5,5 до 5,6 до 5,7 до 5,7,4, все работает, как и ожидалось, как только я вытащил 5.7,5. PHP Artisan дает мне

"Цель [Illuminate \ Contracts \ Debug \ ExceptionHandler] не может быть создана."

Пример:

PHP ремесленник

В строке Container.php 945:

Цель [Illuminate \ Contracts \ Debug \ ExceptionHandler] не может быть создана. Действия по воспроизведению: повышение с 5,5 до 5,6 до 5,7 и, наконец, с 5,7,4 до 5,7,5.

Я проверяю все изменения кода и что может быть причиной этого.

Может быть, у вас, ребята, есть идея?

Вот трассировка стека:

[2018-11-15 15:30:50] local.ERROR: Illuminate\Contracts\Container\BindingResolutionException: Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable. in /project/vendor/illuminate/container/Container.php:945
Stack trace:
0 project/vendor/illuminate/container/Container.php(785): Illuminate\Container\Container->notInstantiable('Illuminate\\Cont...')
1 project/vendor/illuminate/container/Container.php(658): Illuminate\Container\Container->build('Illuminate\\Cont...')
2 project/vendor/illuminate/container/Container.php(609): Illuminate\Container\Container->resolve('Illuminate\\Cont...', Array)
3 project/vendor/laravel/lumen-framework/src/Application.php(260): Illuminate\Container\Container->make('Illuminate\\Cont...', Array)
4 project/vendor/illuminate/container/Container.php(1222): Laravel\Lumen\Application->make('Illuminate\\Cont...')
5 project/vendor/laravel/lumen-framework/src/Console/Kernel.php(223): Illuminate\Container\Container->offsetGet('Illuminate\\Cont...')
#6 project/vendor/laravel/lumen-framework/src/Console/Kernel.php(117): Laravel\Lumen\Console\Kernel->reportException(Object(Illuminate\Contracts\Container\BindingResolutionException))
#7 project/artisan(43): Laravel\Lumen\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#8 {main} {"exception":"[object] (Illuminate\\Contracts\\Container\\BindingResolutionException(code: 0): Target [Illuminate\\Contracts\\Debug\\ExceptionHandler] is not instantiable. at project/vendor/illuminate/container/Container.php:945)
#[stacktrace]
#0 project/vendor/illuminate/container/Container.php(785): Illuminate\\Container\\Container->notInstantiable('Illuminate\\\\Cont...')
#1 project/vendor/illuminate/container/Container.php(658): Illuminate\\Container\\Container->build('Illuminate\\\\Cont...')
#2 project/vendor/illuminate/container/Container.php(609): Illuminate\\Container\\Container->resolve('Illuminate\\\\Cont...', Array)
#3 project/vendor/laravel/lumen-framework/src/Application.php(260): Illuminate\\Container\\Container->make('Illuminate\\\\Cont...', Array)
#4 project/vendor/illuminate/container/Container.php(1222): Laravel\\Lumen\\Application->make('Illuminate\\\\Cont...')
#5 project/vendor/laravel/lumen-framework/src/Console/Kernel.php(223): Illuminate\\Container\\Container->offsetGet('Illuminate\\\\Cont...')
#6 project/vendor/laravel/lumen-framework/src/Console/Kernel.php(117): Laravel\\Lumen\\Console\\Kernel->reportException(Object(Illuminate\\Contracts\\Container\\BindingResolutionException))
#7 project/artisan(43): Laravel\\Lumen\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#8 {main}

Поэтому я создал проблему на Github:

https://github.com/laravel/lumen-framework/issues/849

1 Ответ

0 голосов
/ 19 ноября 2018

В Lumen V5.7.6 было выпущено исправление.

Это в основном сводилось к перезаписи пути во время начальной загрузки.

В application.php в Lumen вместо пути к классам использовалась команда static:class.

Это было изменено на self:class, чтобы отразить правильный текущий путь.

Это коммит, который сломал его

Это коммит, который его исправляет

В некоторых случаях вам может потребоваться перезаписать путь к базовому приложению, поэтому вы можете добавить псевдоним при перезаписи пути к базовому приложению, например, в app.php при загрузке приложения.

, например

$app->alias(overwrite\path\Application::class, \Laravel\Lumen\Application::class);

Надеюсь, это поможет кому-то, хотя новый коммит должен исправить любую ручную перезапись, чтобы отразить правильный путь к классу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...