# A SAPI elmagyarázva: hogyan beszél a PHP a webszerverrel

> PHP SAPI elmagyarázva: mit jelent az fpm-fcgi, az apache2handler, a cgi-fcgi és a cli, hogyan ellenőrizhető az üzemmód, és miért határozza meg a kockázatot.

Forrás: https://phpsos.de/hu/php/sapi-erklaert/  
Á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 SAPI a Server Application Programming Interface rövidítése, vagyis az a felület, amelyen keresztül a PHP a környezetével kommunikál. Tipikus SAPI-k az `fpm-fcgi` (PHP-FPM), az `apache2handler` (mod_php), a `cgi-fcgi` (php-cgi), a `litespeed` és a `cli` a parancssorhoz. A SAPI határozza meg, hogyan érkeznek a kérések, melyik php.ini érvényes, és mely folyamatokat kell frissítés után újraindítani. A PHP2Shell esetében még a kockázati besorolás is ettől függ.

## Mi az a SAPI?

A PHP maga egy program, amely kódot hajt végre. Hogy weboldalakat szolgáltathasson ki, kapcsolat kell egy webszerverhez, a parancssorhoz vagy egy másik alkalmazáshoz. Ez a kapcsolat a SAPI. Átveszi a kérés adatait, továbbadja a [Zend Engine](https://phpsos.de/hu/php/zend-engine/)-nek, és visszaadja a kimenetet.

A SAPI-t egy csatlakozódugóhoz lehet hasonlítani: a motor ugyanaz marad, de a dugótól függően illeszkedik az Apache-hoz, FastCGI-n át az Nginxhez, a LiteSpeedhez vagy a terminálhoz. Minden változatnak megvannak a saját erősségei, konfigurációs útjai és buktatói.

A SAPI főként három, a mindennapokban számító dologról dönt:

1. **Folyamatmodell:** A PHP a webszerverben fut, önálló szolgáltatásként tartós workerekkel, vagy hívásonként rövid életű folyamatként?
2. **Konfiguráció:** Melyik php.ini kerül beolvasásra, és hol szerepelhetnek további beállítások, például a `.htaccess`-ben, egy `.user.ini`-ben vagy az FPM-poolban?
3. **Jogok és elkülönítés:** Melyik felhasználó alatt fut a kód, és szétválaszthatók-e egymástól a weboldalak?

A tárhelyvezérlő paneleken a SAPI-k más néven jelennek meg. A Plesk például olyan PHP-kezelőkről beszél, mint a „FPM application”, a „FastCGI application” vagy az „Apache module”. Ugyanazokat az üzemmódokat jelentik, amelyeket ez az oldal ír le. Kétség esetén az alább látható ellenőrző fájl segít, amely a tényleges SAPI-nevet mutatja.

## Milyen PHP-SAPI-k léteznek?

A PHP-kézikönyv a `php_sapi_name()` visszatérési értékei között többek közt ezeket említi: `apache`, `apache2handler`, `cgi` (a PHP 5.3-ig), `cgi-fcgi`, `cli`, `cli-server`, `embed`, `fpm-fcgi`, `litespeed` és `phpdbg`. A lista kifejezetten nem teljes.

| SAPI-név | Üzemmód | Tipikus felhasználás | Folyamatmodell |
|---|---|---|---|
| `fpm-fcgi` | PHP-FPM | Nginx, Apache `proxy_fcgi`-vel, tárhelyvezérlő panelek | önálló szolgáltatás worker-poolokkal |
| `apache2handler` | mod_php | régebbi Apache-szerverek, egyszerű Docker-képek | PHP az Apache-folyamatban |
| `cgi-fcgi` | php-cgi | régi telepítések, egyes Windows-beállítások | folyamat kérésenként vagy FastCGI |
| `litespeed` | LSAPI | LiteSpeed webszerver, sok megosztott tárhely | saját PHP-folyamatok |
| `cli` | parancssor | cron-feladatok, Composer, karbantartó szkriptek | egy folyamat hívásonként |
| `cli-server` | beépített webszerver | csak helyi fejlesztés (`php -S`) | egy fejlesztői szerver |
| `embed` | beágyazott | PHP más programokban | a programtól függ |
| `phpdbg` | hibakereső | hibakeresés | interaktív |

A FrankenPHP egy modern alkalmazásszerver, amely közvetlenül beágyazza a PHP-t. Ezt is érinti a PHP2Shell, és saját frissítési útjai vannak; részletek a [FrankenPHP védelme](https://phpsos.de/hu/server/frankenphp/) oldalon.

## Így ellenőrizheti a szerver SAPI-ját

Egy weboldal SAPI-ját csak a webszerveren keresztül tudhatja meg, a parancssoron át nem. Egy kis ellenőrző fájl elég:

```php
<?php
// sapi-check.php: a meghívás után azonnal törölje
header('Content-Type: text/plain');
echo PHP_SAPI, "\n", PHP_VERSION, "\n", php_ini_loaded_file(), "\n";
```

A parancssorban a telepített változatok és szolgáltatások csak olvasva felmérhetők:

```bash
php -r 'echo PHP_SAPI, PHP_EOL;'          # mindig "cli"
ls /usr/sbin/php-fpm* 2>/dev/null           # telepített FPM-verziók
systemctl list-units --type=service | grep -i -E "php|lsws|apache2|httpd"
apachectl -M 2>/dev/null | grep -i php     # a mod_php be van töltve?
```

## Miért lehet minden SAPI-nak saját php.ini-je

A PHP-kézikönyv szerint a PHP először egy `php-SAPI.ini` nevű fájlt keres, például `php-cli.ini`-t, és csak azután a `php.ini`-t. Az olyan disztribúciók, mint a Debian és az Ubuntu, ennél tovább mennek, és SAPI-nként külön könyvtárakat hoznak létre, például `/etc/php/8.3/fpm/` és `/etc/php/8.3/cli/`.

Az időpont is eltér: szervermodulok esetén a PHP a kézikönyv szerint a konfigurációt csak a webszerver indításakor olvassa be egyszer, CGI és CLI esetén minden híváskor. Aki egy beállítást módosít, ezért tudnia kell, melyik SAPI-t érinti. Bővebben: [A php.ini elmagyarázva](https://phpsos.de/hu/php/php-ini-erklaert/).

## SAPI és biztonság: amit a PHP2Shell megmutatott

A jelentések szerint a PHP2Shell a PHP-FPM-et, az Apache-ot mod_php-vel, a php-cgi-t, a FrankenPHP-t és a LiteSpeedet érinti. A PHP-csapat a kockázatot a mod_php esetén értékeli a legmagasabbra, mert ott még azelőtt bemutattak egy exploitot, hogy alkalmazáskód futna. Az okok a [Miért a legmagasabb a mod_php kockázata](https://phpsos.de/hu/php2shell/mod-php-risiko/) oldalon olvashatók.

Az üzemeltetés szempontjából a SAPI elsősorban egyet jelent: meghatározza, mit kell a frissítés után újraindítani.

1. **PHP-FPM:** minden telepített verzió összes poolja és workere
2. **mod_php:** a teljes Apache-szolgáltatás, nem csak egy reload
3. **php-cgi és FastCGI-beállítások:** az összes megmaradt PHP-folyamat
4. **LiteSpeed:** a webszerver PHP-folyamatai a gyártó útmutatója szerint
5. **CLI:** nincsenek tartós folyamatok, de a csomagot is frissíteni kell, hogy az ellenőrzések helyesek legyenek

Középtávon megéri a váltás a mod_php-ról. A PHP-kézikönyv új Apache-telepítésekhez a PHP-FPM-et ajánlja a `mod_proxy_fcgi`-vel. Az alapokat a [PHP-FPM elmagyarázva](https://phpsos.de/hu/php/php-fpm-erklaert/) oldal írja le.

## Hogyan segít konkrétan a PHP SOS?

- **SAPI-k felmérése:** Minden szerverre megállapítjuk, mely üzemmódok és PHP-verziók aktívak ténylegesen.
- **Helyes újraindítás:** A [PHP-javítási szolgáltatáson](https://phpsos.de/hu/leistungen/php-patch-service/) keresztül minden SAPI-t frissítünk, és igazoljuk az összes folyamat újraindítását.
- **Konfiguráció hozzárendelése:** Megmutatjuk, mely php.ini és mely poolbeállítások érvényesek az Ön weboldalára.
- **Átállás tervezése:** Ahol mod_php vagy php-cgi fut, megtervezzük és teszteljük a váltást PHP-FPM-re.


## Gyakori kérdések

**Hogyan tudom meg, melyik SAPI-t használja a weboldalam?**  
A legmegbízhatóbban egy rövid időre elhelyezett ellenőrző fájllal, amely kiírja a PHP_SAPI vagy a php_sapi_name() értékét, és a webszerveren keresztül hívják meg. A parancssorban mindig cli-t kap, ami a weboldalról semmit sem mond. Utána az ellenőrző fájlt azonnal törölje.

**Melyik SAPI a legbiztonságosabb?**  
Egyik sem biztonságos önmagában. A PHP-FPM kínálja viszont a legtöbb elkülönítési eszközt: külön poolokat, felhasználókat és weboldalanként zárolt beállításokat. A PHP-kézikönyv új Apache-telepítésekhez kifejezetten a mod_php helyett a PHP-FPM-et ajánlja.

**Érinti a PHP2Shell a PHP parancssori változatát?**  
Az ismert jelentések a PHP-FPM-et, a mod_php-t, a php-cgi-t, a FrankenPHP-t és a LiteSpeedet említik. A CLI nem dolgoz fel a hálózatról érkező kéréseket. Többnyire azonban ugyanabból a csomagforrásból származik, és mindig frissíteni kell, már csak azért is, hogy az ellenőrző parancsok a helyes állapotot mutassák.

**Használhat egy szerver egyszerre több SAPI-t?**  
Igen, ez még szokásos is. Szinte minden szerveren a webes SAPI mellett ott van a CLI a cron-feladatokhoz és a karbantartáshoz. Gyakran több PHP-FPM-verzió is fut párhuzamosan. Mindegyiket külön kell frissíteni és újraindítani.

## Források

- [PHP-kézikönyv: php_sapi_name()](https://www.php.net/manual/en/function.php-sapi-name.php)
- [PHP-kézikönyv: A konfigurációs fájl](https://www.php.net/manual/en/configuration.file.php)
- [PHP-kézikönyv: Apache 2 Unixon](https://www.php.net/manual/en/install.unix.apache2.php)
- [php.net: Biztonsági közlemények](https://www.php.net/)
