Press "Enter" to skip to content

[PrestaShop 1.7] Błąd – Array to string conversion. Sklep nie dziala pod wersją PHP 7

Admin 0

Artykuł dotyczy PrestaShop w wersji PrestaShop 1.7.3.4.

Niekiedy użyty szablon wymusza korzystanie z tej wersji PrestaShop. Niestety jest ona „na pograniczu” kompatybilności z PHP 7.0. Tzn wersja PHP 5.6 działa bez problemu, jednak po przełączaniu na PHP 7.0 żadna strona sklepu nie dziala (biała strona) a po włączeniu trybu debugowania pojawia się błąd:

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/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 409
at Jxblog->hookHeader(array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '4')) in Hook.php line 924
at HookCore::coreCallHook(object(Jxblog), 'hookHeader', array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '4')) in Hook.php line 332
at HookCore::callHookOn(object(Jxblog), 'displayHeader', array('cookie' => object(Cookie), 'cart' => object(Cart), 'altern' => '4')) 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

Wersja PHP7 może być konieczna np. do prawidłowego działania modułów płatności itp.

Jak poradzić sobie z tym błędem?

Na szczęscie rozwiązanie jest stosunkowo proste i zostało opisane tutaj.

Po prostu otwórz plik:

classes/controller/FrontController.php

Następnie znajdź funkcję requireAssets() – okolice 1218 linii

i zamień kod:

$this->$asset['type']($library, $asset['path'], $asset['params']);

Na:

$this->{$asset['type']}($library, $asset['path'], $asset['params']);

Po tej operacji sklep powinien działać w wersji PHP7. Oczywiście pod warunkiem, że dołączone do szablonu moduły też są kompatybilne z tą wersją PHP.

Jeśli Twój sklep nadal nastręcza problemów przy działaniu pod wyższą wersją interpretora PHP – zapraszamy do kontaktu:

 

 

grafika: wallpaperflare.com

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
Wyłączenie sklepu przez SQL albo blokada danego administratora. Czy to…