Gidai · · 4 min skaitymo
PrestaShop 9 atnaujinimo klaidos: ką jos reiškia ir kaip jas ištaisyti
Baltas puslapis, 500 klaida, neįsidiegiantis modulis, sugedęs prekės puslapis. Klaidos, kurios dažniausiai pasirodo atnaujinus į PrestaShop 9, kaip rasti tikrąją jų priežastį ir kas padeda kiekvienu atveju.
Atnaujinimas baigtas, Update Assistant praneša, kad viskas pavyko, o parduotuvė rodo baltą puslapį. Arba administravimas veikia, bet užsakymo pateikti nepavyksta. Arba vienas modulis atsisako įsidiegti. Klaidos po atnaujinimo į PrestaShop 9 atrodo skirtingai, tačiau dauguma jų kyla dėl kelių tų pačių priežasčių, ir beveik visas jas galima rasti tuo pačiu būdu.
Šis gidas – antroji mūsų PrestaShop 9 atnaujinimo gido dalis. Pirmojoje paaiškinome, kaip pasiruošti. Ši skirta tam atvejui, kai kažkas jau sugedo, geriausia – bandomojoje kopijoje.
Pirmiausia pamatykite tikrąją klaidą
Baltas puslapis ar trumpas pranešimas „500“ nieko nepasako. PrestaShop klaidos detales slepia tyčia, todėl jas reikia įjungti.
- Derinimo režimas. Administravime: Advanced Parameters > Performance > Debug mode. Jei sugedęs pats administravimas, faile
config/defines.inc.phpnustatykite_PS_MODE_DEV_įtrue. Baigę darbą režimą išjunkite, nes jis kiekvienam lankytojui rodo vidinius kelius. - Žurnalų failai. PrestaShop klaidas rašo į
var/logs/. Naujausiame faile paprastai nurodytas tikslus failas ir eilutė. - Serverio PHP klaidų žurnalas. Jei PrestaShop nulūžta dar nespėjusi nieko užrašyti, klaidos ieškokite talpinimo valdymo skydelio PHP klaidų žurnale.
Kai pamatote eilutę, pavyzdžiui, „Call to undefined function“ ar „Class not found“ su failo keliu, priežastis dažniausiai aiški iš paties kelio: modules/pavadinimas/ reiškia modulį, override/ – override'ą, themes/ – temą.
Dažniausioms žinutėms, tokioms kaip Call to undefined method Tools::displayPrice() ar Class "Swift_Message" not found, turime po atskirą puslapį su priežastimi ir sprendimu: PrestaShop 9 klaidos – po vieną.
Prieš viską išvalykite talpyklą
Daug „klaidų“ po atnaujinimo tėra sena talpykla, kurią sukūrė ankstesnė versija. Ištrinkite var/cache/ turinį (aplankus prod ir dev) ir perkraukite puslapį. Kitos užklausos metu PrestaShop juos sukurs iš naujo. Taip darykite ir po kiekvieno toliau aprašyto pataisymo, kitaip galite žiūrėti į seną, jau išspręstą klaidą.
Baltas puslapis arba 500 klaida parduotuvėje
Dažniausios priežastys, nuo dažniausios:
- Modulis, nepritaikytas naujai PHP versijai. PHP 8 pašalino senas funkcijas, tokias kaip
each()ircreate_function(), o vėlesnės versijos tapo griežtesnės duomenų tipams. Užtenka vieno seno modulio, veikiančio kiekviename puslapyje, kad sustotų visa parduotuvė. Žurnale nurodytas modulis – išjunkite jį ir patikrinkite dar kartą. - Override'as. Override'ai kopijuoja senų branduolio klasių dalis. Kai PrestaShop 9 klasė pasikeičia, override'as gali kviesti metodus, kurių nebėra. Greitai patikrinti galite per Advanced Parameters > Performance > Disable all overrides. Jei puslapis vėl veikia, peržiūrėkite aplanką
override/. - Tema. Tiesiai temoje pakeisti šablonų failai gali kviesti kintamuosius ar funkcijas, kurių nebėra. Trumpam įjungus numatytąją temą matyti, ar kalta tema.
Greitas būdas susiaurinti paiešką – tame pačiame Performance puslapyje esantis Disable non built-in modules. Jei parduotuvė veikia vien su branduolio moduliais, problema yra viename iš jūsų modulių, ir juos galite įjungti po vieną.
Modulis neįsidiegia arba neįsijungia
PrestaShop tikrina, kurias versijas modulis nurodo palaikantis. Jei modulyje nurodyta didžiausia versija 8.x, PrestaShop 9 jo nepriima, net jei pats kodas veiktų. Teisingas sprendimas – PrestaShop 9 versija iš modulio autoriaus. Pačių pakeistas versijos numeris tik paslepia įspėjimą: modulis vis tiek gali neveikti su nauja Symfony ar PHP versija, o kitas atnaujinimas jūsų pakeitimą perrašys.
Jei autorius modulio nebeprižiūri, nuspręskite, ar jo dar reikia. Jei reikia, programuotojas gali jį pakeisti arba atnaujinti, bet tai tikras darbas, o ne vienos eilutės pakeitimas.
Sugenda administravimas, bet parduotuvė veikia
PrestaShop 9 veikia su Symfony 6.4, ir daugiau administravimo puslapių perkelta iš senųjų valdiklių į Symfony. Dažniausia priežastis – moduliai, kurie senuoju būdu pridėjo savo administravimo puslapius, formas ar paslaugas. Tipiški požymiai: klaida tik viename administravimo puslapyje, neatsidarantis modulio nustatymų puslapis arba dingęs meniu punktas. Žurnale nurodytas modulis, o sprendimas – jo PrestaShop 9 versija.
Redaguojant prekę dingsta laukai ar skirtukai
PrestaShop 9 turi tik naująjį prekės puslapį. Moduliai, kurie per senojo prekės puslapio „hook'us“ pridėdavo laukus ar skirtukus, jų nebeparodo. Duomenys duomenų bazėje lieka, tiesiog moduliui nebėra kur jų parodyti. Juos sugrąžina modulio versija, sukurta naujajam prekės puslapiui.
Nustoja veikti užsakymo pateikimas, mokėjimai ar laiškai
Tam reikia daugiausia dėmesio, nes parduotuvė atrodo tvarkinga, o užsakymai nepavyksta.
- Mokėjimų moduliai dažnai susieti su konkrečiomis PrestaShop ir PHP versijomis. Išbandykite kiekvieną mokėjimo būdą tikru arba bandomuoju mokėjimu ir patikrinkite, ar užsakymas atsiranda su teisinga būsena.
- Pristatymo moduliai, kurie kainas skaičiuoja per išorinę paslaugą, gali sugesti tyliai, ir užsakymo metu neberodomas nė vienas kurjeris.
- Užsakymų laiškai gali nustoti eiti, jei modulis buvo pakeitęs šablonus. Patikrinkite, ar ateina patvirtinimo laiškas, o jei laiškų šablonai atrodo netvarkingai, sugeneruokite juos iš naujo per Design > Email Theme. Jei parduotuvė siunčia per Microsoft 365, o bandomasis laiškas grąžina wrong version number, žr. PrestaShop ir Microsoft 365 paštas: PrestaShop 9 reikia kitokio šifravimo nustatymo.
Stiliai ar skriptai atrodo sugedę
Jei parduotuvė įsikelia, bet atrodo sugedusi, naršyklė dažniausiai įkelia senus sujungtus CSS ir JavaScript failus. Išvalykite talpyklą, tada skiltyje Advanced Parameters > Performance dar kartą išsaugokite CCC nustatymus (arba juos išjunkite ir vėl įjunkite). Taip pat vieną kartą išsaugokite Shop Parameters > Traffic & SEO: taip iš naujo įrašomas .htaccess failas su draugiškų nuorodų taisyklėmis.
Kada sustoti ir grįžti atgal
Jei veikiančioje parduotuvėje neveikia užsakymo pateikimas ar mokėjimai, o priežastis per valandą neaiški, grįžkite prie atsarginės kopijos ir problemą spręskite kopijoje. Parduotuvė, kuri prekiauja senąja versija, geriau už tą, kuri naująja neprekiauja. Būtent dėl to atnaujinimą verta pirmiausia daryti bandomojoje kopijoje: kiekviena šiame gide aprašyta klaida ten kainuoja nedaug, o veikiančioje parduotuvėje – brangiai.
Reikia pagalbos?
PrestaShop parduotuves į 9 versiją atnaujiname už fiksuotą kainą nuo 900 €, visada pirmiausia kopijoje, ir pakeliui sutvarkome tai, kas sugenda. Jei jūsų parduotuvė po atnaujinimo jau rodo klaidų, mūsų nemokama parengties patikra veikia ir su PrestaShop 9 ir parodo modulius, temą ir override'us, kurie dar naudoja pašalintą kodą. Parduotuvės patikra eina toliau: ji suranda jų priežastis ir parodo, kiek kainuotų kiekvienas pataisymas.