# Composer: il-ġestjoni tal-pakketti għal PHP

> Composer spjegat: nifhmu composer.json, composer.lock, vendor u l-autoloader, inwasslu lill-produzzjoni b'mod nadif u nżommu d-dipendenzi siguri.

Sors: https://phpsos.de/mt/php/composer/  
Stat: 25/10/2026  
Fornitur: PHP SOS, Għajnuna ta' emerġenza għal PHP u sigurtà tas-server. Għajnuna immedjata fuq WhatsApp: https://wa.me/491736494914?text=Bongu%20PHP%20SOS%2C%20g%C4%A7andna%20b%C5%BConn%20g%C4%A7ajnuna%20bis-server%20tal-PHP%20tag%C4%A7na.%20Kumpanija%3A%20%E2%80%A6%20Websajt%3A%20%E2%80%A6

**Fil-qosor:** Composer huwa l-ġestjoni tal-pakketti għal PHP. Jaqra mill-fajl `composer.json` liema libreriji jeħtieġ proġett, iniżżilhom fil-folder `vendor`, iżomm il-verżjonijiet eżatti fil-`composer.lock` u joħloq autoloader li jsib il-klassijiet awtomatikament. Composer għalhekk jamministra l-kodiċi tal-applikazzjoni tagħkom, mhux l-interpretatur ta' PHP nnifsu: aġġornament ta' Composer ma jagħlaqx vulnerabbiltà f'PHP bħal PHP2Shell.

## X'inhu Composer u għalxiex jintuża?

Kważi l-ebda applikazzjoni PHP llum ma tikkonsisti biss minn kodiċi proprju. Frameworks, libreriji tal-posta, ġenerazzjoni ta' PDF jew konnessjonijiet tal-ħlas jiġu miżjuda bħala pakketti lesti. Composer, il-ġestjoni tal-pakketti għal PHP, jiżgura li dawn il-pakketti jingħaqdu f'verżjonijiet xierqa u li kull dipendenza ġġib magħha d-dipendenzi proprji tagħha.

Għal min jieħu d-deċiżjonijiet dan ifisser: parti kbira mill-kodiċi li jaħdem fuq is-server tagħkom joriġina minn terzi. Dan huwa effiċjenti, imma jeħtieġ manutenzjoni. Għall-amministraturi u l-iżviluppaturi dan ifisser: min juża Composer sew jista' f'kull ħin isegwi liema verżjoni ta' liema librerija taħdem fil-produzzjoni.

Is-sors standard għall-pakketti huwa, skont id-dokumentazzjoni ta' Composer, Packagist.org. Sorsi oħra, pereżempju repositorys interni ta' aġenzija, jistgħu jiddaħħlu fil-`composer.json` taħt `repositories`.

## composer.json, composer.lock u vendor: it-tliet komponenti

Composer jaħdem b'tliet affarijiet li wieħed għandu jaf qabel ma jieħu server jew jinkariga aġenzija.

| Komponent | Kontenut | Jappartjeni fir-repository? |
|---|---|---|
| `composer.json` | pakketti mixtieqa b'firxiet ta' verżjonijiet (`require`, `require-dev`), regoli ta' autoload, settings | iva |
| `composer.lock` | verżjonijiet eżatti solvuti tal-pakketti kollha, anki dawk indiretti | iva, skont id-dokumentazzjoni ta' Composer espliċitament |
| `vendor/` | kodiċi mniżżel tal-pakketti u l-autoloader iġġenerat | le, jinħoloq mal-installazzjoni |

Taħt `require` jinsabu pakketti li l-applikazzjoni teħtieġ waqt it-tħaddim. Taħt `require-dev` jinsabu għodod għall-iżvilupp u t-testijiet, pereżempju frameworks tat-test jew analiżi statika. Din is-separazzjoni hija importanti, għax għodod tal-iżvilupp m'għandhom xejn x'jagħmlu fuq server tal-produzzjoni.

```json
{
    "require": {
        "php": ">=8.3",
        "monolog/monolog": "^3.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^11.0"
    },
    "autoload": {
        "psr-4": { "App\\": "src/" }
    }
}
```

Il-verżjonijiet fl-eżempju ntgħażlu biss għal skop ta' illustrazzjoni. Liema verżjonijiet jeħtieġ il-proġett tagħkom jirriżulta mir-rekwiżiti tiegħu.

## install jew update: id-differenza fit-tħaddim

Iż-żewġ kmandi jinstemgħu simili, imma għandhom konsegwenzi differenti ħafna.

- `composer install` jaqra l-`composer.lock` u jinstalla eżattament il-verżjonijiet irreġistrati hemmhekk. Dan huwa riproduċibbli u jappartjeni fil-konsenja.
- `composer update` jerġa' jsolvi d-dipendenzi kollha, iġib l-aħħar verżjonijiet li jaqblu u jerġa' jikteb il-`composer.lock`. Dan jappartjeni fl-iżvilupp, bit-testijiet li jsegwu.

Skont id-dokumentazzjoni ta' Composer, `update` wara l-kitba tal-fajl lock jwettaq ukoll verifika tas-sigurtà (audit), sakemm ma titfiex b'`--no-audit`. `install` ma jivverifikax awtomatikament; għal dan hemm l-għażla `--audit`.

## Autoloading: kif Composer isib il-klassijiet

Composer joħloq il-fajl `vendor/autoload.php`. Hekk kif jiddaħħal darba, PHP tgħabbi kull klassi biss meta tkun meħtieġa. Għall-kodiċi proprju fit-taqsima `autoload` jiġi stabbilit liema namespace jinsab f'liema folder. Għal dan jiġi rrakkomandat PSR-4, standard tal-PHP-FIG. Kif jaħdem eżattament tispjega l-paġna [Namespaces u autoloading](https://phpsos.de/mt/php/namespaces-autoloading/); ħarsa ġenerali lejn l-istandards kollha tagħti l-paġna [Standards PSR](https://phpsos.de/mt/php/psr-standards/).

```php
<?php
require __DIR__ . '/../vendor/autoload.php';

$log = new Monolog\Logger('app');   // jitgħabba awtomatikament meta jkun meħtieġ
```

## Composer fil-produzzjoni: konsenja nadifa

Għall-konsenja ordni fissa wriet li taħdem tajjeb. L-aħjar taħdem f'pipeline tal-build u mhux bl-idejn fuq is-server.

1. **Nivverifikaw il-fajl lock:** `composer validate` jiżgura li `composer.json` huwa validu u l-`composer.lock` aġġornat.
2. **Ninstallaw mingħajr pakketti tal-iżvilupp:** `composer install --no-dev` jaqbeż `require-dev`.
3. **Nottimizzaw l-autoloader:** `--optimize-autoloader` (qasir `-o`) jittrasforma r-regoli f'lista ta' klassijiet. B'`--classmap-authoritative` PHP tgħabbi klassijiet esklussivament minn din il-lista.
4. **Verifika tas-sigurtà:** `composer audit --locked` jivverifika l-verżjonijiet mill-fajl lock kontra avviżi tas-sigurtà magħrufa u jirrapporta pakketti abbandunati.
5. **vendor barra mill-webroot:** Biss il-folder pubbliku bl-iskrip ta' dħul għandu jintlaħaq permezz ta' URL.

```bash
composer validate
composer install --no-dev --optimize-autoloader
composer audit --locked --no-dev
```

`composer outdated` juri barra minn hekk liema pakketti installati għandhom verżjonijiet ġodda. Din hija l-bażi għal aġġornamenti ppjanati minflok azzjonijiet individwali frenetiċi.

## Composer, sigurtà u PHP2Shell

Composer u PHP2Shell jolqtu żewġ livelli differenti. Il-vulnerabbiltajiet CVE-2026-109618 u CVE-2026-109619 jinsabu fl-interpretatur ta' PHP nnifsu. Ġew rranġati f'PHP 8.5.12, 8.4.27, 8.3.36 u 8.2.35, u l-proċessi kollha ta' PHP iridu jerġgħu jinbdew wara. Ebda `composer update` u ebda pakkett f'`vendor` ma jibdel xejn minn dan.

Madankollu Composer jappartjeni f'kull verifika wara inċident. Min iġib kodiċi malizzjuż fuq server jista' jibdel ukoll fajls f'`vendor`, u `vendor/autoload.php` jitgħabba ma' kull talba. `composer install` frisk mill-fajl lock ivverifikat f'direttorju vojt huwa għalhekk metodu tajjeb biex jerġa' jinbena l-istat tal-pakketti. Kif tivverifikaw regolarment id-dipendenzi għal vulnerabbiltajiet magħrufa jiddeskrivi l-gwida [composer audit](https://phpsos.de/mt/ratgeber/composer-abhaengigkeiten-pruefen/).

> **Importanti:**
> Riżultat ħadra ta' `composer audit` ma jgħid xejn dwar l-istat tal-patches ta' PHP. Ivverifikaw ir-runtime ta' PHP separatament, pereżempju bis-[Servizz ta' patch għal PHP](https://phpsos.de/mt/leistungen/php-patch-service/) tagħna.

## Kif jgħin PHP SOS konkretament?

- Niġbru għal kull applikazzjoni l-verżjoni ta' PHP, il-pakketti ta' Composer u l-istat tal-lock u nifirdu b'mod nadif bejn l-interpretatur u l-libreriji.
- Nivverifikaw jekk `vendor` u l-fajl lock jaqblux ma' xulxin u jekk hemmx pakketti tal-iżvilupp jew fajls mibdula fil-produzzjoni.
- Nistabbilixxu konsenja riproduċibbli b'`install --no-dev`, autoloader ottimizzat u audit.
- Wara inċident nerġgħu nibnu l-istat tal-pakketti mill-fajl lock ivverifikat u niddokumentaw ir-riżultat.


## Mistoqsijiet frekwenti

**Il-composer.lock jrid ikun fir-repository ta' Git?**  
Iva. Id-dokumentazzjoni ta' Composer tirrakkomanda espliċitament li l-composer.lock jiġi kommessjat. Hekk biss l-iżvilupp, is-CI u l-produzzjoni jinstallaw eżattament l-istess verżjonijiet tal-pakketti.

**X'inhi d-differenza bejn composer install u composer update?**  
install jinstalla l-verżjonijiet irreġistrati fil-composer.lock. update jerġa' jsolvi d-dipendenzi, iġib verżjonijiet ġodda li jaqblu u jerġa' jikteb il-composer.lock. Fuq is-server tal-produzzjoni jappartjeni biss install.

**Aġġornament ta' Composer jagħlaq il-vulnerabbiltà ta' PHP2Shell?**  
Le. Composer jamministra l-libreriji tal-applikazzjoni tagħkom, mhux l-interpretatur ta' PHP. PHP2Shell tingħalaq biss b'aġġornament tar-runtime ta' PHP għal verżjoni rranġata u r-restart tal-proċessi kollha ta' PHP.

**Fejn għandu jkun il-folder vendor?**  
Idealment barra mid-direttorju tal-web li jintlaħaq pubblikament. Ħafna frameworks iqiegħdu fil-webroot biss folder public, filwaqt li vendor jinsab livell 'il fuq.

## Sorsi

- [Composer: Użu bażiku](https://getcomposer.org/doc/01-basic-usage.md)
- [Composer: Interface tal-linja tal-kmand](https://getcomposer.org/doc/03-cli.md)
- [Composer: L-iskema tal-composer.json](https://getcomposer.org/doc/04-schema.md)
