# SAPI vysvetlené: ako PHP komunikuje s webovým serverom

> PHP SAPI vysvetlené: čo znamenajú fpm-fcgi, apache2handler, cgi-fcgi a cli, ako režim prevádzky overíte a prečo určuje riziko aj to, čo treba reštartovať.

Zdroj: https://phpsos.de/sk/php/sapi-erklaert/  
Stav: 25.10.2026  
Poskytovateľ: PHP SOS, Núdzová pomoc pri PHP a bezpečnosť serverov. Okamžitá pomoc cez WhatsApp: https://wa.me/491736494914?text=Dobr%C3%BD%20de%C5%88%2C%20PHP%20SOS%2C%20potrebujeme%20pomoc%20s%20na%C5%A1%C3%ADm%20serverom%20s%20PHP.%20Spolo%C4%8Dnos%C5%A5%3A%20%E2%80%A6%20Web%3A%20%E2%80%A6

**Stručne:** SAPI znamená Server Application Programming Interface, teda rozhranie, cez ktoré PHP komunikuje so svojím okolím. Typické SAPI sú `fpm-fcgi` (PHP-FPM), `apache2handler` (mod_php), `cgi-fcgi` (php-cgi), `litespeed` a `cli` pre príkazový riadok. SAPI určuje, ako požiadavky prichádzajú, ktorý php.ini platí a ktoré procesy sa musia po aktualizácii reštartovať. Pri PHP2Shell od nej závisí dokonca aj zaradenie rizika.

## Čo je SAPI?

PHP samo je program, ktorý vykonáva kód. Aby mohlo odovzdávať webové stránky, potrebuje spojenie s webovým serverom, s príkazovým riadkom alebo s inou aplikáciou. Toto spojenie je SAPI. Prijíma údaje požiadavky, odovzdáva ich [Zend Engine](https://phpsos.de/sk/php/zend-engine/) a vracia výstup.

SAPI si možno predstaviť ako zástrčku: motor zostáva rovnaký, ale podľa zástrčky sa hodí k Apache, k Nginx cez FastCGI, k LiteSpeed alebo k terminálu. Každý variant má vlastné silné stránky, vlastné cesty konfigurácie a vlastné úskalia.

SAPI rozhoduje predovšetkým o troch veciach, ktoré v každodennej prevádzke záležia:

1. **Procesný model:** Beží PHP vo webovom serveri, ako samostatná služba s trvalými workermi, alebo ako krátkodobý proces pre každé volanie?
2. **Konfigurácia:** Ktorý php.ini sa číta a kde smú byť ďalšie nastavenia, napríklad v `.htaccess`, v `.user.ini` alebo v poole FPM?
3. **Práva a oddelenie:** Pod akým používateľom beží kód a dajú sa viaceré weby navzájom oddeliť?

V hostingových paneloch sa SAPI objavujú pod inými názvami. Plesk hovorí napríklad o obslužných programoch PHP ako „FPM application“, „FastCGI application“ alebo „Apache module“. Myslia sa tie isté režimy prevádzky, ktoré táto stránka opisuje. Pri pochybnostiach pomôže kontrolný súbor nižšie, ktorý zobrazí skutočný názov SAPI.

## Aké SAPI PHP existujú?

Príručka PHP uvádza pre `php_sapi_name()` okrem iného tieto návratové hodnoty: `apache`, `apache2handler`, `cgi` (do PHP 5.3), `cgi-fcgi`, `cli`, `cli-server`, `embed`, `fpm-fcgi`, `litespeed` a `phpdbg`. Zoznam výslovne nie je úplný.

| Názov SAPI | Režim prevádzky | Typické použitie | Procesný model |
|---|---|---|---|
| `fpm-fcgi` | PHP-FPM | Nginx, Apache s `proxy_fcgi`, hostingové panely | samostatná služba s poolmi workerov |
| `apache2handler` | mod_php | staršie servery Apache, jednoduché obrazy Docker | PHP v procese Apache |
| `cgi-fcgi` | php-cgi | staré inštalácie, niektoré nastavenia vo Windows | proces na požiadavku alebo FastCGI |
| `litespeed` | LSAPI | webový server LiteSpeed, mnohí zdieľaní poskytovatelia | vlastné procesy PHP |
| `cli` | príkazový riadok | cronjoby, Composer, údržbové skripty | jeden proces na volanie |
| `cli-server` | vstavaný webový server | iba lokálny vývoj (`php -S`) | vývojový server |
| `embed` | vložené | PHP v iných programoch | podľa programu |
| `phpdbg` | debugger | hľadanie chýb | interaktívne |

FrankenPHP je moderný aplikačný server, ktorý PHP priamo vkladá. Je tiež dotknutý PHP2Shell a má vlastné cesty aktualizácie; podrobnosti v časti [Zabezpečenie FrankenPHP](https://phpsos.de/sk/server/frankenphp/).

## Ako overíte SAPI svojho servera

SAPI webu zistíte iba cez webový server, nie cez príkazový riadok. Stačí malý kontrolný súbor:

```php
<?php
// sapi-check.php: po zavolaní ihneď znova zmazať
header('Content-Type: text/plain');
echo PHP_SAPI, "\n", PHP_VERSION, "\n", php_ini_loaded_file(), "\n";
```

V príkazovom riadku sa dajú nainštalované varianty a služby zistiť len na čítanie:

```bash
php -r 'echo PHP_SAPI, PHP_EOL;'          # vždy "cli"
ls /usr/sbin/php-fpm* 2>/dev/null           # nainštalované verzie FPM
systemctl list-units --type=service | grep -i -E "php|lsws|apache2|httpd"
apachectl -M 2>/dev/null | grep -i php     # je mod_php načítaný?
```

## Prečo môže mať každá SAPI vlastný php.ini

Podľa príručky PHP hľadá PHP najprv súbor `php-SAPI.ini`, teda napríklad `php-cli.ini`, a až potom `php.ini`. Distribúcie ako Debian a Ubuntu idú ďalej a vytvárajú pre každú SAPI vlastné priečinky, napríklad `/etc/php/8.3/fpm/` a `/etc/php/8.3/cli/`.

Líši sa aj okamih načítania: pri serverových moduloch číta PHP konfiguráciu podľa príručky iba raz pri štarte webového servera, pri CGI a CLI pri každom volaní. Kto mení nastavenie, musí preto vedieť, ktorej SAPI sa týka. Viac v časti [php.ini vysvetlený](https://phpsos.de/sk/php/php-ini-erklaert/).

## SAPI a bezpečnosť: čo ukázal PHP2Shell

Podľa hlásení sú PHP2Shell dotknuté PHP-FPM, Apache s mod_php, php-cgi, FrankenPHP a LiteSpeed. Tím PHP hodnotí riziko pri mod_php ako najvyššie, pretože tam bol exploit predvedený ešte predtým, než beží kód aplikácie. Dôvody sú na stránke [Prečo nesie mod_php najvyššie riziko](https://phpsos.de/sk/php2shell/mod-php-risiko/).

Pre prevádzku znamená SAPI predovšetkým jedno: určuje, čo sa po aktualizácii musí reštartovať.

1. **PHP-FPM:** všetky pooly a workery každej nainštalovanej verzie
2. **mod_php:** celá služba Apache, nielen reload
3. **php-cgi a nastavenia FastCGI:** všetky zostávajúce procesy PHP
4. **LiteSpeed:** procesy PHP webového servera podľa návodu výrobcu
5. **CLI:** žiadne trvalé procesy, ale balík aktualizujte tiež, aby kontroly zodpovedali stavu

Dlhodobo sa oplatí prejsť od mod_php. Príručka PHP odporúča pre nové inštalácie Apache PHP-FPM s `mod_proxy_fcgi`. Základy opisuje [PHP-FPM vysvetlené](https://phpsos.de/sk/php/php-fpm-erklaert/).

## Ako konkrétne pomáha PHP SOS?

- **Zmapovať SAPI:** Pre každý server zisťujeme, ktoré režimy prevádzky a verzie PHP sú skutočne aktívne.
- **Reštartovať správne:** Cez [službu záplatovania PHP](https://phpsos.de/sk/leistungen/php-patch-service/) aktualizujeme každú SAPI a dokladáme reštart všetkých procesov.
- **Priradiť konfiguráciu:** Ukážeme, ktorý php.ini a ktoré nastavenia poolu platia pre váš web.
- **Naplánovať prechod:** Tam, kde beží mod_php alebo php-cgi, plánujeme a testujeme prechod na PHP-FPM.


## Časté otázky

**Ako zistím, akú SAPI môj web používa?**  
Najspoľahlivejšie pomocou krátkodobo uloženého kontrolného súboru, ktorý vypíše PHP_SAPI alebo php_sapi_name() a volá sa cez webový server. V príkazovom riadku dostanete vždy cli, čo o webe nič nehovorí. Kontrolný súbor potom ihneď zmažte.

**Ktorá SAPI je najbezpečnejšia?**  
Žiadna nie je sama od seba bezpečná. PHP-FPM však ponúka najviac nástrojov na oddelenie: samostatné pooly, používateľov a zamknuté nastavenia pre každý web. Príručka PHP pre nové inštalácie Apache výslovne odporúča PHP-FPM namiesto mod_php.

**Týka sa PHP2Shell aj verzie pre príkazový riadok?**  
Známe hlásenia uvádzajú PHP-FPM, mod_php, php-cgi, FrankenPHP a LiteSpeed. CLI nespracúva požiadavky zo siete. Pochádza však zvyčajne z toho istého zdroja balíkov a malo by sa aktualizovať vždy, už len preto, aby kontrolné príkazy ukazovali správny stav.

**Môže server používať viac SAPI naraz?**  
Áno, je to dokonca bežné. Takmer každý server má popri webovej SAPI aj CLI pre cronjoby a údržbu. Často navyše paralelne beží niekoľko verzií PHP-FPM. Každú z nich treba samostatne aktualizovať a reštartovať.

## Zdroje

- [Príručka PHP: php_sapi_name()](https://www.php.net/manual/en/function.php-sapi-name.php)
- [Príručka PHP: Konfiguračný súbor](https://www.php.net/manual/en/configuration.file.php)
- [Príručka PHP: Apache 2 v Unixe](https://www.php.net/manual/en/install.unix.apache2.php)
- [php.net: Bezpečnostné hlásenia](https://www.php.net/)
