A “Syntax error” hibaüzenetek okai és javítása

[Ezt a cikket 4 perc elolvasni.]

Van néhány gyakori hibaüzenet, amellyel minden WordPress felhasználó szembesül előbb vagy utóbb, a “syntax error” is ilyen. Egy kezdő számára igen ijesztő lehet a fehér képernyő és az angol felirat, de a nagyobb probléma általában az szokott lenni, hogy ilyenkor az oldal és sok esetben a vezérlőpult is elérhetetlen. Elmagyarázzuk, hogy miért is jelenik meg ez a hibaüzenet és mit is kell tennünk az orvoslása érdekében.

A megjelenő hibaüzenet minden esetben más, de általában ilyen formátumban fogjuk viszontlátni:

Parse error: syntax error, unexpected '; in /public_html/oldal/wp-content/themes/sablon/functions.php on line 278

Az üzenet közli, hogy hiba van a PHP kódban, ezért a futása megszakad. Ami a javításhoz lényeges lehet az a fájl elérési útvonala és a végén szereplő szám, ami a fájl tartalmának sorát jelöli, ahol maga a hiba található.

Szinte biztos, hogy ezt a fajta hibát mi magunk idéztük elő egy sablonhoz tartozó PHP fájl szerkesztésével vagy akár egy kódrészlet bemásolásával, de ritkább esetben egy bővítmény telepítése vagy frissítése is kiválthatja. Ha a hiba megjelenése előtt a WordPress vezérlőpulton dolgoztunk vagy éppen a beépített kódszerkesztő (Megjelenés / Szerkesztő) segítségével módosítottunk valamit, akkor biztosak lehetünk benne, hogy a hiba is ott lesz, tehát ugyanazt a fájlt kell szerkeszteni a javításhoz (esetleg a nemrégiben hozzáadott kódrészletet kell törölni).

Igen ám, de hogyan tegyük meg mindezt, ha a vezérlőpult és a kódszerkesztő elérhetetlen? Ilyenkor FTP-n keresztül kell kapcsolódnunk a tárhelyünkre és el kell navigálnunk a hibaüzenetben szereplő fájlhoz (általában “/wp-content/themes/sablon” az elérési útvonal), majd megnyitni szerkesztésre a szóban forgó fájlt (a fenti példa esetén a functions.php-t) és a 278. sorban szereplő részt kell jó alaposan szemügyre vennünk. Sok esetben csak egy lemaradt (vagy éppen felesleges) zárójel, pontosvessző vagy kapcsos zárójel váltja ki a hibát, ez pedig fakadhat abból, hogy nem a teljes kódot másoltuk ki/illesztettük be, esetleg simán csak hibás a kódunk szintaktikája (innen a hibaüzenet is). Ha tudjuk, akkor töröljük a nemrégiben hozzáadott kódot, ha erre nincs lehetőségünk, akkor próbáljuk javítani az üzenet alapján. Ha nem rendelkezünk PHP ismerettel, akkor ez sem opció sajnos, ilyenkor még hatásos lehet azonban, ha a fájlt felülírjuk az eredeti verziójával, azaz egy sablon esetében letöltjük a telepítettel megegyező kiadást, kicsomagoljuk, kikeressük az adott fájlt és feltöltjük a sablonunk megfelelő könyvtárába felülírva ezzel a hibás kódot tartalmazó verziót (előtte azonban készítsünk biztonsági másolatot a hibás fájlról is!).

Ha a hibaüzenetben egy bővítmény szerepel, akkor a leggyorsabb megoldás az oldalunk életre keltésére az, ha egyszerűen csak átnevezzük a mappáját. Tehát például ha a “/wp-content/plugins/pluginneve” könyvtárban található a hibát kiváltó PHP fájl, akkor írjuk át a mappa nevét “pluginneve”-ről “pluginneve_kikapcs”-ra. Ezzel a WordPress nem próbálja meg betölteni, így a hibaüzenet sem jelenik majd meg, mi pedig megvárhatjuk a frissítést vagy kereshetünk helyette más alternatívát.

A “wp-admin” és “wp-includes” könyvtárakban található PHP fájlok hibajelzése esetén valószínűleg sérült a WordPress telepítésünk, ilyenkor felül kell írni ezen könyvtárak tartalmait a legfrissebb WordPress verzió megegyező könyvtárainak tartalmával.

Ritkább esetben előfordulhat az is, hogy egyes “syntax error” hibaüzenet kiváltója a szerveren futó túl régi PHP verzió. Ha egy bővítmény vagy egy sablon például csak PHP 5.4 és ezen verziók felett működik, akkor PHP 5.2-t futtató tárhelyen hasonló hibaüzenetet jeleníthet meg. Ilyenkor ha van rá lehetőségünk, akkor állítsuk át a PHP verzióját legalább 5.6.x-re (cPanelben ezt megtehetjük a PHP konfigurációs résznél), de akkor sem kell kétségbe esni, ha nincs erre opciónk, ilyenkor a tárhelyszolgáltatónál kell kérvényezni a verzióváltást. Általában gond nélkül eleget is szoktak tenni a kérésnek.

Ha tetszik, mutasd meg másoknak is: