Dla wersji PHP5.x – sklep działa prawidłowo. Przełączając wersję PHP na min. 7.0 – mamy białą stronę (do admina można się zalogować). Natomiast po włączeniu debugowania w dziale „Wydajność” błąd wygląda następująco:
Whoops, looks like something went wrong. 1/1 ContextErrorException in FrontController.php line 1218: Notice: Array to string conversion in FrontController.php line 1218 at ErrorHandler->handleError('8', 'Array to string conversion', '/var/www/sbasklep/classes/controller/FrontController.php', '1218', array('libraries' => array('font-awesome'), 'library' => 'font-awesome', 'assets' => array(array('id' => 'font-awesome-css', 'type' => 'registerStylesheet', 'path' => '/themes/_libraries/font-awesome/css/font-awesome.min.css', 'params' => array('media' => 'all', 'priority' => '10'))), 'asset' => array('id' => 'font-awesome-css', 'type' => 'registerStylesheet', 'path' => '/themes/_libraries/font-awesome/css/font-awesome.min.css', 'params' => array('media' => 'all', 'priority' => '10')))) in FrontController.php line 1218 at FrontControllerCore->requireAssets(array('font-awesome')) in jxblog.php line 440 at Jxblog->hookHeader(array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '5')) in Hook.php line 924 at HookCore::coreCallHook(object(Jxblog), 'hookHeader', array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '5')) in Hook.php line 332 at HookCore::callHookOn(object(Jxblog), 'displayHeader', array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '5')) in Hook.php line 860 at HookCore::exec('displayHeader') in FrontController.php line 557 at FrontControllerCore->initContent() in IndexController.php line 37 at IndexControllerCore->initContent() in Controller.php line 253 at ControllerCore->run() in Dispatcher.php line 428 at DispatcherCore->dispatch() in index.php line 28
Problem jest związany z odmiennym przekazywaniem dynamicznych zmiennych w PHP dla obu tych wersji:
Interpretacja dla PHP5:
$this->{$asset['type']}();
Interpretacja dla PHP7:
$this->{$asset}['type']();
A przekładając na nasze – aby się pozbyć problemu w pliku:
classes/controller/FrontController.php
Zamień wystąpienie:
$this->$asset['type']($library, $asset['path'], $asset['params']);
na:
$this->{$asset['type']}($library, $asset['path'], $asset['params']);
żródło: https://github.com/PrestaShop/PrestaShop/pull/8636/commits/d7132fbc92f2e398f5f8e9f3452c2e8c2c5f123d