# PHP frameworci ukratko

> PHP frameworci ukratko: što nude Laravel, Symfony, Laminas, Slim i drugi, kako birati i što framework znači za sigurnost aplikacije.

Izvor: https://phpsos.de/hr/php/php-frameworks/  
Stanje: 25.10.2026  
Pružatelj: PHP SOS, PHP hitna pomoć i sigurnost poslužitelja. Hitna pomoć putem WhatsAppa: https://wa.me/491736494914?text=Pozdrav%20PHP%20SOS%2C%20trebamo%20pomo%C4%87%20s%20na%C5%A1im%20PHP%20poslu%C5%BEiteljem.%20Tvrtka%3A%20%E2%80%A6%20Web-stranica%3A%20%E2%80%A6

**Ukratko:** PHP framework je temeljni okvir od ponovno upotrebljivog koda koji već rješava tipične zadatke web-aplikacije: usmjeravanje zahtjeva na pravi kod, obrada podataka iz obrazaca, pristup bazama podataka, stvaranje izlaza. Poznati PHP frameworci su Laravel, Symfony, Laminas, CodeIgniter, Yii, CakePHP i Slim. Framework donosi sigurnosne sastavnice, ali ne štiti od ranjivosti u PHP interpreteru poput PHP2Shella.

## Što je PHP framework?

Bez frameworka svaki tim iznova piše usmjeravanje, provjeru obrazaca, sesije i obradu pogrešaka. Framework za to propisuje čvrste gradivne dijelove i konvencije. To štedi vrijeme, kod čini čitljivim novim razvijateljima i sigurnosne funkcije okuplja na jednom mjestu umjesto da ih raspršuje po stotinama datoteka.

Za upravu je ponajprije važna jedna posljedica: odabirom frameworka na godinama se vežete uz njegov ciklus izdanja. Ako framework više ne podržava neku PHP verziju ili se i sam više ne održava, svako ažuriranje postaje skuplje.

Većina modernih frameworka instalira se putem [Composera](https://phpsos.de/hr/php/composer/) i drži se standarda PHP-FIG-a, na primjer PSR-4 za autoloading ili PSR-7 za HTTP poruke.

## Poznati PHP frameworci u usporedbi

Sljedeći pregled koristi samoopise projekata s njihovih početnih stranica. Ocjene prema popularnosti ili udjelu na tržištu svjesno izostavljamo jer za to nema pouzdanog zajedničkog izvora.

| Framework | Samoopis (po smislu) | Tipična uporaba |
|---|---|---|
| Laravel | framework „baterije uključene“ za web-aplikacije | vlastiti razvoj, portali, SaaS |
| Symfony | snažan framework s ponovno upotrebljivim komponentama | velike, dugovječne aplikacije; komponente u drugim projektima |
| Laminas | zajednički održavan nastavak Zend Frameworka | poslovne aplikacije, middleware |
| CodeIgniter | mali framework s jakim funkcijama | manje aplikacije, niska ulazna prepreka |
| Yii | framework za brz razvoj modernih aplikacija | web-aplikacije, osnova pojedinih CMS-ova |
| CakePHP | framework s jasnim MVC konvencijama | klasične aplikacije nad bazama podataka |
| Slim | mikro-framework za web-aplikacije i API-je | vitki API-ji, middleware usluge |

Symfony na svojoj početnoj stranici navodi Drupal, Laravel, API Platform i Composer kao projekte koji koriste Symfony komponente. Framework se dakle često nalazi i ondje gdje ga ne vidite izravno. Kako to izgleda kod CMS-ova i web-trgovina, pokazuje stranica [CMS-ovi i shop sustavi na PHP-u](https://phpsos.de/hr/php/cms-und-shops-auf-php/).

## Zajedničke sastavnice gotovo svih frameworka

Unatoč različitim filozofijama, većina frameworka dijeli sličnu građu. Svi zahtjevi prolaze kroz jednu ulaznu točku, front controller, najčešće `public/index.php`. Web-poslužitelj mu za to prosljeđuje svaku adresu za koju ne postoji prava datoteka.

```nginx
# Primjer: Nginx nepoznate putanje usmjerava na front controller
root /var/www/app/public;

location / {
    try_files $uri /index.php$is_args$args;
}
```

Kod Apachea taj zadatak najčešće preuzima pravilo prepisivanja u javnoj mapi, a kod drugih web-poslužitelja usporedivo pravilo. U svim je slučajevima važno da web-poslužitelj pokazuje na mapu `public`, a ne na glavni direktorij projekta. Pogrešno postavljen dokumentni direktorij jedan je od najčešćih uzroka zbog kojih konfiguracijske datoteke odjednom postanu javno dostupne.

Prednost za sigurnost: samo mapa `public` nalazi se u webrootu. Konfiguracija, izvorni kod i `vendor` leže jednu razinu iznad i nisu dostupni putem URL-a. Nakon toga router preuzima pridruživanje kontroleru, middleware provjerava prijavu ili CSRF token, a mehanizam predložaka stvara izlaz s automatskim escapeanjem.

## Kako odabrati framework?

Za novi razvoj ili preuzimanje postojećeg projekta pomažu ova pitanja:

1. **Održavanje i ciklus izdanja:** Koliko se dugo verzije opskrbljuju sigurnosnim ažuriranjima i postoje li verzije s produljenom podrškom?
2. **PHP podrška:** Radi li korištena verzija frameworka na PHP verziji koja i sama još dobiva sigurnosna ažuriranja? To piše u zahtjevima projekta.
3. **Tim i pružatelj usluga:** Poznaje li tim framework i možete li u hitnom slučaju za njega pronaći stručnjake?
4. **Ekosustav:** Postoje li održavani paketi za Vaše zahtjeve ili bi se mnogo toga moralo izgraditi samostalno?
5. **Standardi:** Ako se framework drži PSR sučelja, sastavnice se kasnije lakše zamjenjuju.

Za Laravel i Symfony projekte imamo zasebne stranice o osiguravanju: [Osiguravanje Laravel aplikacija](https://phpsos.de/hr/plattformen/laravel/) i [Osiguravanje Symfony aplikacija](https://phpsos.de/hr/plattformen/symfony/).

## Što framework za sigurnost postiže, a što ne

Frameworci razvijateljima oduzimaju mnoge izvore pogrešaka: pripremljeni upiti nad bazom protiv SQL injectiona, automatsko escapeanje protiv cross-site scriptinga, CSRF zaštita za obrasce, sigurni hashevi lozinki. No to funkcionira samo ako tim te sastavnice koristi, a ne zaobilazi.

Protiv PHP2Shella sve to ne pomaže. CVE-2026-109618 i CVE-2026-109619 leže u PHP interpreteru. PHP tim rizik kod mod_php-a ocjenjuje najvišim; tamo je pokazan exploit prije nego što se uopće izvrši kod aplikacije. Framework tako uopće ne dolazi do izražaja. Pomaže samo ažuriranje na PHP 8.5.12, 8.4.27, 8.3.36 ili 8.2.35 i ponovno pokretanje svih PHP procesa.

> **Važno:**
> Ažuriranje frameworka i ažuriranje PHP-a dva su odvojena zadatka. Oba pripadaju u održavanje, ali samo ažuriranje PHP-a zatvara PHP2Shell.

Kod starijih projekata dolazi još jedan rizik: ako aplikacija visi na staroj verziji frameworka, često visi i na staroj verziji PHP-a. Za PHP 8.1 i starije PHP projekt više nema službenih ažuriranja.

## Kako PHP SOS konkretno pomaže?

- Utvrđujemo framework, verziju i PHP zahtjeve Vaše aplikacije te provjeravamo dobivaju li oboje još sigurnosna ažuriranja.
- Provjeravamo građu: nalazi li se u webrootu samo `public`, jesu li konfiguracija i `vendor` zaštićeni?
- Ažuriranja frameworka i PHP-a planiramo odvojeno, testiramo ih i instaliramo uz ponovno pokretanje svih workera.
- Za vlastiti razvoj nudimo [sigurnosni audit i penetracijski test](https://phpsos.de/hr/leistungen/sicherheitsaudit-penetrationstest/) koji ciljano provjerava korištenje zaštitnih funkcija frameworka.


## Česta pitanja

**Koji je PHP framework najbolji?**  
To ovisi o projektu. Odlučujući su veličina i vijek trajanja aplikacije, znanje u timu, održavanje projekta i podrška za aktualne PHP verzije. Dobro održavan framework poznat timu najčešće je bolji izbor od onog koji je trenutačno najpopularniji.

**Štiti li framework od PHP2Shella?**  
Ne. PHP2Shell leži u PHP interpreteru, a prema PHP timu kod mod_php-a pokazan je exploit prije nego što se uopće izvrši kod aplikacije. Nikakvo ažuriranje frameworka ne zamjenjuje ažuriranje PHP izvršnog okruženja i ponovno pokretanje svih workera.

**Što je mikro-framework?**  
Mikro-framework isporučuje samo jezgru, tipično usmjeravanje, middleware i objekte zahtjeva i odgovora. Pristup bazi podataka, predloške ili obrasce dodajete sami. Slim se, na primjer, sam opisuje kao mikro-framework za PHP.

**Što znači kada CMS koristi Symfony komponente?**  
Koristi pojedine gradivne dijelove Symfonyja, na primjer za HTTP obradu ili konzolu, bez preuzimanja cijelog frameworka. Sigurnosne objave o tim komponentama tada se tiču i CMS-a, što je važno za planiranje ažuriranja.

## Izvori

- [Symfony](https://symfony.com/)
- [Laravel](https://laravel.com/)
- [Laminas Project](https://getlaminas.org/)
- [Slim Framework](https://www.slimframework.com/)
