PrestaShop 1.6 / 1.7 – błędy XML w panelu administracyjnym – przyczyna i rozwiązanie
Problematyczne pliki: must_have_modules_list.xml, modules_native_addons.xml
W ostatnim czasie w sklepach PrestaShop 1.6 oraz 1.7 zaczęły pojawiać się błędy w panelu administracyjnym dotyczące plików XML, np.:
Error found : Start tag expected, '<' not found in must_have_modules_list.xml file Error found : Start tag expected, '<' not found in default_country_modules_list.xml file Error found : Start tag expected, '<' not found in modules_native_addons.xml file
Problem wynika z komunikacji panelu administracyjnego z API PrestaShop Addons i w większości przypadków nie wpływa na działanie sklepu po stronie klientów, ale może powodować problemy w panelu administracyjnym.
Skąd biorą się te pliki XML?
Problem wynika z komunikacji panelu administracyjnego z API PrestaShop Addons i w większości przypadków nie wpływa na działanie sklepu po stronie klientów, ale może powodować problemy w panelu administracyjnym.
PrestaShop cyklicznie pobiera z API Addons listy modułów i zapisuje je lokalnie w katalogu:
config/xml/
Najważniejsze pliki
## must_have_modules_list.xml Lista polecanych modułów z marketplace PrestaShop. ## default_country_modules_list.xml Lista modułów sugerowanych dla danego kraju. ## modules_native_addons.xml Lista modułów natywnych dostępnych w PrestaShop Addons.
Pliki te są wykorzystywane głównie w panelu administracyjnym w sekcji Modules → Module Manager.
PrestaShop używa ich do:
- wyświetlania rekomendowanych modułów
- oznaczania modułów jako "must have"
- integracji z marketplace Addons
- prezentowania modułów natywnych
Dokumentacja:
https://devdocs.prestashop-project.org/8/modules/
Dlaczego pojawia się ten błąd?
Starsze wersje PrestaShop oczekują, że API Addons zwróci dane w formacie XML.
Obecnie zdarza się, że endpointy API:
- są chwilowo niedostępne
- zwracają błędy
- zwracają odpowiedź w innym formacie (np. JSON)
- zwracają niepełną odpowiedź
Przykładowy request:
https://api.addons.prestashop.com/?version=1.6.1.24&method=listing&action=must-have
Jeśli odpowiedź nie jest poprawnym XML, parser PrestaShop (`simplexml_load_string`) zgłasza błąd:
Start tag expected, '<' not found
Dokumentacja parsera XML PHP:
https://www.php.net/manual/en/...
Jakie są objawy problemu?
Oprócz komunikatów XML w panelu administracyjnym, problem może powodować również:
- brak wyników w wyszukiwarce
- problemy z filtrowaniem modułów
- niepełne listy modułów
- wolniejsze ładowanie strony Moduły
- błędy przy przeglądaniu marketplace Addons
Problem dotyczy wyłącznie sekcji zarządzania modułami. Nie wpływa na zamówienia, produkty, klientów, płatności, koszyk, frontend sklepu.
Szybkie rozwiązanie
Najprostsze rozwiązanie to podmiana zawartości problematycznych plików na minimalne, poprawne XML. Wejdź przez SSH lub FTP do:
config/xml/
I zastąp zawartość plików wartościami podanymi poniżej nazwy pliku:
## must_have_modules_list.xml: <?xml version="1.0" encoding="UTF-8"?> <modules/> ## default_country_modules_list.xml: <?xml version="1.0" encoding="UTF-8"?> <modules/> ## modules_native_addons.xml: <?xml version="1.0" encoding="UTF-8"?> <modules/>
Na przyszłość – jak zablokować ponowne nadpisanie plików
Sama podmiana XML zwykle rozwiązuje problem od razu, ale warto pamiętać, że PrestaShop może w przyszłości ponownie próbować pobrać i zaktualizować te pliki. Masz dwa praktyczne podejścia.
Opcja 1 – blokada zapisu do plików
Możesz ustawić plikom prawa tylko do odczytu. To proste i szybkie rozwiązanie, ale nadal opiera się na tym, że PrestaShop będzie próbował wykonać aktualizację, tylko nie będzie mógł nadpisać plików. Wykonaj tą operację przez SSH lub ręcznie w programie do FTP:
chmod 444 config/xml/must_have_modules_list.xml chmod 444 config/xml/default_country_modules_list.xml chmod 444 config/xml/modules_native_addons.xml
Opcja 2 – override klasy Tools
Bardziej eleganckie rozwiązanie to wyłączenie sprawdzania Addons API przez override klasy Tools.
Plik:
override/classes/Tools.php
Przykład override:
php
class Tools extends ToolsCore
{
protected static $is_addons_up = false;
}
To powoduje że PrestaShop:
- nie próbuje łączyć się z Addons API
- nie pobiera ponownie tych XML
- nie generuje związanych z tym błędów
Dokumentacja override:
https://devdocs.prestashop-pro...
Po dodaniu override należy wyczyścić cache - zrób to ręcznie lub za pomocą SSH:
PS 1.7:
rm -rf var/cache/*
PS 1.6:
rm -rf cache/class_index.php
Co tracimy wyłączając Addons API?
W praktyce większość sklepów produkcyjnych i tak instaluje moduły ręcznie, więc utrata tej funkcji zwykle nie ma znaczenia.
Nie będzie działać:
- lista polecanych modułów
- marketplace w panelu
- sugestie modułów
- oznaczenia "must have"
- przeglądanie Addons z admina
Nadal działa:
- instalacja modułów z ZIP
- ręczna instalacja modułów
- aktualizacje modułów
- cały sklep
- zamówienia
- checkout
Podsumowanie
Problem wynika z komunikacji starej wersji PrestaShop z API Addons. Najważniejsze fakty:
- nie jest to problem serwera
- nie jest to problem konfiguracji sklepu
- nie jest to malware
- nie wpływa na sprzedaż
- dotyczy wyłącznie panelu modułów
Najlepsze rozwiązanie:
- Podmienić XML
- Wyłączyć Addons API
Rekomendacja
Jeśli sklep działa stabilnie, można bezpiecznie zastosować powyższy workaround. Jeśli sklep nadal działa na PrestaShop 1.6 lub starej 1.7, warto również rozważyć:
- aktualizację do nowszej wersji
- audyt techniczny
- aktualizację modułów
- optymalizację wydajności
W każdym z powyższych przypadków - zapraszamy do kontaktu, pomożemy! :-)







