WordPress hibanapló

A WordPress hibanapló (error log) használata alapvető készség mind a kezdő fejlesztők, mind az üzemeltetők számára. Egy hibás plugin, egy inkompatibilis téma, egy PHP verzióváltás vagy egy szerveroldali konfigurációs probléma esetén a WordPress hibanapló jelenti a leggyorsabb és legpontosabb útmutatót a hiba okának feltárásához. A cikk célja, hogy lépésről lépésre bemutassa, hogyan lehet bekapcsolni a WordPress hibanapló funkciót, hol található a PHP hibanapló a legnépszerűbb tárhelykezelőkben, és milyen jó gyakorlatokat érdemes követni a naplók olvasásakor.

WordPress debug funkció bekapcsolása

Mi az a WP_DEBUG és miért kell?

A WordPress hibanapló első lépése a debug mód bekapcsolása. A WP_DEBUG egy olyan állandó, amely a WordPress belső hibajelentését engedélyezi. Fejlesztés során mindenképpen ajánlott bekapcsolni, mert részletes információt ad a hibák forrásáról (plugin, téma, core, PHP warning, notice).

A legfontosabb debug beállítások (wp-config.php)

A WordPress hibanapló valódi értéke akkor jön elő, ha a hibák nem a képernyőre íródnak, hanem naplófájlba. Ehhez a wp-config.php fájlban a következő beállításokat javasolt alkalmazni:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

Ebben az esetben a WordPress hibanapló a wp-content/debug.log fájlba íródik, miközben a hibák nem jelennek meg a felhasználói felületen.

WP_DEBUG_LOG: hova írja a naplót?

Ha a WP_DEBUG_LOG be van kapcsolva, akkor a WordPress hibanapló alapértelmezetten a wp-content/debug.log fájlba kerül. Ha a fájl nem létezik, a WordPress létrehozza. Fontos, hogy a fájlnak legyen írási joga (pl. 644 vagy 664, attól függően, hogy a szerver hogyan van beállítva).

Miért ne jelenjen meg a hiba az oldalon?

Éles környezetben a hibák megjelenítése biztonsági és felhasználói élmény szempontjából is rossz gyakorlat. A WordPress hibanapló célja, hogy a hibák adminisztratív szinten legyenek láthatók, és ne a látogatók számára.

PHP hibanapló (error log)

PHP error_log beállítás (ini_set)

A WordPress hibanapló mellett gyakran szükség van a PHP általános hibanaplójára is, mert a WordPress log nem minden esetben tartalmazza a szerveroldali PHP hibákat (pl. memória limit, PHP-FPM, runtime error). PHP szinten így lehet bekapcsolni:

ini_set( 'log_errors', 1 );
ini_set( 'error_log', '/path/to/php-error.log' );

WordPress debug log vs. PHP error log – mi a különbség?

A WordPress hibanapló a WordPress belső működéséből eredő hibákat rögzíti (plugin, téma, core, warning, notice), míg a PHP hibanapló a szerveroldali PHP futás során fellépő hibákat rögzíti (memória, PHP-FPM, runtime error, konfigurációs problémák). Mindkettőre szükség lehet a hibakereséshez, de a PHP hibanapló gyakran több információt ad a szerveroldali problémák esetén.

Hol találod a logokat? (tárhelykezelőknél)

cPanel

  • Webhely specifikus PHP error log:
    /home/USER/logs/DOMAIN.php.error.log
    /home/USERNAME/public_html/error_log
  • cPanel felületen: Metrics → Errors / Raw Access Logs

DirectAdmin

  • Domain log könyvtár: /home/username/domains/yourdomain.com/logs/
  • Panelen: Site Summary → Statistics → Logs → Error Log
  • Apache/nginx logok (ha nincs külön PHP log)

Plesk

  • Domain log: /var/www/vhosts/yourdomain.com/logs/error_log
  • PHP-FPM log: /var/log/plesk-phpXY-fpm.log
  • Plesk felület: Domain → Logs → PHP Errors filter

ISPConfig

  • Általában webserver logok (Apache/nginx) alatt:
    /var/log/apache2/error.log
    /var/log/nginx/error.log
  • Domain-specifikus logok (szerver beállítás függő)

A leggyakoribb hibák és mit jelentenek

500 Internal Server Error

Tipikus okok: memória limit, plugin, PHP verzió, .htaccess. Ilyenkor a PHP hibanapló és a WordPress hibanapló is elsődleges forrás.

Fatal error / uncaught error

Pl. class not found, undefined function. A hiba sor alapján könnyen beazonosítható a hibás plugin vagy téma.

Deprecated warning / notice

A PHP verzióváltáskor gyakori. Fejlesztéskor fontos, éles oldalon általában el kell kerülni a megjelenítését.

Database connection errors

Az adatbázis elérés hibái (hibás host, jelszó, adatbázis név) tipikusan a wp-config.php beállításokban keresendők.

Hibanapló olvasási és szűrési tippek

  • A legutóbbi bejegyzések megtekintése: tail -f debug.log vagy error_log
  • Kulcsszavak: Fatal, Warning, Deprecated, Stack trace
  • A hiba forrásának azonosítása: plugin/sablon fájlnevek, sorok, függvények alapján
  • Ha több plugin is érintett: próbálj meg ideiglenesen letiltani pluginokat, és figyeld a log változását

Hibanaplós bővítmények

  • Debug Bar
  • Query Monitor
  • Log Deprecated Notices
  • WP Debugging
  • Simple History
  • Error Log Monitor
  • Debug Toolkit

Debugging fejlesztőknek

A WordPress hivatalos debugging dokumentációja (új ablakban nyílik meg) alapján a WordPress hibanapló használata mellett több olyan fejlesztői eszköz is rendelkezésre áll, amelyek a hibakeresést hatékonyabbá teszik. Ezek közül az egyik a SCRIPT_DEBUG konstans, amely fejlesztői környezetben a minifikált (összevont) JavaScript és CSS fájlok helyett a nem minősített verziókat tölti be. Ez különösen hasznos, ha front-end hibákat vagy stílusproblémákat kell gyorsan azonosítani, mert könnyebb így követni a konkrét fájlok és sorok szerinti hibákat.

define( 'SCRIPT_DEBUG', true );

A másik fontos eszköz a SAVEQUERIES, amely a futó adatbázis-lekérdezéseket gyűjti és tárolja egy tömbben. Lassú oldalbetöltés vagy váratlan adatbázis-terhelés esetén ez a funkció lehetővé teszi a lekérdezések elemzését, és segít megtalálni a teljesítményproblémák forrását.

define( 'SAVEQUERIES', true );

A WordPress dokumentáció kiemeli, hogy a WP_DEBUG bekapcsolása nemcsak hibákat, hanem elavult (deprecated) funkciók használatáról szóló figyelmeztetéseket is naplózza. Ezek a figyelmeztetések fontos iránymutatást adnak arra, hogy melyik kód rész fog a jövőben megszűnni, így előre lehet tervezni a kompatibilitási frissítéseket. Ugyancsak hasznos a PHP beépített error_log() függvényének alkalmazása, amely nem csak hibák, hanem egyedi üzenetek vagy változók naplózására is alkalmas. Ezzel például AJAX kérések, webhookok vagy egyedi fejlesztésű funkciók hibáinak követése válik egyszerűbbé.

error_log( 'My custom debug message' );

Biztonsági és üzemeltetési jó gyakorlatok

Éles oldalon ne jelenjen meg a hiba a felhasználónak

A WP_DEBUG_DISPLAY false és a display_errors off biztosítja, hogy a hiba csak a logban jelenjen meg.

Logok tárolása és hozzáférés

A debug.log és a PHP error log ne legyenek publikusak. A jogosultságok és az esetleges .htaccess védelem fontos.

Log forgatás (log rotation)

A logok mérete gyorsan nőhet, ezért érdemes logrotate vagy hasonló megoldást alkalmazni a szerveren.

Gyakori kérdések és válaszok a hibanaplóról

  1. Mi az a WordPress hibanapló, és mire jó?

    A WordPress hibanapló (debug log) a WordPress belső hibáit rögzíti, például plugin- vagy témahibákat, PHP figyelmeztetéseket és runtime hibákat. Segít gyorsan azonosítani a hibák forrását, különösen 500-as hibák vagy váratlan működés esetén.

  2. Hogyan kapcsolom be a WordPress hibanaplót?

    A wp-config.php fájlban a következő beállításokkal aktiválható a WordPress hibanapló (fejlesztéshez javasolt):

    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );
    @ini_set( 'display_errors', 0 );

  3. Hol található a WordPress hibanapló fájlja?

    Ha a WP_DEBUG_LOG be van kapcsolva, akkor a WordPress hibanapló alapértelmezetten a wp-content/debug.log fájlba íródik. Ha a fájl nem létezik, a WordPress létrehozza, feltéve hogy a könyvtár írási jogosultsággal rendelkezik.

  4. Mi a különbség a WordPress hibanapló és a PHP error log között?

    A WordPress hibanapló a WordPress működéséből eredő hibákat rögzíti (plugin, téma, core), míg a PHP error log a szerveroldali PHP hibákat (memória limit, PHP-FPM, runtime error) naplózza. Mindkettő fontos a teljes hibakereséshez.

  5. Milyen PHP beállítások segítenek a hibakeresésben?

    A PHP error log bekapcsolható például így:

    ini_set( 'log_errors', 1 );
    ini_set( 'error_log', '/path/to/php-error.log' );

    Ez különösen hasznos, ha a WordPress hibanapló nem ad elég információt vagy a hiba szerveroldali jellegű.

  6. Hogyan lehet fejlesztéskor könnyebben követni a hibákat (haladó beállítások)?

    A WordPress fejlesztői dokumentációja alapján a SCRIPT_DEBUG és a SAVEQUERIES is hasznos:

    define( 'SCRIPT_DEBUG', true );
    define( 'SAVEQUERIES', true );
    A SCRIPT_DEBUG a nem minifikált JS/CSS fájlokat tölti be, a SAVEQUERIES pedig az adatbázis lekérdezéseket naplózza, ami lassú oldalak esetén segít a forrás azonosításában.

  7. Miért fontos a WP_DEBUG_DISPLAY beállítás?

    Éles környezetben nem ajánlott a hibák megjelenítése a felhasználóknak. A WordPress hibanapló célja, hogy a hibák csak a logban jelenjenek meg, ezért a WP_DEBUG_DISPLAY értékét false-ra érdemes állítani, és a display_errors-t is ki kell kapcsolni.

  8. Hol találom a PHP hibanaplót cPanel, DirectAdmin, Plesk és ISPConfig alatt?

    A PHP hibanapló helye tárhelykezelőnként eltérő, de tipikusan a következő helyeken található:

    cPanel: /home/USER/logs/DOMAIN.php.error.log vagy /home/USERNAME/public_html/error_log
    DirectAdmin: /home/username/domains/yourdomain.com/logs/ vagy a panel Logs menüpontja
    Plesk: /var/www/vhosts/yourdomain.com/logs/error_log vagy /var/log/plesk-phpXY-fpm.log
    ISPConfig: /var/log/apache2/error.log vagy /var/log/nginx/error.log (domain-specifikus könyvtárakban is lehet)

  9. Mikor érdemes használni egyedi logolást (error_log)?

    Ha egyedi fejlesztésű funkciókat, AJAX kéréseket vagy webhookokat hibakeresel, akkor a PHP error_log() függvénnyel saját üzeneteket is naplózhatsz. Példa:

    error_log( 'My custom debug message' );
    Ez segít, ha a hiba nem jelenik meg a WordPress logban vagy a szerver logban, de a kód futását szeretnéd követni.

  10. Milyen hibanaplós bővítményeket érdemes használni?

    Ha kényelmes, admin felületen elérhető hibakeresést szeretnél, akkor érdemes a következő bővítményeket megemlíteni (említés szintjén): Debug Bar, Query Monitor, Log Deprecated Notices, WP Debugging, Simple History, Error Log Monitor, WP Crontrol, Debug Toolkit. Ezek a bővítmények a WordPress hibanapló használatát kiegészítik, és sok esetben gyorsabb diagnosztikát tesznek lehetővé.

Összegzés

A WordPress hibanapló használata a leggyorsabb módja annak, hogy egy weboldalon fellépő hibákat észleljünk és pontosan azonosítsuk a forrásukat. Ha egy plugin vagy téma nem kompatibilis, ha a PHP verzió vagy a szerverkonfiguráció okoz problémát, vagy ha egy 500-as hibával találkozunk, a WordPress hibanapló és a PHP hibanapló együttesen adják meg a szükséges információt. A WordPress saját debug rendszerét érdemes elsőként bekapcsolni, mert a WP_DEBUG, WP_DEBUG_LOG és WP_DEBUG_DISPLAY beállítások segítségével a hibák fájlba írása biztosítható anélkül, hogy a látogatók számára láthatóvá válnának.

A hibaelhárítás során fontos, hogy ne csak a WordPress logot nézzük, hanem a PHP hibanaplót is, mert bizonyos hibák (például memória limit túllépés, PHP-FPM problémák vagy runtime errorok) csak ott jelennek meg. A PHP hibanapló helye tárhelykezelőnként eltérő, ezért az üzemeltetőknek és fejlesztőknek érdemes ismerniük, hol található a log fájl cPanel, DirectAdmin, Plesk vagy ISPConfig környezetben. Ezek a helyek gyakran a webhely log könyvtárában vagy a szerver általános log könyvtáraiban vannak, és a panelen keresztül is elérhetők lehetnek.

A hibanaplók olvasása során hasznos, ha a legutóbbi bejegyzéseket a megfelelő eszközökkel követjük, és a kulcsszavakra, például Fatal, Warning vagy Deprecated figyelünk. A hiba forrását gyakran a fájlnevek, sorok és függvények alapján lehet beazonosítani, és ha több plugin érintett, akkor a hibakereséshez a pluginok ideiglenes letiltása is segíthet. A logok olvasása és értelmezése külön készség, de a WordPress hibanapló használatával a hibák felderítése sokkal gyorsabb és megbízhatóbb, mint pusztán a hibajelzések vagy a böngészőben megjelenő üzenetek alapján.

A biztonsági és üzemeltetési gyakorlatok közé tartozik, hogy éles környezetben a hibák ne jelenjenek meg a felhasználók számára, és a logok ne legyenek nyilvánosan elérhetők. A debug.log és a PHP error log jogosultságait megfelelően kell kezelni, és szükség esetén .htaccess vagy más szerveroldali megoldással védeni. Emellett a logok mérete gyorsan növekedhet, ezért érdemes log forgatást alkalmazni, hogy a naplófájlok ne foglaljanak el túl sok tárhelyet. Összességében a WordPress hibanapló bevezetése és a PHP logok rendszeres ellenőrzése a weboldal stabilitásának és a hibák gyors javításának egyik alapja.

Segítség kellene? Közösségeink

Csatlakozzon ~16.000 tagot számláló legnagyobb és fő WordPress-es, magyar nyelvű csoportunkhoz.

WordPress fejlesztők és felhasználók csoportja → (új ablakban nyílik meg)

Várjuk WooCommerce-es magyar nyelvű csoportunkban fejlesztőket és webáruház tulajdonosokat egyaránt.

WooCommerce fejlesztők és felhasználók csoportja → (új ablakban nyílik meg)

WordPress specifikus, saját közösségi terünk. Egy régimódi, hagyományos fórum, ahol szintén lehet segítséget kérni.

Fórumunk → (új ablakban nyílik meg)