# A PHP-bővítmények (extensions) megértése

> PHP-bővítmények elmagyarázva: core, bundled és PECL bővítmények, extension és zend_extension, php -m, és miért biztonságosabb kevesebb modullal.

Forrás: https://phpsos.de/hu/php/php-erweiterungen/  
Állapot: 2026. 10. 25.  
Szolgáltató: PHP SOS, PHP-vészhelyzeti segítség és szerverbiztonság. Azonnali segítség WhatsAppon: https://wa.me/491736494914?text=%C3%9Cdv%C3%B6zl%C3%B6m%2C%20PHP%20SOS%21%20Seg%C3%ADts%C3%A9gre%20van%20sz%C3%BCks%C3%A9g%C3%BCnk%20a%20PHP-szerver%C3%BCnkkel.%20C%C3%A9g%3A%20%E2%80%A6%20Weboldal%3A%20%E2%80%A6

**Röviden:** A PHP-bővítmények (extensions) C nyelvű modulok, amelyek funkciókkal egészítik ki a PHP-t, például adatbázis-illesztőkkel (PDO), titkosítással (Sodium, OpenSSL) vagy az OPcache bájtkód-gyorsítótárral. A PHP-kézikönyv core, bundled, external és PECL bővítményeket különböztet meg. A php.ini-ben az `extension` vagy a `zend_extension` tölti be őket. Minden bővítmény a PHP-folyamatban fut, annak jogaival. Ezért érvényes: csak azt töltse be, amire szükség van, és a PHP-val együtt frissítse.

## Mik a PHP-bővítmények?

A PHP magja, a [Zend Engine](https://phpsos.de/hu/php/zend-engine/), képes kódot végrehajtani, de sok minden, amire az alkalmazásoknak szükségük van, a bővítményekben van. C nyelven íródtak, és vagy fixen beleforgatják őket a PHP-ba, vagy közösen használt programkönyvtárként (`.so` Linuxon, `.dll` Windowson) töltődnek be induláskor.

Döntéshozóknak fontos: a bővítmények nem az alkalmazás bővítményei (pluginjai), hanem a PHP-futtatókörnyezet részei. A tárhelyszolgáltató vagy a szerveradminisztrátor telepíti őket, nem az ügynökség a CMS-ben. Ha hiányzik egy bővítmény, az alkalmazás többnyire hibát jelez telepítéskor vagy frissítéskor.

Ugyanilyen fontos az elhatárolás a Composer-csomagoktól. A Composer PHP-ban írt, a projektmappában található programkönyvtárakat telepít, például egy levelező- vagy PDF-csomagot. A bővítmények ezzel szemben lefordított kódok, amelyek a PHP indításakor töltődnek be, és a szerver összes alkalmazására érvényesek. Sok Composer-csomag meghatározott bővítményeket tételez fel, és ezt a `composer.json` fájlban olyan bejegyzésekkel jelzi, mint az `ext-intl` vagy az `ext-sodium`. Aki ellenőrizni akarja, hogy egy projekt megtalálja-e az összes szükséges bővítményt, a projektmappában futtathatja a `composer check-platform-reqs` parancsot.

## Milyen fajta bővítmények léteznek?

A PHP-kézikönyv a bővítményeket négy csoportba sorolja:

| Csoport | Jelentése a kézikönyv szerint | Példák a kézikönyvből |
|---|---|---|
| Core | a PHP magjának része, nem kapcsolható ki | Arrays, Date/Time, Hash, JSON, PCRE, SPL, Strings |
| Bundled | a PHP-val együtt szállított | BC Math, Ctype, Fileinfo, Filter, GD, intl, mbstring, PDO, Sessions |
| External | a PHP-val együtt szállított, külső programkönyvtárakat igényel | cURL, DOM, GMP, LDAP, OpenSSL, Sodium, Zip |
| PECL | a PECL-en keresztül elérhető, részben külső programkönyvtárakkal | APCu, Memcached, MongoDB, Yaml |

A besorolás változhat. A PHP 8.4-gyel a kiadási oldal szerint az IMAP, OCI8, PDO_OCI és pspell bővítményeket kivették a szállított csomagból, és a PECL-be helyezték át. Aki használja őket, a frissítés után külön telepítést igényel, amelyet szintén gondozni kell.

## Hogyan töltődnek be a bővítmények?

A közösen használt bővítményeket a kézikönyv szerint a php.ini-ben az `extension` direktíva tölti be; a mélyebben a motorba avatkozó Zend-bővítményeket a `zend_extension`. Mindkettő csak a php.ini-ben szerepelhet. A könyvtárat az `extension_dir` határozza meg, amelyhez a kézikönyv abszolút útvonalat ajánl.

```ini
; normál bővítmények
extension=pdo_mysql
extension=sodium
extension=intl

; Zend-bővítmény: OPcache (az Xdebug előtt töltse be, ha mindkettő aktív)
zend_extension=opcache
```

Az olyan disztribúciók, mint a Debian és az Ubuntu, minden bővítményhez külön kis `.ini` fájlt helyeznek el a szkennelt könyvtárban, például a `/etc/php/8.3/mods-available/` alatt, és SAPI-nként a `phpenmod` és `phpdismod` parancsokkal aktiválják őket. Hogyan olvassa be a PHP ezeket a fájlokat, azt [A php.ini elmagyarázva](https://phpsos.de/hu/php/php-ini-erklaert/) oldal magyarázza.

A bővítményeket többnyire a csomagkezelőn keresztül telepítik, például a `php8.3-intl` csomagként. A PECL-bővítmények a `pecl` vagy a `phpize` segítségével építhetők. A kézikönyv szerint a PECL elavult; a PHP Installer for Extensions (PIE) ajánlott. Aki a PHP-t teljesen maga építi, útmutatást talál a [PHP fordítása forráskódból](https://phpsos.de/hu/php/php-kompilieren/) oldalon.

## A bővítmények ellenőrzése: melyek vannak valójában betöltve?

A következő parancsok kizárólag olvasnak. Vegye figyelembe, hogy a parancssor más bővítményeket tölthet be, mint a weboldal.

```bash
php -m                              # a CLI moduljai
php-fpm8.3 -m                       # a PHP-FPM 8.3 moduljai (a név disztribúciónként eltérő)
php --re sodium | head -n 5         # egy bővítmény függvényei
php --ri opcache                    # egy bővítmény konfigurációja
php -r 'var_dump(extension_loaded("intl"));'
```

A kódban az alkalmazások az `extension_loaded()` függvénnyel ellenőrzik, hogy megvan-e egy bővítmény, és a `get_loaded_extensions()` függvénnyel, hogy melyek vannak betöltve:

```php
<?php
$benoetigt = ['pdo_mysql', 'mbstring', 'intl', 'sodium'];
$fehlend = array_diff($benoetigt, array_map('strtolower', get_loaded_extensions()));
echo $fehlend ? 'Fehlt: ' . implode(', ', $fehlend) : 'Alle Erweiterungen vorhanden';
```

## Bővítmények és biztonság: kevesebb több

A bővítmények ugyanabban a folyamatban és ugyanazokkal a jogokkal futnak, mint a PHP. Egy bővítményben lévő hiba ezért olyan súlyos lehet, mint a magban lévő. Ebből négy szabály adódik:

1. **Csak azt töltse be, amire szükség van.** Minden további bővítmény növeli a támadási felületet. Ellenőrizze a listáját az alkalmazás rendszerkövetelményeivel szemben.
2. **A PHP-val együtt frissítse.** A szállított bővítmények a PHP-frissítéssel érkeznek. A PECL- és idegen bővítmények saját frissítést igényelnek, és illeszkedniük kell az új PHP-verzióhoz.
3. **Fejlesztői eszközök ne kerüljenek éles üzembe.** A hibakeresők és profilozók, például az Xdebug, csak fejlesztői környezetbe valók.
4. **A függvényeket célzottan zárolja.** Ahol a bővítmények rendszerparancsokhoz való függvényeket hoznak magukkal, segít a [disable_functions helyes használata](https://phpsos.de/hu/ratgeber/disable-functions/).

A PHP2Shell esetében a rések a PHP magjában vannak, nem egy bővítményben. A modulok kikapcsolása nem zárja be őket; a 8.5.12, 8.4.27, 8.3.36 vagy 8.2.35 verzióra való frissítés kell az összes PHP-folyamat újraindításával. A frissítés után ellenőrizze, hogy az összes bővítmény ismét betöltődik-e, mert a hiányzó modulok gyakran csak bizonyos funkcióknál tűnnek fel. Hogyan tarthatja tartósan kézben a függőségeket, azt a [Függőségek naprakészen tartása](https://phpsos.de/hu/blog/abhaengigkeiten-aktuell-halten/) cikk írja le.

## Hogyan segít konkrétan a PHP SOS?

- **Állomány felmérése:** SAPI-nként felsoroljuk az összes betöltött bővítményt eredettel és verzióval.
- **Kiszűrés:** Összevetjük a listát az alkalmazása igényeivel, és teszt után kikapcsoljuk a feleslegest.
- **Frissítés:** A [szerver-megerősítés](https://phpsos.de/hu/leistungen/server-haertung/) keretében a PHP-t és az összes idegen bővítményt gondozott állapotra hozzuk.
- **Ellenőrzés frissítések után:** Minden PHP-frissítés után ellenőrizzük, hogy az összes szükséges modul ismét be van töltve.


## Gyakori kérdések

**Mi a különbség az extension és a zend_extension között?**  
Az extension-nel a PHP normál bővítményeket tölt be, például adatbázis-illesztőket. A zend_extension-nel a kézikönyv szerint olyan Zend-bővítmények töltődnek be, amelyek mélyebben avatkoznak a motorba, például az OPcache vagy az Xdebug. Mindkét direktíva csak a php.ini-ben szerepelhet.

**Hogyan látom, mely bővítmények vannak betöltve?**  
A parancssorban a php -m paranccsal, a weboldalhoz a get_loaded_extensions() függvénnyel egy rövid időre elhelyezett ellenőrző fájlban, vagy az adott verzió php-fpm -m parancsával. Vegye figyelembe, hogy a CLI és a webes SAPI különböző bővítményeket tölthet be.

**Mi a PECL, és mi a PIE?**  
A PECL a PEAR csomagrendszeren keresztül biztosított PHP-bővítmények jegyzéke. A PHP-kézikönyv szerint a PECL elavult; helyette a PHP Installer for Extensions (PIE) ajánlott.

**Lezárja a PHP2Shellt egy bővítmény kikapcsolása?**  
Nem. A PHP2Shell-rések a PHP magjában vannak, nem egy kikapcsolható bővítményben. Kevesebb bővítmény általánosságban csökkenti a támadási felületet, de nem helyettesíti a javított verzióra való frissítést.

## Források

- [PHP-kézikönyv: A bővítmények besorolása](https://www.php.net/manual/en/extensions.membership.php)
- [PHP-kézikönyv: PECL-bővítmények telepítése](https://www.php.net/manual/en/install.pecl.intro.php)
- [PHP-kézikönyv: Alapbeállítások (extension)](https://www.php.net/manual/en/ini.core.php)
- [php.net: PHP 8.4 kiadás](https://www.php.net/releases/8.4/en.php)
