aimeos / aimeos-laravel

Laravel ecommerce package for ultra fast online shops, scalable marketplaces, complex B2B applications and #gigacommerce
https://aimeos.org/Laravel
MIT License
7.2k stars 1.05k forks source link

Cannot use a scalar value as an array #365

Closed profclems closed 3 years ago

profclems commented 3 years ago

Environment

  1. Version (e.g. 2017.10): 2020.x
  2. Operating system (Linux, Mac, Windows): Linux

Describe the bug Setting up aimeos with php artisan aimeos:setup -vvv in a PHP8 environment returns:

Migrate mshop_index_text table engine to InnoDB                       OK
Update "siteid" columns                                               
  Checking table mshop_attribute_type                                 OK
  Checking table mshop_attribute_list_type                            OK
... [truncated]

  Cannot use a scalar value as an array

  at vendor/aimeos/aimeos-core/lib/mshoplib/src/MShop/Customer/Manager/Standard.php:285
    281▕ 
    282▕                $level = \Aimeos\MShop\Locale\Manager\Base::SITE_ALL;
    283▕                $level = $context->getConfig()->get( 'mshop/customer/manager/sitemode', $level );
    284▕ 
  ➜ 285▕         $this->searchConfig['customer:has'] = [];
    286▕                $this->searchConfig['customer:has']['function'] = function( &$source, array $params ) use ( $level ) {
    287▕ 
    288▕                        array_walk_recursive( $params, function( &$v ) {
    289▕                                $v = trim( $v, '\'' );

  1   ext/ai-laravel/lib/custom/src/MShop/Customer/Manager/Laravel.php:271
      Aimeos\MShop\Customer\Manager\Standard::__construct()

  2   vendor/aimeos/aimeos-core/lib/mshoplib/src/MShop/Common/Factory/Base.php:151
      Aimeos\MShop\Customer\Manager\Laravel::__construct()

  3   vendor/aimeos/aimeos-core/lib/mshoplib/src/MShop/Customer/Manager/Factory.php:80
      Aimeos\MShop\Common\Factory\Base::createManager()

  4   vendor/aimeos/aimeos-core/lib/mshoplib/src/MShop.php:91
      Aimeos\MShop\Customer\Manager\Factory::create()

  5   vendor/aimeos/aimeos-core/lib/mshoplib/src/MShop.php:91
      call_user_func_array()

  6   vendor/aimeos/aimeos-core/lib/mshoplib/setup/MShopAddTypeData.php:101
      Aimeos\MShop::create()

  7   vendor/aimeos/aimeos-core/lib/mshoplib/setup/MShopAddTypeData.php:67
      Aimeos\MW\Setup\Task\MShopAddTypeData::getDomainManager()

  8   vendor/aimeos/aimeos-core/lib/mshoplib/setup/MShopAddTypeData.php:57
      Aimeos\MW\Setup\Task\MShopAddTypeData::processFile()

  9   vendor/aimeos/aimeos-core/lib/mshoplib/setup/default/MShopAddTypeDataDefault.php:34
      Aimeos\MW\Setup\Task\MShopAddTypeData::process()

  10  vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Setup/Manager/Multiple.php:114
      Aimeos\MW\Setup\Task\MShopAddTypeDataDefault::migrate()

  11  vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Setup/Manager/Multiple.php:110
      Aimeos\MW\Setup\Manager\Multiple::migrateTasks()

  12  vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Setup/Manager/Multiple.php:110
      Aimeos\MW\Setup\Manager\Multiple::migrateTasks()

  13  vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Setup/Manager/Multiple.php:110
      Aimeos\MW\Setup\Manager\Multiple::migrateTasks()

  14  vendor/aimeos/aimeos-core/lib/mwlib/src/MW/Setup/Manager/Multiple.php:82
      Aimeos\MW\Setup\Manager\Multiple::migrateTasks()

  15  vendor/aimeos/aimeos-laravel/src/Aimeos/Shop/Command/SetupCommand.php:72
      Aimeos\MW\Setup\Manager\Multiple::migrate()

  16  vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
      Aimeos\Shop\Command\SetupCommand::handle()

  17  vendor/laravel/framework/src/Illuminate/Container/Util.php:40
      Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()

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

  19  vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:37
      Illuminate\Container\BoundMethod::callBoundMethod()

  20  vendor/laravel/framework/src/Illuminate/Container/Container.php:610
      Illuminate\Container\BoundMethod::call()

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

  22  vendor/symfony/console/Command/Command.php:256
      Illuminate\Console\Command::execute()

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

  24  vendor/symfony/console/Application.php:971
      Illuminate\Console\Command::run()

  25  vendor/symfony/console/Application.php:290
      Symfony\Component\Console\Application::doRunCommand()

  26  vendor/symfony/console/Application.php:166
      Symfony\Component\Console\Application::doRun()

  27  vendor/laravel/framework/src/Illuminate/Console/Application.php:93
      Symfony\Component\Console\Application::run()

  28  vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:129
      Illuminate\Console\Application::run()

  29  artisan:37
      Illuminate\Foundation\Console\Kernel::handle()

To Reproduce Steps to reproduce the behavior:

  1. Run php artisan aimeos:setup
  2. See error

Expected behavior Should set up aimeos successfully

Screenshots If applicable, add screenshots to help explain your problem.

Additional context Add any other context about the problem here.

aimeos commented 3 years ago

This is a bug in PHP 8.0.2. For some reason $this->searchConfig return null instead of the array defined in the class.

profclems commented 3 years ago

So basically, the best fit solution now is to downgrade to PHP7.4?

aimeos commented 3 years ago

At the moment, yes.