Press "Enter" to skip to content

PrestaShop 1.7 – bład aktualizacji systemu: Cannot redeclare upgrade_module_1_10_0

Admin 0

Dziś kolejna odsłona błędu, który może pojawić się podczas aktualizowania sklepu PrestaShop.

Jak widać aktualizacja jest zawsze bardzo newralgiczną operacją i wymaga dużej wiedzy technicznej. Wykonywanie jej na właśną rękę może zupełnie zespuć działanie sklepu, a niesie to za sobą takie problemy jak:

  • Wstrzymanie sprzedaży – brak zysków dla właściciela sklepu
  • Wyłączenie na dłużej nieokreślony czas sklepu. Jeśli był on np. pozycjonowany pod konkretne frazy w Google (albo ma wysoką pozycję) może to po dłuższej nieobecności w sieci skuktować drastycznymi spadkami w pozycji. Takie pogorczenie wypozycjonowania sklepu jest potem bardzo trudno odbudować, albo może wiązać się to z dużymi kosztami…
  • Straty pieniężne związane z kampanią (np. Google Ads) która trafia w pustkę. Tj. niedziałający sklep. Konsersja wynosi wtedy dokładnie: 0. Ty płacisz za click’i a sklep nie zyskuje nowych zamówień. Np. przez wyłaczenie sklepu albo uszkodzenie modułu zamówienia.
  • Wszystkie ww. problemy mogą skutkować obniżeniem zaufania w oczach klientów albo (w zależności od branży) nawet odpływem klientów do konkurencji.

Z tego powodu rozważ przekazanie aktualizacji sklepu PrestaShop doświadczonemu zespołowi:

Wykonywanie akutalizacji zawsze wymusza na programiście/właścicielowi wykonanie kopii bezpieczeństwa bazy danych oraz kopii plików sklepu. Tak, aby można było sprawnie wrócić do punktu wyjścia z przed wykonywanych prac.

Nasz zespól zawsze w ramach wykonywanych akutalizacji tworzy takie kopie bepieczeństwa i jest to fundamentem realizacji zlecenia.

Warto zauważyć, że moduł aktualizacji ma wbudowaną opcję wykonywanie kopii bezpieczeństwa, jednak może ona działać mało stabilnie. Przy dużych instalacjach sklepowych może wymagać dużego czasu wykonywania skryptu aby ją zakończyć w całości.

Wracając do problemu, którego dotyczy ten artykuł.

Aktualizacja dotyczyła podniesienia wersji sklepu PrestaShop z 1.7.6.9 do 1.7.8.8. Jak widać mimo, że dotyczy to nie wiele nowszej wersji – można wtedy też narazić sklep na awarię.

Aktualizacja była wykonywana za pomocą modułu „1-Click Upgrade” v.4.15.0 („Aktualizacja 1-kliknięciem” od PrestaShop)

Jeśli nie posiadasz modułu możesz go pobrać:

Podczas jej przeprowadzania pojawił się błąd krytyczny:

[INTERNAL] /var/www/testy/modules/ps_eventbus/upgrade/Upgrade-1.10.3.php line 13 - Cannot redeclare upgrade_module_1_10_0() (previously declared in /var/www/testy/modules/ps_eventbus/upgrade/Upgrade-1.10.0.php:6)

Powoduje on wstrzymanie procesu aktualizacji i jest on niekompletny. Etap wykonywanej akutalizacji dotyczy modułów, natomiast aktualizacja bazy danych (kolejny etap – już na ostatnim kroku) nie jest już wykonywana.

Naraża to sklep na bliżej nieoczekiwane zachowanie w przyszłości. Tzn. pliki zostały zakutalizowane, a baza danych jeszcze nie. Jeśli np. struktura bazy danych wymaga zmiany (np. dołożona jest kolejna kolumna w ważnej tabeli) prędzej czy później sklep przestanie działać w najbardziej nieoczekiwanym momencie albo np. proces wykonywania zamówienia zostanie uszkodzony.

Oznacza to, że nalezy najpierw wycofać wykonane wcześniej przez moduł i wrócić do sytuacji z przed wykonywanej akutalizacji.

Następnie wejdź w dział:

Moduły -> Zarządzanie modułami

i znajdz moduł „PrestaShop EventBus„:

Użyj przycisku przy module i wybierz „Odinstaluj”. W wyskakującym oknie wybierz „Usuwanie folderu modulu po odinstalowaniu”:

Kolejny moduł, który jest zazwyczaj nieistotny (albo można go potem doinstalować) a może powodować analogiczny problem z zakończeniem procesu to „PrestaShop Accounts”. My natrafiliśmy na taki błąd:

[INTERNAL] /var/www/testy/modules/ps_accounts/vendor/autoload.php line 25 - Error: Class 'ComposerAutoloaderInit8d996795ef54a5306cbc786a9827ba6b' not found #0 /var/www/testy/modules/ps_accounts/ps_accounts.php(23): require_once() #1 /var/www/testy/classes/module/Module.php(1178): include_once('/var/www/...') #2 /var/www/testy/classes/module/Module.php(1170): ModuleCore::coreLoadModule('ps_accounts') #3 /var/www/testy/modules/autoupgrade/classes/UpgradeTools/ModuleAdapter.php(243): ModuleCore::getInstanceByName('ps_accounts') #4 /var/www/testy/modules/autoupgrade/classes/UpgradeTools/ModuleAdapter.php(228): PrestaShop\Module\AutoUpgrade\UpgradeTools\ModuleAdapter->doUpgradeModule('ps_accounts') #5 /var/www/testy/modules/autoupgrade/classes/TaskRunner/Upgrade/UpgradeModules.php(65): PrestaShop\Module\AutoUpgrade\UpgradeTools\ModuleAdapter->upgradeModule(49648, 'ps_accounts') #6 /var/www/testy/adm/autoupgrade/ajax-upgradetab.php(53): PrestaShop\Module\AutoUpgrade\TaskRunner\Upgrade\UpgradeModules->run() #7 {main}

Najlepiej moduł ten analogicznie odinstaluj + usuń folder jak dla ww. moduły Eventbus:

Po tej operacji wykonaj następną kopię bezpieczeństwa i ponów proces aktualizacji. Przy odrobinie szczęścia proces akualizacji powinien skończyć się pomyślnie:

 

 

 

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 !
Czy Twój sklep PrestaShop nie dziala pod wersją PHP7 ?…