# PHP raamistike ülevaade

> PHP raamistike ülevaade: mida Laravel, Symfony, Laminas, Slim ja teised pakuvad, kuidas valida ning mida raamistik turvalisuse jaoks tähendab.

Allikas: https://phpsos.de/et/php/php-frameworks/  
Seis: 25.10.2026  
Pakkuja: PHP SOS, PHP hädaabi ja serveri turvalisus. Kohene abi WhatsAppis: https://wa.me/491736494914?text=Tere%2C%20PHP%20SOS%2C%20vajame%20abi%20oma%20PHP-serveriga.%20Ettev%C3%B5te%3A%20%E2%80%A6%20Veebisait%3A%20%E2%80%A6

**Lühidalt:** PHP raamistik on taaskasutatavast koodist karkass, mis lahendab veebirakenduse tüüpilised ülesanded juba ette: päringute suunamine õigele koodile, vormiandmete töötlemine, andmebaasidega suhtlemine, väljundi loomine. Tuntud PHP raamistikud on Laravel, Symfony, Laminas, CodeIgniter, Yii, CakePHP ja Slim. Raamistik toob kaasa turvaosi, kuid ei kaitse PHP interpretaatoris olevate aukude eest nagu PHP2Shell.

## Mis on PHP raamistik?

Ilma raamistikuta kirjutab iga meeskond marsruutimise, vormikontrolli, sessioonid ja veakäsitluse uuesti. Raamistik annab selleks ette kindlad ehituskivid ja konventsioonid. See säästab aega, teeb koodi uutele arendajatele loetavaks ning koondab turvafunktsioonid ühte kohta, selle asemel et jaotada need sadade failide vahel.

Juhtkonna jaoks on eelkõige oluline üks tagajärg: raamistiku valikuga seote end aastateks selle väljalasketsüklile. Kui raamistik ei toeta enam mõnda PHP versiooni või ise enam ei hooldata, muutub iga uuendus kallimaks.

Enamik kaasaegseid raamistikke paigaldatakse [Composeri](https://phpsos.de/et/php/composer/) kaudu ja järgivad PHP-FIG standardeid, näiteks PSR-4 autoloadingu või PSR-7 HTTP-sõnumite jaoks.

## Tuntud PHP raamistikud võrdluses

Järgmine ülevaade kasutab projektide enda kirjeldusi nende avalehtedel. Hinnangud populaarsuse või turuosa järgi jätame teadlikult välja, sest selleks puudub usaldusväärne ühine allikas.

| Raamistik | Enesekirjeldus (mõtte järgi) | Tüüpiline kasutus |
|---|---|---|
| Laravel | veebirakenduste raamistik „patareid kaasas“ | oma arendused, portaalid, SaaS |
| Symfony | võimekas raamistik taaskasutatavate komponentidega | suured, kauaealised rakendused; komponendid teistes projektides |
| Laminas | Zend Frameworki kogukonna hooldatud jätk | ettevõtterakendused, vahevara |
| CodeIgniter | väike raamistik tugevate funktsioonidega | väiksemad rakendused, madal sisenemislävi |
| Yii | raamistik kaasaegsete rakenduste kiireks arenduseks | veebirakendused, üksikute CMS-ide alus |
| CakePHP | raamistik selgete MVC konventsioonidega | klassikalised andmebaasirakendused |
| Slim | mikroraamistik veebirakenduste ja API-de jaoks | õhukesed API-d, vahevarateenused |

Symfony nimetab oma avalehel Drupali, Laravelit, API Platformi ja Composerit projektidena, mis kasutavad Symfony komponente. Raamistik peitub seega sageli ka seal, kus seda otse ei näe. Kuidas see CMS-ide ja poodide puhul välja näeb, näitab leht [CMS-id ja poesüsteemid PHP-l](https://phpsos.de/et/php/cms-und-shops-auf-php/).

## Peaaegu kõigi raamistike ühised osad

Hoolimata erinevast filosoofiast jagab enamik raamistikke sama ülesehitust. Kõik päringud jooksevad läbi ühe sisenemispunkti, esikontrolleri, enamasti `public/index.php`. Veebiserver annab selle faili kätte iga aadressi, mille jaoks päris faili ei ole.

```nginx
# Näide: Nginx suunab tundmatud teed esikontrollerile
root /var/www/app/public;

location / {
    try_files $uri /index.php$is_args$args;
}
```

Apache'i puhul täidab selle ülesande enamasti ümberkirjutusreegel avalikus kaustas, teiste veebiserverite puhul sarnane reegel. Kõigil juhtudel on oluline, et veebiserver osutaks kaustale `public`, mitte projekti põhikataloogile. Valesti seatud dokumendikataloog kuulub sagedaseimate põhjuste hulka, miks seadistusfailid äkki avalikult kättesaadavaks muutuvad.

Turvalisuse eelis: veebijuures asub ainult kaust `public`. Seadistus, lähtekood ja `vendor` asuvad ühe taseme kõrgemal ja URL-i kaudu kättesaamatud. Seejärel võtab ruuter üle seostamise kontrolleriga, vahevara kontrollib sisselogimist või CSRF-tokenit ja mallimootor loob väljundi automaatse maskeerimisega.

## Kuidas raamistikku valida?

Uue arenduse või olemasoleva projekti ülevõtmise puhul aitavad need küsimused:

1. **Hooldus ja väljalasketsükkel:** Kui kaua versioone turvauuendustega varustatakse ja kas on olemas pikendatud toega versioone?
2. **PHP toetus:** Kas kasutatav raamistiku versioon töötab PHP versioonil, mis ise veel turvauuendusi saab? See on kirjas projekti nõuetes.
3. **Meeskond ja teenusepakkuja:** Kas meeskond tunneb raamistikku ja kas leiate hädaolukorras selle jaoks spetsialiste?
4. **Ökosüsteem:** Kas teie nõuete jaoks on hooldatud pakette või tuleks palju ise ehitada?
5. **Standardid:** Kui raamistik järgib PSR-liideseid, saab ehituskive hiljem lihtsamini asendada.

Laraveli ja Symfony projektide kaitsmiseks on meil omad lehed: [Laraveli rakenduste kaitsmine](https://phpsos.de/et/plattformen/laravel/) ja [Symfony rakenduste kaitsmine](https://phpsos.de/et/plattformen/symfony/).

## Mida raamistik turvalisuse jaoks pakub ja mida mitte

Raamistikud võtavad arendajatelt ära palju veaallikaid: ettevalmistatud andmebaasipäringud SQL-injektsiooni vastu, automaatne maskeerimine Cross-Site-Scriptingu vastu, CSRF-kaitse vormidele, turvalised paroolide räsid. See toimib aga ainult siis, kui meeskond neid ehituskive kasutab ja neist mööda ei mine.

PHP2Shelli vastu see kõik ei aita. CVE-2026-109618 ja CVE-2026-109619 asuvad PHP interpretaatoris. PHP meeskond hindab riski mod_php puhul kõige suuremaks; seal näidati ekspluateerimist enne, kui rakenduse kood üldse käivitub. Raamistik ei jõua seega üldse mängu. Abi annab ainult uuendus versioonile PHP 8.5.12, 8.4.27, 8.3.36 või 8.2.35 ja kõigi PHP protsesside taaskäivitus.

> **Oluline:**
> Raamistiku uuendus ja PHP uuendus on kaks eraldi ülesannet. Mõlemad kuuluvad hooldusesse, kuid ainult PHP uuendus sulgeb PHP2Shelli.

Vanemate projektide puhul lisandub veel üks risk: kui rakendus on kinni vanas raamistiku versioonis, on see sageli kinni ka vanas PHP versioonis. PHP 8.1 ja vanemate jaoks PHP projektilt ametlikke uuendusi enam ei ole.

## Kuidas PHP SOS konkreetselt aitab?

- Selgitame välja teie rakenduse raamistiku, versiooni ja PHP nõuded ning kontrollime, kas mõlemad saavad veel turvauuendusi.
- Kontrollime ülesehitust: kas veebijuures asub ainult `public`, kas seadistus ja `vendor` on kaitstud?
- Planeerime raamistiku ja PHP uuendused eraldi, testime need ja paigaldame kõigi workerite taaskäivitusega.
- Oma arenduste jaoks pakume [turvaauditit ja läbistustesti](https://phpsos.de/et/leistungen/sicherheitsaudit-penetrationstest/), mis kontrollib sihipäraselt raamistiku kaitsefunktsioonide kasutamist.


## Korduma kippuvad küsimused

**Milline PHP raamistik on parim?**  
See sõltub projektist. Otsustavad on rakenduse suurus ja eluiga, meeskonna oskused, projekti hooldus ning ajakohaste PHP versioonide toetus. Hästi hooldatud, meeskonnale tuttav raamistik on enamasti parem valik kui hetkel kõige populaarsem.

**Kas raamistik kaitseb PHP2Shelli eest?**  
Ei. PHP2Shell asub PHP interpretaatoris ja PHP meeskonna andmetel näidati mod_php puhul ekspluateerimist enne, kui rakenduse kood üldse käivitub. Ükski raamistiku uuendus ei asenda PHP käitusaja uuendust ja kõigi workerite taaskäivitust.

**Mis on mikroraamistik?**  
Mikroraamistik pakub ainult tuuma, tavaliselt marsruutimist, vahevara ning päringu- ja vastuseobjekte. Andmebaasipääsu, mallid või vormid valitakse ise juurde. Slim nimetab ennast näiteks ise PHP mikroraamistikuks.

**Mida tähendab see, kui CMS kasutab Symfony komponente?**  
See kasutab Symfony üksikuid ehituskive, näiteks HTTP töötluse või konsooli jaoks, võtmata üle kogu raamistikku. Nende komponentide turvateated puudutavad siis ka CMS-i, mis loeb uuenduste planeerimisel.

## Allikad

- [Symfony](https://symfony.com/)
- [Laravel](https://laravel.com/)
- [Laminas Project](https://getlaminas.org/)
- [Slim Framework](https://www.slimframework.com/)
