Prestashop és a “1-Click Upgrade – AutoUpgrade“ modul
Mikor megjelent az 1.5.0-ás verzió Prestashop-ból, kijött vele együtt a fent említett modul is. Ezentúl nem tudunk (hacsak nem kerülő utakon) a szokásos módszerekkel frissíteni, ezt a modult kell használnunk rá.
Ami alapból nem egy rossz dolog, sőt. Maga a modul elég jól meg van írva – ha szépen beállítunk mindent akkor teszi a dolgát, ITT írok a frissítési folyamatáról.
Viszont akad olyan hogy a modul frissítés közben (vagy még előtte) megmakacsolja magát. Olyan hibákat ír ki (ha kiír egyáltalán) amikre nem adnak orvosságot. Ilyen a méltán híres:
all files has been upgraded. Now upgrading database. this can take a while …
üzenet is, mely csak tölt és tölt és tölt egészen addig míg a szerver meg nem unja.
Viszont ha ráfrissítünk egy idő után akkor nyilvánvalóvá válik az a hibaüzenet mellyel semmit sem tudunk kezdeni:
[Ajax / Server Error for action upgradeDb] textStatus: "error " errorThrown:"Internal Server Error " jqXHR: " "
esetleg:
[Ajax / Server Error] textStatus: "error" errorThrown:"" jqXHR: ""
Ezekkel tökéletesen semmit sem tudunk kezdeni. Rengeteg angol topic szól erről a hibaüzenetről, de én még megoldást nem találtam rá ezeken az oldalakon.
Ennek ellenére ezeket meg lehet próbálni:
– indítsuk úgy a frissítést hogy nem készíttetünk vele semmilyen backupot,
– ha van hozzáférésünk akkor állítsuk több órára a szerver feldolgozási idejét (max_execution_time) és hagyjuk dolgozni. Bizonyos esetekben ez Nekem bevált.
Szerencsére ez elég ritkán fordul elő – viszont ha igen akkor megkeseríti az életünket. Amivel Én sikeresen “elhárítottam” ezt az nem más mint a próbálkozás. Amikor kiírta ezt a hibaüzenetet akkor egyszerűen a Vissza gombbal visszamentem és megint ráengedtem a frissítést. Ezt el kell vele játszani párszor, Nekem 4-szer kellett újraindítanom mire a végére ért és kiírta hogy készen van – vagy ráfrissít a végső verzióra és onnantól nem enged majd újból próbálkozni.
Ennek a modulnak a fenti címben lévő linkes elérhetőségén tudjuk ellenőrizni a jelenlegi verziószámát (bár a prestashop admin felülete is kiírja hogy van-e frissebb változat és lehet is frissíteni vele ha igen) amit igencsak gyakran frissítenek. Az elmúlt 3 hétben háromszor is frissítésre került.
Előfordulhat, hogy egy bizonyos verziójú shopot nem lehet a legfrissebb modulverzióval frissíteni inkompatibilitás miatt. Viszont a modulba beépített ellenőrző figyeli hogy a legfrissebb verzióval rendelkezünk-e, és ha nem akkor nem engedi elvégezni a frissítést:
Így ez patthelyzetté válik. A következőt lehet tenni: átírjuk ezt a részt kicsit.
Nyissuk meg a /modules/autoupgrade/AdminSelfAutoupgrade.php
-t, majd az 599-es sor körül keressük meg ezt a részt:
public function checkAutoupgradeLastVersion()
{
if ($this->getModuleVersion())
$this->lastAutoupgradeVersion = version_compare($this->module_version, $this->upgrader->autoupgrade_last_version, '>=');
else
$this->lastAutoupgradeVersion = true;
return $this->lastAutoupgradeVersion;
}
Itt deklarálják azt a függvényt ami a verziószámot ellenőrzi le. Nyilvánvalóan sok módszer létezik arra hogy ezt a függvényt úgy alakítsuk át hogy pipát adjon nekünk ajándékba az admin felületen, most csak egyet írnék:
$this->lastAutoupgradeVersion = version_compare($this->module_version, $this->upgrader->autoupgrade_last_version, '>=');
Ennek a sornak a végén lévő nagyobb relációs jelet fordítsuk meg kicsire (<) és máris megváltoztattuk a feltételt.
Mentsünk majd frissítsünk egyet a modul beállításán és lám, máris megkaptuk a zöld pipánkat.
Esetleg megoldás lehet az a módszer is, amikor a modul config.xml
fájljában egyszerűen átírjuk a verziószámot az általunk kívántra:
<version><![CDATA[1.1.7]]></version>
Ha kérdésed van ne habozz velem felvenni a kapcsolatot! 🙂
Eladásra fel! 🙂