Skip to content

bug: php artisan optimize breaking the laravel container #151

@gvieira18

Description

@gvieira18

Description

When we deploy the website or bot, the deployment script uses the "php artisan optimize" command to optimize the files for the production build. However, the entire container breaks after that, preventing us from using any artisan commands or providing files for the web.

After doing a quick analysis of this error, I determined that there is an anomaly in the source/third-party packages of our discord-bot module (app-modules/bot-discord). I confirmed this by removing the package installation from composer.json, since we're using the modular packages (InterNACHI/modular), and the optimization command worked as desired.


Examples

First optimize command

gvieira in he4rt-bot-api on 3.x $ php artisan optimize -vvv

   INFO  Caching framework bootstrap, configuration, and metadata.  

  config .............................................................................................................................. 15.70ms DONE
  events ............................................................................................................................... 0.78ms DONE
  routes ............................................................................................................................... 3.22ms FAIL

   Illuminate\Contracts\Container\BindingResolutionException 

  Target class [files] does not exist.

  at vendor/laravel/framework/src/Illuminate/Container/Container.php:1124
    1120▕ 
    1121▕         try {
    1122▕             $reflector = new ReflectionClass($concrete);
    1123▕         } catch (ReflectionException $e) {
  ➜ 1124▕             throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
    1125▕         }
    1126▕ 
    1127▕         // If the type is not instantiable, the developer is attempting to resolve
    1128▕         // an abstract type such as an Interface or Abstract Class and there is

  1   vendor/laravel/framework/src/Illuminate/Container/Container.php:1122
      ReflectionException::("Class "files" does not exist")

  2   vendor/laravel/framework/src/Illuminate/Container/Container.php:1122
      ReflectionClass::__construct()

  3   vendor/laravel/framework/src/Illuminate/Container/Container.php:933
      Illuminate\Container\Container::build()

  4   vendor/laravel/framework/src/Illuminate/Foundation/Application.php:1078
      Illuminate\Container\Container::resolve()

  5   vendor/laravel/framework/src/Illuminate/Container/Container.php:864
      Illuminate\Foundation\Application::resolve()

  6   vendor/laravel/framework/src/Illuminate/Foundation/Application.php:1058
      Illuminate\Container\Container::make()

  7   vendor/laravel/framework/src/Illuminate/Container/Container.php:1801
      Illuminate\Foundation\Application::make()

  8   vendor/laravel/framework/src/Illuminate/Foundation/Application.php:1358
      Illuminate\Container\Container::offsetGet()

  9   vendor/internachi/modular/src/Support/ModularEventServiceProvider.php:38
      Illuminate\Foundation\Application::eventsAreCached()

  10  vendor/internachi/modular/src/Support/ModularEventServiceProvider.php:21
      InterNACHI\Modular\Support\ModularEventServiceProvider::getEvents()

  11  vendor/laravel/framework/src/Illuminate/Foundation/Application.php:1194
      InterNACHI\Modular\Support\ModularEventServiceProvider::{closure:InterNACHI\Modular\Support\ModularEventServiceProvider::register():20}()

  12  vendor/laravel/framework/src/Illuminate/Foundation/Application.php:1129
      Illuminate\Foundation\Application::fireAppCallbacks()

  13  vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php:17
      Illuminate\Foundation\Application::boot()

  14  vendor/laravel/framework/src/Illuminate/Foundation/Application.php:342
      Illuminate\Foundation\Bootstrap\BootProviders::bootstrap()

  15  vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:484
      Illuminate\Foundation\Application::bootstrapWith()

  16  vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php:94
      Illuminate\Foundation\Console\Kernel::bootstrap()

  17  vendor/laravel/framework/src/Illuminate/Support/helpers.php:390
      Illuminate\Foundation\Console\RouteCacheCommand::{closure:Illuminate\Foundation\Console\RouteCacheCommand::getFreshApplication():93}()
  18  vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php:93

  19  vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php:80
      Illuminate\Foundation\Console\RouteCacheCommand::getFreshApplication()

  20  vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php:56
      Illuminate\Foundation\Console\RouteCacheCommand::getFreshApplicationRoutes()

  21  vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
      Illuminate\Foundation\Console\RouteCacheCommand::handle()

  22  vendor/laravel/framework/src/Illuminate/Container/Util.php:43
      Illuminate\Container\BoundMethod::{closure:Illuminate\Container\BoundMethod::call():35}()

  23  vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:96
      Illuminate\Container\Util::unwrapIfClosure()

  24  vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:35
      Illuminate\Container\BoundMethod::callBoundMethod()

  25  vendor/laravel/framework/src/Illuminate/Container/Container.php:799
      Illuminate\Container\BoundMethod::call()

  26  vendor/laravel/framework/src/Illuminate/Console/Command.php:211
      Illuminate\Container\Container::call()

  27  vendor/symfony/console/Command/Command.php:341
      Illuminate\Console\Command::execute()

  28  vendor/laravel/framework/src/Illuminate/Console/Command.php:180
      Symfony\Component\Console\Command\Command::run()

  29  vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php:68
      Illuminate\Console\Command::run()

  30  vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php:41
      Illuminate\Console\Command::runCommand()

  31  vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php:53
      Illuminate\Console\Command::callSilent()

  32  vendor/laravel/framework/src/Illuminate/Foundation/Console/OptimizeCommand.php:48
      Illuminate\Console\Command::callSilently()

  33  vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php:41
      Illuminate\Foundation\Console\OptimizeCommand::{closure:Illuminate\Foundation\Console\OptimizeCommand::handle():48}()

  34  vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php:59
      Illuminate\Console\View\Components\Task::render()

  35  vendor/laravel/framework/src/Illuminate/Foundation/Console/OptimizeCommand.php:48
      Illuminate\Console\View\Components\Factory::__call()

  36  vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
      Illuminate\Foundation\Console\OptimizeCommand::handle()

  37  vendor/laravel/framework/src/Illuminate/Container/Util.php:43
      Illuminate\Container\BoundMethod::{closure:Illuminate\Container\BoundMethod::call():35}()

  38  vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:96
      Illuminate\Container\Util::unwrapIfClosure()

  39  vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:35
      Illuminate\Container\BoundMethod::callBoundMethod()

  40  vendor/laravel/framework/src/Illuminate/Container/Container.php:799
      Illuminate\Container\BoundMethod::call()

  41  vendor/laravel/framework/src/Illuminate/Console/Command.php:211
      Illuminate\Container\Container::call()

  42  vendor/symfony/console/Command/Command.php:341
      Illuminate\Console\Command::execute()

  43  vendor/laravel/framework/src/Illuminate/Console/Command.php:180
      Symfony\Component\Console\Command\Command::run()

  44  vendor/symfony/console/Application.php:1102
      Illuminate\Console\Command::run()

  45  vendor/symfony/console/Application.php:356
      Symfony\Component\Console\Application::doRunCommand()

  46  vendor/symfony/console/Application.php:195
      Symfony\Component\Console\Application::doRun()

  47  vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:197
      Symfony\Component\Console\Application::run()

  48  vendor/laravel/framework/src/Illuminate/Foundation/Application.php:1235
      Illuminate\Foundation\Console\Kernel::handle()

  49  artisan:16
      Illuminate\Foundation\Application::handleCommand()

After broke the container

gvieira in he4rt-bot-api on 3.x $ php artisan about -vvv   

   Illuminate\Contracts\Container\BindingResolutionException 

  Target class [files] does not exist.

  at vendor/laravel/framework/src/Illuminate/Container/Container.php:1124
    1120▕ 
    1121▕         try {
    1122▕             $reflector = new ReflectionClass($concrete);
    1123▕         } catch (ReflectionException $e) {
  ➜ 1124▕             throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
    1125▕         }
    1126▕ 
    1127▕         // If the type is not instantiable, the developer is attempting to resolve
    1128▕         // an abstract type such as an Interface or Abstract Class and there is

      +17 vendor frames 

  18  artisan:16
      Illuminate\Foundation\Application::handleCommand()

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions