Aktualizacja modułu PrestaShop: błąd Upload failed
Aktualizacja modułu. Plik zip nowej wersji wgrywa się na wierzch zainstalowanej już wersji, z poziomu Module Manager: ustawienia, treści i dane pozostają na swoim miejscu. Jeśli zamiast potwierdzenia pojawi się komunikat „Upload failed”, moduł mógł zostać wyłączony bez żadnego powiadomienia. Poniżej opisano, co się dzieje i jak ponownie go uruchomić.
1. Jak zaktualizować moduł
- Plik zip nowej wersji należy pobrać ze strony Moje licencje na koncie.
- W panelu administracyjnym (back office) należy przejść do Modules → Module Manager → Upload a module i wybrać plik zip.
- PrestaShop sam zastępuje pliki i uruchamia aktualizację. Niczego nie należy odinstalowywać: odinstalowanie usuwa ustawienia, aktualizacja nie.
- Po zakończeniu wgrywania należy otworzyć Configure i sprawdzić, czy numer wersji jest nowy.
2. Jeśli aktualizacja pokazuje „Upload failed”
Gdy wgrywa się plik zip modułu, który jest już zainstalowany, PrestaShop zastępuje pliki, a następnie uruchamia aktualizację. Jeśli w połowie coś pójdzie nie tak, PrestaShop dla bezpieczeństwa wyłącza moduł i niestety o tym nie informuje: widoczny jest tylko komunikat „Upload failed”.
Nic nie zostaje utracone: ustawienia i dane modułu nadal istnieją. Wystarczy ponownie go włączyć, gdy przyczyna zostanie usunięta.
Krok 1: sprawdzić, czy moduł został wyłączony back office
Należy przejść do Modules, Module Manager, znaleźć moduł i sprawdzić, czy na przycisku widnieje „Enable” zamiast „Configure”. Jeśli widnieje „Enable”, moduł został wyłączony.
Krok 2: przy kilku sklepach sprawdzić je jeden po drugim multistore
W lewym górnym rogu należy wybierać po jednym sklepie i sprawdzać moduł w każdym z nich. Może być włączony w jednym sklepie, a wyłączony w innym: wtedy lista wygląda poprawnie, ale w tym sklepie moduł już nie działa.
Krok 3: usunąć przyczynę uprawnienia do plików
Prawie zawsze przyczyna jest jedna: pliki modułu na serwerze nie mogą być zapisywane przez program, który obsługuje stronę. Należy poprosić dostawcę hostingu lub technika o poprawienie właściciela i uprawnień folderu modules/<module name>: zwykle ten sam właściciel co pozostałe pliki strony, foldery 755 i pliki 644. Inne możliwe przyczyny: pełny dysk albo wgrywany plik większy, niż akceptuje serwer.
Krok 4: ponownie wgrać plik zip ostatni krok
Po usunięciu przyczyny należy ponownie wgrać plik zip: tym razem aktualizacja przebiegnie prawidłowo. Jeśli moduł ma działać szybciej, można nacisnąć „Enable” w Module Manager, ale plik zip i tak trzeba wgrać ponownie, w przeciwnym razie zostają częściowo zastąpione pliki.
3. Dlaczego tak się dzieje
To nie jest wada aktualizowanego modułu. Jeśli PrestaShop napotka jakikolwiek błąd podczas wgrywania pliku zip, wyłącza moduł, nad którym pracował: dzieje się tak z każdym modułem, od dowolnego autora, przy włączonym lub wyłączonym multisklepie. Jest to wybór ostrożny, ponieważ jeśli zastępowanie plików zatrzymało się w połowie, serwer zostaje z modułem złożonym z części nowych i starych plików, a uruchamianie go w takim stanie byłoby gorsze. Brakuje tylko ostrzeżenia: PrestaShop wyświetla „Upload failed” i nie informuje, że moduł został wyłączony.
4. Jak zapobiec ponownemu wystąpieniu
- Pliki strony należy zawsze wgrywać jako ten sam użytkownik, jako którego działa PHP. Jeśli pliki wgrano przez FTP lub zainstalowano z wiersza poleceń jako administrator, uprawnienia wymagają poprawienia.
- Przed aktualizacją należy sprawdzić ilość wolnego miejsca na dysku.
- Jeśli plik zip jest duży, warto zapytać dostawcę hostingu o limity PHP
upload_max_filesizeipost_max_size. - Moduły należy aktualizować pojedynczo i sprawdzać wynik, zanim przejdzie się do następnego.
5. Najczęściej zadawane pytania
Czy tracę ustawienia modułu podczas aktualizacji?
Nie. Wgranie pliku zip zastępuje tylko pliki: ustawienia, treści i dane pozostają w bazie danych. Są tracone po odinstalowaniu modułu, ale aktualizacja nigdy nie wymaga odinstalowywania.
Czy muszę odinstalować moduł przed aktualizacją?
Nie, a lepiej tego nie robić. Nowy plik zip należy wgrać na wierzch posiadanej już wersji: PrestaShop widzi, że moduł już istnieje, i sam uruchamia aktualizację.
Nacisnąłem „Enable” i moduł działa: czy nadal muszę wgrywać plik zip?
Tak. Jeśli wgrywanie zatrzymało się w połowie, serwer przechowuje pliki z dwóch różnych wersji. Włączenie uruchamia moduł od razu, ale aktualizację trzeba dokończyć, ponownie wgrywając plik zip.
Skąd wiadomo, czy moduł jest wyłączony tylko w jednym z moich sklepów?
Za pomocą selektora w lewym górnym rogu panelu administracyjnego należy wybierać po jednym sklepie i otwierać Module Manager: moduł trzeba sprawdzić w każdym sklepie. W widoku „wszystkie sklepy” może wyglądać na włączony, nawet jeśli w jednym z nich nie jest.
Gdzie znajdę plik zip nowej wersji?
Na stronie Moje licencje na koncie, która zawsze zawiera najnowszą wersję, do jakiej przysługuje prawo. Aktualizacje są w cenie przez 12 miesięcy, potem odnowienie jest opcjonalne.
