# Lokálny vývoj PHP: Docker, DDEV a ďalšie

> Lokálny vývoj PHP so vstavaným serverom, Dockerom alebo DDEV: silné stránky, hranice, príklady a ako zostane vývoj a produkcia zhodná v stave záplat.

Zdroj: https://phpsos.de/sk/php/php-lokal-entwickeln/  
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:** Na lokálny vývoj PHP existujú tri bežné cesty: vstavaný webový server (`php -S`) na rýchle pokusy, oficiálne obrazy PHP pre Docker pre reprodukovateľné prostredia a nástroje ako DDEV, ktoré vytvárajú hotové projektové prostredia pre WordPress, TYPO3, Shopware alebo Laravel. Rozhodujúci je menej nástroj než zhoda: lokálne by mala bežať rovnaká verzia PHP s rovnakými rozšíreniami ako naostro. Pre bezpečnosť však nakoniec vždy rozhoduje prostredie na serveri.

## Prečo vlastné vývojové prostredie?

Robiť zmeny priamo na živom serveri je riskantné: každý preklep je okamžite viditeľný pre zákazníkov a testovacie súbory tam radi zostanú. Lokálne prostredie oddeľuje skúšanie od prevádzky. Je zároveň miestom, kde sa nové verzie PHP a bezpečnostné aktualizácie testujú ako prvé.

Pre vedenie firmy a vedúcich IT preto otázka nie je, či vývojové prostredie existuje, ale či zodpovedá živému systému. Lokálne prostredie s PHP 8.4, kým naostro beží ešte 8.1, problémy zahmlieva namiesto toho, aby ich ukázalo. To isté platí pre verziu databázy, webový server a rozšírenia ako `intl`, `gd` alebo `pdo_mysql`: už jedno chýbajúce rozšírenie môže spôsobiť, že sa chyba prejaví až naostro.

## Možnosti v prehľade

| Možnosť | Vhodné pre | Silné stránky | Hranice |
|---|---|---|---|
| Vstavaný server `php -S` | krátke pokusy, malé skripty | bez inštalácie ďalšieho softvéru | nie je náhradou za Nginx alebo Apache, nie pre verejné siete |
| Oficiálny obraz Dockeru | tímy, reprodukovateľné prostredia | verziu možno určiť tagom, blízko prevádzke v kontajneroch | konfiguráciu a súčinnosť viacerých kontajnerov si treba postaviť sám |
| DDEV | projekty CMS a frameworkov | hotové typy projektov, databáza a webový server v cene | vyžaduje Docker, vlastné konvencie |
| Lokálne nainštalované PHP | jednotliví vývojári | rýchle, priame | verzie viacerých projektov sa ťažko udržiavajú paralelne |

## Vstavaný webový server

Od PHP 5.4 obsahuje príkazový riadok malý webový server. Spustí sa v aktuálnom adresári alebo pomocou `-t` v inom adresári dokumentov:

```bash
php -S localhost:8000 -t public/
```

Voliteľne môžete odovzdať skript routera, ktorý sa pri každej požiadavke spustí ako prvý. Príručka je pri zaradení jednoznačná: server má podporovať vývoj, nie je plnohodnotným webovým serverom a nemá sa používať vo verejnej sieti. Viažte ho preto na `localhost`, nie na `0.0.0.0`, inak môže byť za istých okolností dostupný vo firemnej alebo hotelovej sieti WiFi. Viac o príkazovom riadku v [PHP v príkazovom riadku](https://phpsos.de/sk/php/php-cli/).

## Docker: oficiálne obrazy PHP

Oficiálne obrazy existujú vo viacerých variantoch: `cli` pre príkazový riadok, `apache` s Apache a mod_php, `fpm` pre prevádzku za Nginx alebo iným proxy, k tomu varianty Alpine pre malé obrazy. Rýchly štart s Apache:

```bash
docker run --rm -p 8080:80 -v "$PWD":/var/www/html php:8.4-apache
```

Obrazy obsahujú šablóny `php.ini-development` a `php.ini-production` v adresári `$PHP_INI_DIR`. Lokálne dáva zmysel vývojová šablóna, pretože zobrazuje chyby. Pre produkciu dokumentácia obrazu výslovne odporúča produkčnú šablónu. Rozšírenia nainštalujete dodávanými pomocnými skriptmi `docker-php-ext-configure`, `docker-php-ext-install` a `docker-php-ext-enable`. Ako fungujú tagy a digesty, vysvetľuje [Oficiálne obrazy PHP pre Docker](https://phpsos.de/sk/blog/offizielle-php-docker-images/).

## DDEV: hotové prostredia pre CMS a frameworky

DDEV stavia na Dockeri a pre projekt nastaví webový server, PHP, databázu a pomocné služby. Rýchle návody na štart takmer vždy nasledujú rovnaký vzor:

```bash
ddev config --project-type=wordpress --docroot=web
ddev start
ddev composer install
ddev launch
```

Ako typy projektov pozná DDEV okrem iného `wordpress`, `typo3`, `shopware6`, `laravel`, `symfony`, `drupal11`, `magento2` a všeobecný typ `php`. Verziu PHP určíte v `.ddev/config.yaml`; podľa dokumentácie sú možné verzie od 5.6 po 8.5, štandard je 8.4:

```yaml
# .ddev/config.yaml (výrez)
php_version: "8.3"
webserver_type: nginx-fpm   # alternatívne apache-fpm
```

Lokálne prostredie tak zodpovedá živej verzii, aj keď ešte nie je najnovšia.

## Lokálny vývoj, stav záplat a PHP2Shell

Po PHP2Shell viacerí poskytovatelia platforiem upozornili na typickú chybu v úsudku. Vercel podľa bulletinu zdôrazňuje, že aktualizácia lokálneho vývojového prostredia, aplikačného kódu alebo pluginov nestačí; rozhodujúce je prostredie PHP, ktoré skutočne odpovedá. Mať lokálne PHP 8.4.27 nechráni server s 8.4.26.

Naopak, vývojové prostredie prináša vlastné riziká, ktoré sa môžu preniesť do produkcie:

1. **Vývojový ini v produkcii:** `display_errors` je v `php.ini-development` zapnuté. Ak sa tento súbor dostane na server, návštevníci vidia cesty a chybové hlásenia. Pozri [Vypnutie výpisu chýb v produkcii](https://phpsos.de/sk/blog/display-errors-produktion/).
2. **Zabudnuté testovacie súbory:** súbory `phpinfo()`, výpisy databázy alebo súbory `.env` s prístupovými údajmi do nasadenia nepatria.
3. **Otvorené vývojové servery:** `php -S` alebo kontajnery so zverejnenými portmi na počítačoch v sieti.
4. **Zastarané obrazy:** Lokálne obrazy sa neaktualizujú samy; po bezpečnostnom vydaní PHP sa má znova zostaviť aj vývojové prostredie, aby testy bežali s opravenou verziou.

> **Tip:**
> Verziu PHP určte na jednom mieste, napríklad v Dockerfile alebo v `.ddev/config.yaml`, a pri aktualizáciách ju meňte spoločne s konfiguráciou servera.

## Ako PHP SOS konkrétne pomáha?

V [zmluve o bezpečnostnej údržbe](https://phpsos.de/sk/leistungen/security-wartungsvertrag/) dbáme na to, aby vývoj a prevádzka k sebe pasovali:

- **Porovnanie:** Porovnávame verziu PHP a rozšírenia vo vývojovom, testovacom a živom prostredí.
- **Postup aktualizácie:** Nové vydania PHP sa nasadzujú najprv v testovacom prostredí, potom naostro, vždy s reštartom.
- **Kontrola nasadenia:** Dbáme na to, aby sa na server nedostal vývojový ini, testovacie súbory ani prístupové údaje.
- **Dokumentácia:** Kedykoľvek viete, ktorá verzia kde beží.


## Časté otázky

**Smiem vstavaný webový server PHP používať verejne?**  
Nie. Príručka PHP výslovne uvádza, že server spustený pomocou php -S slúži na vývoj a nemá sa používať vo verejnej sieti. Do prevádzky patrí PHP-FPM s Nginx alebo Apache.

**Čo je DDEV?**  
DDEV je nástroj, ktorý stavia na Dockeri a vytvára hotové vývojové prostredia pre projekty PHP. Pozná typy projektov pre WordPress, TYPO3, Shopware 6, Laravel, Drupal a ďalšie systémy.

**Stačí aktualizovať lokálnu verziu PHP?**  
Nie. Proti zraniteľnostiam ako PHP2Shell rozhoduje prostredie PHP, ktoré skutočne odpovedá, teda to na serveri. Lokálne prostredie by však malo mať rovnakú verziu, aby boli testy výpovedné.

**Ktorý php.ini mám lokálne používať?**  
Lokálne dáva zmysel php.ini-development, pretože zobrazuje chyby. V produkcii patrí používať php.ini-production. Oficiálne obrazy Dockeru obsahujú obe šablóny.

## Zdroje

- [Príručka PHP: Vstavaný webový server](https://www.php.net/manual/en/features.commandline.webserver.php)
- [Docker Official Image: PHP](https://hub.docker.com/_/php)
- [DDEV](https://ddev.com/)
