# PHP ietvari (frameworks) pārskatā

> PHP ietvari pārskatā: ko spēj Laravel, Symfony, Laminas, Slim un citi, kā izvēlēties ietvaru un ko tas nozīmē jūsu lietojumprogrammas drošībai.

Avots: https://phpsos.de/lv/php/php-frameworks/  
Aktuāls uz: 25.10.2026  
Pakalpojuma sniedzējs: PHP SOS, PHP ārkārtas palīdzība un serveru drošība. Tūlītēja palīdzība pa WhatsApp: https://wa.me/491736494914?text=Sveiki%2C%20PHP%20SOS%2C%20mums%20nepiecie%C5%A1ama%20pal%C4%ABdz%C4%ABba%20ar%20m%C5%ABsu%20PHP%20serveri.%20Uz%C5%86%C4%93mums%3A%20%E2%80%A6%20Vietne%3A%20%E2%80%A6

**Īsi:** PHP ietvars (framework) ir pamatkarkass no atkārtoti lietojama koda, kas jau risina tipiskus tīmekļa lietojumprogrammas uzdevumus: pieprasījumu novirzīšanu uz pareizo kodu, veidlapu datu apstrādi, darbu ar datubāzēm, izvades veidošanu. Zināmi PHP ietvari ir Laravel, Symfony, Laminas, CodeIgniter, Yii, CakePHP un Slim. Ietvars nes līdzi drošības elementus, bet neaizsargā pret ievainojamībām PHP interpretatorā, piemēram, PHP2Shell.

## Kas ir PHP ietvars?

Bez ietvara katra komanda maršrutēšanu, veidlapu pārbaudi, sesijas un kļūdu apstrādi raksta no jauna. Ietvars šim nolūkam nosaka fiksētus elementus un konvencijas. Tas ietaupa laiku, padara kodu lasāmu jauniem izstrādātājiem un drošības funkcijas apvieno vienā vietā, nevis izkaisa pa simtiem failu.

Vadībai svarīga ir galvenokārt viena sekas: izvēloties ietvaru, uz gadiem saistāties ar tā izlaidumu ciklu. Ja ietvars PHP versiju vairs neatbalsta vai pats vairs netiek uzturēts, katrs atjauninājums kļūst dārgāks.

Lielākā daļa modernu ietvaru tiek instalēti ar [Composer](https://phpsos.de/lv/php/composer/) un ievēro PHP-FIG standartus, piemēram, PSR-4 autoloading vai PSR-7 HTTP ziņojumiem.

## Zināmie PHP ietvari salīdzinājumā

Turpmākais pārskats izmanto projektu pašaprakstus to sākumlapās. Vērtējumus pēc popularitātes vai tirgus daļas apzināti nesniedzam, jo tam nav uzticama kopīga avota.

| Ietvars | Pašraksturojums (pēc jēgas) | Tipisks pielietojums |
|---|---|---|
| Laravel | ietvars „baterijas komplektā“ tīmekļa lietojumprogrammām | paštaisīti risinājumi, portāli, SaaS |
| Symfony | jaudīgs ietvars ar atkārtoti lietojamām komponentēm | lielas, ilgdzīvojošas lietojumprogrammas; komponentes citos projektos |
| Laminas | kopienas uzturēta Zend Framework turpināšana | uzņēmumu lietojumprogrammas, middleware |
| CodeIgniter | mazs ietvars ar spēcīgām funkcijām | mazākas lietojumprogrammas, zems ieejas slieksnis |
| Yii | ietvars ātrai moderno lietojumprogrammu izstrādei | tīmekļa lietojumprogrammas, atsevišķu CMS pamats |
| CakePHP | ietvars ar skaidrām MVC konvencijām | klasiskas datubāzu lietojumprogrammas |
| Slim | mikroietvars tīmekļa lietojumprogrammām un API | slaidi API, middleware pakalpojumi |

Symfony savā sākumlapā min Drupal, Laravel, API Platform un Composer kā projektus, kas izmanto Symfony komponentes. Ietvars tātad bieži atrodas arī tur, kur to tieši neredz. Kā tas izskatās CMS un veikalos, parāda lapa [CMS un veikalu sistēmas uz PHP](https://phpsos.de/lv/php/cms-und-shops-auf-php/).

## Kopīgi gandrīz visu ietvaru elementi

Neraugoties uz atšķirīgo filozofiju, lielākajai daļai ietvaru ir līdzīga uzbūve. Visi pieprasījumi iet caur vienu ieejas punktu, front controller, parasti `public/index.php`. Tīmekļa serveris katru adresi, kurai nav īsta faila, nodod šim failam.

```nginx
# Piemērs: Nginx nezināmus ceļus novirza uz front controller
root /var/www/app/public;

location / {
    try_files $uri /index.php$is_args$args;
}
```

Apache gadījumā šo uzdevumu parasti pilda pārrakstīšanas noteikums publiskajā mapē, citiem tīmekļa serveriem līdzīgs noteikums. Visos gadījumos svarīgi, lai tīmekļa serveris norādītu uz mapi `public`, nevis uz projekta galveno direktoriju. Nepareizi iestatīts dokumentu direktorijs ir viens no biežākajiem iemesliem, kāpēc konfigurācijas faili pēkšņi kļūst publiski pieejami.

Drošības priekšrocība: tikai mape `public` atrodas webroot. Konfigurācija, pirmkods un `vendor` atrodas par vienu līmeni augstāk un ar URL nav sasniedzami. Pēc tam maršrutētājs piešķir kontrolieri (controller), middleware pārbauda pieteikšanos vai CSRF tokenu, un veidņu dzinējs veido izvadi ar automātisku maskēšanu.

## Kā izvēlēties ietvaru?

Jaunizstrādei vai esoša projekta pārņemšanai palīdz šie jautājumi:

1. **Apkope un izlaidumu cikls:** Cik ilgi versijas tiek apgādātas ar drošības atjauninājumiem un vai ir versijas ar pagarinātu atbalstu?
2. **PHP atbalsts:** Vai izmantotā ietvara versija darbojas PHP versijā, kas pati vēl saņem drošības atjauninājumus? Tas ir norādīts projekta prasībās.
3. **Komanda un pakalpojumu sniedzējs:** Vai komanda ietvaru pazīst un vai ārkārtas gadījumā tam atradīsiet speciālistus?
4. **Ekosistēma:** Vai ir uzturētas pakotnes jūsu prasībām vai daudz kas būtu jābūvē pašam?
5. **Standarti:** Ja ietvars ievēro PSR saskarnes, elementus vēlāk var vieglāk nomainīt.

Laravel un Symfony projektiem mums ir savas aizsardzības lapas: [Laravel lietojumprogrammu aizsardzība](https://phpsos.de/lv/plattformen/laravel/) un [Symfony lietojumprogrammu aizsardzība](https://phpsos.de/lv/plattformen/symfony/).

## Ko ietvars drošībai dod un ko ne

Ietvari izstrādātājiem noņem daudzus kļūdu avotus: sagatavotus datubāzes vaicājumus pret SQL injekciju, automātisku maskēšanu pret Cross-Site Scripting, CSRF aizsardzību veidlapām, drošus paroļu jaucējkodus. Tas tomēr darbojas tikai tad, ja komanda šos elementus lieto un neapiet.

Pret PHP2Shell tas viss nepalīdz. CVE-2026-109618 un CVE-2026-109619 atrodas PHP interpretatorā. PHP komanda risku mod_php gadījumā vērtē visaugstāk; tur exploit tika demonstrēts, vēl pirms tiek izpildīts lietojumprogrammas kods. Ietvars tātad vispār netiek pie vārda. Palīdz tikai atjauninājums uz PHP 8.5.12, 8.4.27, 8.3.36 vai 8.2.35 un visu PHP procesu pārstartēšana.

> **Svarīgi:**
> Ietvara atjauninājums un PHP atjauninājums ir divi atsevišķi uzdevumi. Abi pieder apkopei, bet PHP2Shell aizver tikai PHP atjauninājums.

Vecākiem projektiem klāt nāk vēl viens risks: ja lietojumprogramma ir piesaistīta vecai ietvara versijai, bieži tā ir piesaistīta arī vecai PHP versijai. PHP 8.1 un vecākām versijām PHP projekts oficiālu atjauninājumu vairs nesniedz.

## Kā PHP SOS palīdz konkrēti?

- Mēs noskaidrojam jūsu lietojumprogrammas ietvaru, versiju un PHP prasības un konstatējam, vai abi vēl saņem drošības atjauninājumus.
- Mēs pārbaudām uzbūvi: vai webroot atrodas tikai `public`, vai konfigurācija un `vendor` ir aizsargāti?
- Mēs ietvara un PHP atjauninājumus plānojam atsevišķi, testējam un ieviešam ar visu darbprocesu pārstartēšanu.
- Paštaisītiem risinājumiem piedāvājam [drošības auditu un penetrācijas testu](https://phpsos.de/lv/leistungen/sicherheitsaudit-penetrationstest/), kas mērķtiecīgi pārbauda ietvara aizsardzības funkciju izmantošanu.


## Biežāk uzdotie jautājumi

**Kurš PHP ietvars ir labākais?**  
Tas atkarīgs no projekta. Izšķiroši ir lietojumprogrammas lielums un mūžs, komandas zināšanas, projekta apkope un aktuālu PHP versiju atbalsts. Labi uzturēts, komandai pazīstams ietvars parasti ir labāka izvēle nekā tikko populārākais.

**Vai ietvars aizsargā pret PHP2Shell?**  
Nē. PHP2Shell atrodas PHP interpretatorā, un saskaņā ar PHP komandu mod_php gadījumā exploit tika demonstrēts, vēl pirms tiek izpildīts lietojumprogrammas kods. Neviens ietvara atjauninājums neaizstāj PHP izpildes vides atjauninājumu un visu darbprocesu pārstartēšanu.

**Kas ir mikroietvars (micro-framework)?**  
Mikroietvars piegādā tikai kodolu, parasti maršrutēšanu, starpprogrammatūru (middleware) un pieprasījuma un atbildes objektus. Piekļuvi datubāzei, veidnes vai veidlapas izvēlas pats. Slim, piemēram, pats sevi dēvē par mikroietvaru PHP.

**Ko nozīmē, ja CMS izmanto Symfony komponentes?**  
Tas izmanto atsevišķus Symfony elementus, piemēram, HTTP apstrādei vai konsolei, nepārņemot visu ietvaru. Drošības ziņojumi par šīm komponentēm tad skar arī CMS, kas ir svarīgi atjauninājumu plānošanā.

## Avoti

- [Symfony](https://symfony.com/)
- [Laravel](https://laravel.com/)
- [Laminas Project](https://getlaminas.org/)
- [Slim Framework](https://www.slimframework.com/)
