# CGI u FastCGI: il-bażi

> CGI u FastCGI ma' PHP spjegati: proċess għal kull talba jew workers permanenti, ir-rwol ta' php-cgi u PHP-FPM, settings ta' cgi u regoli tas-sigurtà.

Sors: https://phpsos.de/mt/php/cgi-und-fastcgi/  
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:** CGI (Common Gateway Interface) huwa interface antika li fiha s-server tal-web jibda programm ġdid għal kull talba, ma' PHP il-programm `php-cgi`. FastCGI huwa l-iżvilupp ulterjuri: il-proċessi ta' PHP jaħdmu b'mod permanenti u jirċievu ħafna talbiet permezz ta' socket. PHP-FPM hija l-aktar implimentazzjoni importanti ta' FastCGI għal PHP. Rilevanti għas-sigurtà huma fuq kollox is-settings `cgi.*` u r-regola li aċċess FastCGI ma jistax qatt jintlaħaq pubblikament.

## X'inhu CGI?

CGI huwa wieħed mill-eqdem metodi li bihom is-servers tal-web joħolqu kontenut dinamiku. Il-manwal ta' PHP jirreferi, fis-setting `cgi.rfc2616_headers`, għal RFC 3875, l-ispeċifikazzjoni tal-Common Gateway Interface. Anki l-bidu ta' PHP kien programmi CGI: Rasmus Lerdorf kiteb fl-1994 l-ewwel „Personal Home Page Tools“ bħala fajls binarji CGI bl-C.

Il-prinċipju: għal kull talba s-server tal-web jibda proċess ġdid, jgħaddi d-dejta tat-talba permezz ta' varjabbli tal-ambjent u l-input standard u jaqra t-tweġiba mill-output standard. Wara l-proċess jintemm. Skont il-manwal ta' PHP, ma' CGI u CLI PHP terġa' taqra l-php.ini tagħha ma' kull sejħa, ma' moduli tas-server biss meta tibda.

Dan jagħmel lil CGI robust, għax kull talba tibda b'proċess frisk. Imma jagħmlu wkoll bil-mod: il-bidu tal-proċess, it-tagħbija tal-konfigurazzjoni u l-inizjalizzazzjoni tal-estensjonijiet jieklu ħin ma' kull talba.

## X'inhu FastCGI?

FastCGI isolvi l-problema tal-prestazzjoni billi l-proċessi jibqgħu ħajjin. Is-server tal-web jikkonnettja permezz ta' Unix socket jew port TCP ma' proċess li jkun qed jaħdem u jibgħatlu t-talba fil-protokoll FastCGI. Il-proċess jipproċessaha u jistenna t-talba li jmiss.

| Karatteristika | CGI | FastCGI b'php-cgi | FastCGI b'PHP-FPM |
|---|---|---|---|
| Proċess għal kull talba | iva | le | le |
| Isem tal-SAPI | `cgi-fcgi` | `cgi-fcgi` | `fpm-fcgi` |
| Pools b'utent proprju | le | le | iva |
| Kontroll tal-proċessi | server tal-web | modulu tas-server tal-web, pereżempju mod_fcgid | proċess master proprju |
| `.user.ini` jinqara | iva | iva | iva |

PHP-FPM huwa, skont il-manwal, l-implimentazzjoni primarja ta' FastCGI ta' PHP. Iżid mal-protokoll amministrazzjoni tal-proċessi, pools, paġni tal-istatus u slowlog. Id-dettalji jinsabu taħt [PHP-FPM spjegat](https://phpsos.de/mt/php/php-fpm-erklaert/).

## Is-settings tal-cgi fil-php.ini

Għat-tħaddim CGI, PHP għandha settings proprji. Il-valuri u d-deskrizzjonijiet li ġejjin joħorġu mill-manwal ta' PHP:

1. **`cgi.force_redirect`** (standard 1, `INI_SYSTEM`): skont il-manwal meħtieġ biex PHP titħaddem b'mod sigur bħala CGI taħt il-biċċa l-kbira tas-servers tal-web. Tintefa „bir-riskju tiegħek“ biss; taħt IIS irid ikun mitfi.
2. **`cgi.fix_pathinfo`** (standard 1, `INI_SYSTEM`): jipprovdi valuri korretti ta' `PATH_INFO` u `PATH_TRANSLATED`. L-iskripts għandhom jużaw `SCRIPT_FILENAME` minflok `PATH_TRANSLATED`.
3. **`cgi.discard_path`** (standard 0, `INI_SYSTEM`): jippermetti li l-fajl binarju CGI jitpoġġa b'mod sigur barra mid-direttorju tal-web, mingħajr ma tista' tiġi evitata l-protezzjoni ta' `.htaccess`.
4. **`fastcgi.impersonate`** (standard 0, `INI_SYSTEM`): rilevanti biss għal IIS taħt Windows.
5. **`user_ini.filename`** u **`user_ini.cache_ttl`** (standard `.user.ini` u 300 sekonda): jikkontrollaw jekk u kemm-il darba PHP taqra fajls `.user.ini`.

Ma' Nginx jappartjeni hawnhekk trasferiment nadif tal-mogħdija tal-iskrip. Mudell bażiku li jinqara, mingħajr garanzija għal kull ambjent:

```nginx
location ~ \.php$ {
    try_files $uri =404;               # agħti lil PHP biss fajls eżistenti
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
```

Il-linja `try_files $uri =404;` jipprevjeni li talbiet għal mogħdijiet `.php` li ma jeżistux jiġu mgħoddija lil PHP.

## Għaliex aċċess FastCGI miftuħ huwa perikoluż

Il-manwal ta' PHP iwissi espliċitament: min jista' jiftaħ konnessjoni FastCGI ma' PHP jikkontrolla l-konfigurazzjoni tat-talba, pereżempju `auto_prepend_file`, u b'hekk jista' jesegwixxi kodiċi arbitrarju. Ir-raġuni hi li s-servers tal-web jistgħu jibagħtu settings ta' PHP permezz ta' parametri FastCGI bħal `PHP_VALUE` u `PHP_ADMIN_VALUE`.

Minn dan jinqalgħu regoli ċari:

- Qabbdu PHP-FPM jew php-cgi f'modalità FastCGI permezz ta' Unix socket biss, jekk is-server tal-web jaħdem fuq l-istess host.
- Ma' TCP issettjaw `listen.allowed_clients` u ssakkru l-port fil-firewall; indikazzjonijiet dwar dan fl-artikolu [Firewall għas-servers tal-web](https://phpsos.de/mt/blog/firewall-fuer-webserver/).
- Żommu d-drittijiet tas-socket stretti b'`listen.owner`, `listen.group` u `listen.mode`.

> **Importanti:**
> Ivverifikaw b'`ss -lntp | grep -i php` jekk proċess ta' PHP huwiex jilqa' konnessjonijiet fuq indirizz TCP. Rabta ma' `0.0.0.0` jew ma' indirizz pubbliku hija każ ta' azzjoni urġenti.

## CGI, FastCGI u PHP2Shell

Kemm php-cgi kif ukoll PHP-FPM huma affettwati minn PHP2Shell. Għat-tnejn japplika: aġġornament għal 8.5.12, 8.4.27, 8.3.36 jew 8.2.35 jew backport ikkonfermat, imbagħad itemmu u erġgħu ibdew il-proċessi kollha ta' PHP li jkunu qed jaħdmu. Ma' setups FastCGI b'php-cgi l-proċessi spiss ikomplu jaħdmu mingħajr ma wieħed jinduna, għax ebda servizz proprju ma jamministrahom. Kif issibu u tneħħu dan il-wirt qadim jinsab taħt [php-cgi: wirt qadim b'riskju](https://phpsos.de/mt/server/php-cgi/). Fi Plesk il-varjanti għandhom ismijiet differenti; l-għajnuna tagħti [Plesk: nifhmu l-handlers ta' PHP](https://phpsos.de/mt/blog/plesk-php-handler/).

## Kif jgħin PHP SOS konkretament?

- **Niġbru l-handlers:** Niddeterminaw jekk il-websajts tagħkom jaħdmux permezz ta' CGI, FastCGI b'php-cgi jew PHP-FPM.
- **Nagħlqu l-aċċessi:** Nivverifikaw sockets, ports u regoli tal-firewall, biex ebda aċċess FastCGI ma jintlaħaq minn barra.
- **Nippatchjaw u nnaddfu:** Naġġornaw PHP u ntemmu l-proċessi qodma kollha, anki istanzi orfni ta' php-cgi.
- **Nissostitwixxu:** Fil-qafas tal-[tisħiħ tas-server](https://phpsos.de/mt/leistungen/server-haertung/) nissostitwixxu l-wirt qadim CGI b'PHP-FPM b'pools proprji.


## Mistoqsijiet frekwenti

**FastCGI huwa l-istess bħal PHP-FPM?**  
Le. FastCGI huwa protokoll li permezz tiegħu server tal-web jitkellem ma' proċess ta' applikazzjoni. PHP-FPM huwa programm li jimplimenta dan il-protokoll għal PHP u jamministra l-proċessi. Anki php-cgi jista' jitkellem FastCGI, imma ma joffrix pools.

**Għaliex CGI pur jitqies skadut?**  
Ma' CGI s-server tal-web jibda proċess ġdid għal kull talba, u PHP taqra l-konfigurazzjoni tagħha kull darba. Dan jiswa ħin u riżorsi. FastCGI u PHP-FPM iżommu proċessi lesti b'mod permanenti u għalhekk huma ferm aktar effiċjenti.

**X'inhu .user.ini?**  
Fajl .user.ini huwa fajl żgħir tal-konfigurazzjoni f'direttorju tal-web. Skont il-manwal ta' PHP, jinqara biss mill-SAPIs CGI u FastCGI, jiġifieri wkoll minn PHP-FPM. Jista' jkun fih biss settings bil-modalitajiet INI_PERDIR, INI_USER jew INI_ALL.

**Kif nagħraf jekk fuq is-server tiegħi jaħdimx php-cgi?**  
Fittxu b'kmandi għall-qari biss bħal ps jew pgrep proċessi bl-isem php-cgi u fil-konfigurazzjoni tas-server tal-web ħarsu lejn entrati bħal mod_fcgid, Action jew ScriptAlias b'php-cgi. Fil-panels tal-hosting il-modalità tat-tħaddim spiss tissejjaħ CGI jew applikazzjoni FastCGI.

## Sorsi

- [Manwal ta' PHP: Settings tal-qalba (cgi.*)](https://www.php.net/manual/en/ini.core.php)
- [Manwal ta' PHP: Fajls .user.ini](https://www.php.net/manual/en/configuration.file.per-user.php)
- [Manwal ta' PHP: Konfigurazzjoni ta' FPM](https://www.php.net/manual/en/install.fpm.configuration.php)
- [Dokumentazzjoni ta' Nginx](https://nginx.org/en/docs/)
