# Conas a phróiseálann PHP uaslódálacha comhad

> Conas a phróiseálann PHP uaslódálacha comhad: multipart/form-data, comhaid shealadacha in upload_tmp_dir, an t-eagar $_FILES, teorainneacha agus cóid earráide.

Foinse: https://phpsos.de/ga/php/datei-uploads-intern/  
Staid: 25/10/2026  
Soláthraí: PHP SOS, Cabhair éigeandála PHP agus slándáil freastalaí. Cabhair láithreach trí WhatsApp: https://wa.me/491736494914?text=Dia%20duit%2C%20a%20PHP%20SOS%2C%20t%C3%A1%20cabhair%20de%20dh%C3%ADth%20orainn%20len%C3%A1r%20bhfreastala%C3%AD%20PHP.%20Cuideachta%3A%20%E2%80%A6%20Su%C3%ADomh%20gr%C3%A9as%C3%A1in%3A%20%E2%80%A6

**Go achomair:** Nuair a uaslódálann brabhsálaí comhad, seolann sé iarratas POST san fhormáid `multipart/form-data`, ina bhfuil réimsí foirme agus ábhar comhad ina gcodanna ar leith, ceann i ndiaidh a chéile. Briseann PHP an t-iarratas seo as a stuaim féin, scríobhann sé gach cuid comhaid i gcomhad sealadach in `upload_tmp_dir`, cuireann sé na sonraí isteach i `$_FILES` agus ansin amháin tosaíonn sé do script. Aistríonn an script an comhad le `move_uploaded_file()`; scriosann PHP gach rud nár aistríodh ag deireadh an iarratais.

## Conair comhaid ón mbrabhsálaí go dtí an script

Do lucht cinnteoireachta is é seo an rud is tábhachtaí: ní próiseas den fheidhmchlár amháin é uaslódáil. Tarlaíonn cuid mhór den obair san ateangaire PHP sula mbíonn cód an CMS nó an tsiopa páirteach ar chor ar bith. Dá bhrí sin bíonn tionchar ag earráidí sa chuid seo de PHP ar gach suíomh gréasáin, cibé an bhfuil foirm uaslódála aige nó nach bhfuil.

An sreabhadh i mbeagán focal:

1. Seoltar an fhoirm le `method="POST"` agus `enctype="multipart/form-data"`.
2. Glacann an freastalaí gréasáin leis an iarratas agus seolann sé ar aghaidh chuig PHP é, de réir an mhodha oibriúcháin trí PHP-FPM, mod_php nó comhéadan eile.
3. Seiceálann PHP teorainneacha ar nós `post_max_size` agus briseann sé an t-ábhar síos de réir teaghráin deighilteora, an Boundary mar a thugtar air.
4. Téann gnáthréimsí isteach i `$_POST`; scríobhtar codanna comhaid i gcomhaid shealadacha agus déantar cur síos orthu i `$_FILES`.
5. Anois amháin tosaíonn an script, seiceálann sé an comhad agus aistríonn sé chuig a cheann scríbe é.
6. Ag deireadh an iarratais scriosann PHP na comhaid shealadacha go léir nár aistríodh.

## multipart/form-data: struchtúr iarratais uaslódála

Is téacs glan é iarratas uaslódála le sonraí comhaid leabaithe. Ainmníonn an ceanntásc `Content-Type` an Boundary, agus san ábhar scarann an teaghrán seo na codanna ó chéile. Tá a gceanntásca féin ag gach cuid, le hainm réimse agus, más infheidhme, ainm comhaid. Sampla an-ghearr, neamhdhíobhálach:

```http
POST /bewerbung HTTP/1.1
Content-Type: multipart/form-data; boundary=----trenner42

------trenner42
Content-Disposition: form-data; name="vorname"

Erika
------trenner42
Content-Disposition: form-data; name="lebenslauf"; filename="lebenslauf.pdf"
Content-Type: application/pdf

%PDF-1.7 ... Dateiinhalt ...
------trenner42--
```

Is ón seoltóir a thagann gach sonra sa téacs seo, ainm an chomhaid agus `Content-Type` na coda san áireamh. Glacann PHP leo isteach i `$_FILES`, ach ní sheiceálann sé an bhfuil siad inchreidte.

## An t-eagar $_FILES

I gcás réimse darb ainm `lebenslauf`, tá na heochracha seo i `$_FILES['lebenslauf']` de réir lámhleabhar PHP:

| Eochair | Ábhar | An bhfuil muinín ann? |
|---|---|---|
| `name` | ainm bunaidh an chomhaid ag an seoltóir | níl |
| `full_path` | cosán a thuairiscigh an brabhsálaí, ó PHP 8.1.0 i leith | níl |
| `type` | cineál MIME de réir an bhrabhsálaí, gan seiceáil ag PHP | níl |
| `size` | méid i mbearta | cinnte ag PHP |
| `tmp_name` | cosán an chomhaid shealadaigh ar an bhfreastalaí | sannta ag PHP |
| `error` | cód earráide na próiseála uaslódála | socraithe ag PHP |

I gcás réimsí le lúibíní cearnacha san ainm, mar shampla `bilder[]`, tá eagar i ngach eochair le hiontráil amháin do gach comhad. Téann an feidhmchlár tríd, mar shampla, `$_FILES['bilder']['error']` agus faigheann sé rochtain ar `tmp_name` agus `name` leis an innéacs céanna.

Is féidir le foirm réimse folaithe `MAX_FILE_SIZE` a sheoladh roimh an réimse comhaid freisin. De réir an lámhleabhair, is leid don bhrabhsálaí é sin amháin, a sheachnaítear go héasca. Ní féidir brath ach ar na teorainneacha a fhorfheidhmíonn an freastalaí: i PHP, sa fhreastalaí gréasáin agus sa fheidhmchlár féin.

## Teorainneacha: treoracha php.ini d'uaslódálacha

Rialaíonn na treoracha seo próiseáil uaslódálacha. Tagann na luachanna réamhshocraithe ó lámhleabhar PHP agus is iad atá i bhfeidhm mura sáraíonn php.ini iad.

| Treoir | Réamhshocrú | Inathraithe in |
|---|---|---|
| `file_uploads` | `1` | cumraíocht an chórais amháin |
| `upload_tmp_dir` | folamh (temp an chórais) | cumraíocht an chórais amháin |
| `upload_max_filesize` | `2M` | php.ini, linn, cumraíocht eolaire |
| `post_max_size` | `8M` | php.ini, linn, cumraíocht eolaire |
| `max_file_uploads` | `20` | php.ini, linn, cumraíocht eolaire |
| `enable_post_data_reading` | `1` | php.ini, linn, cumraíocht eolaire |

Ní mór `post_max_size` a bheith níos mó ná `upload_max_filesize`, agus de réir an lámhleabhair ba cheart `memory_limit` a bheith níos mó ná `post_max_size` de ghnáth. Mura bhfuil `upload_tmp_dir` inscríofa, aistríonn PHP go dtí eolaire temp an chórais. Le `open_basedir` ní mór an t-eolaire temp a cheadú, nó teipeann ar uaslódálacha. Déanann an t-alt [post_max_size agus upload_max_filesize a theorannú go ciallmhar](https://phpsos.de/ga/blog/post-max-size-upload-limits/) cur síos ar luachanna praiticiúla agus ar a n-iarmhairtí.

## Cóid earráide a mheas i gceart

Insíonn an réimse `error` cad a tharla le linn na próiseála. Téann na tairisigh ó `UPLOAD_ERR_OK` (0) trí `UPLOAD_ERR_INI_SIZE` (1), `UPLOAD_ERR_FORM_SIZE` (2), `UPLOAD_ERR_PARTIAL` (3) agus `UPLOAD_ERR_NO_FILE` (4) go `UPLOAD_ERR_NO_TMP_DIR` (6), `UPLOAD_ERR_CANT_WRITE` (7) agus `UPLOAD_ERR_EXTENSION` (8).

```php
<?php
declare(strict_types=1);

$datei = $_FILES['lebenslauf'] ?? null;
if ($datei === null) {
    exit('Keine Upload-Daten, eventuell wurde post_max_size überschritten.');
}

$meldung = match ($datei['error']) {
    UPLOAD_ERR_OK => null,
    UPLOAD_ERR_INI_SIZE, UPLOAD_ERR_FORM_SIZE => 'Datei zu groß.',
    UPLOAD_ERR_NO_FILE => 'Keine Datei gewählt.',
    default => 'Upload fehlgeschlagen.',
};

if ($meldung === null && is_uploaded_file($datei['tmp_name'])) {
    $ziel = '/srv/app/uploads/' . bin2hex(random_bytes(16)) . '.pdf';
    move_uploaded_file($datei['tmp_name'], $ziel);
}
```

Ní léiríonn an sampla ach an mheicníocht. Déanann an treoir [Uaslódálacha comhad a chur i bhfeidhm go sábháilte i PHP](https://phpsos.de/ga/ratgeber/datei-upload-sicher/) cur síos ar sheiceáil chineál an chomhaid, stóráil lasmuigh den Webroot agus rith scripteanna a bhac.

## Uaslódálacha agus PHP2Shell: cad is brí leis na bearta idirthréimhseacha

Bíonn tionchar ag leochaileachtaí PHP2Shell CVE-2026-109618 agus CVE-2026-109619 ar an bpróiseáil timpeall an iarratais san ateangaire PHP. Dá bhrí sin luann php.net mar bhearta idirthréimhseacha, i measc nithe eile, `post_max_size = 8M` (gan uaslódálacha) nó `32M` (le huaslódálacha), `upload_max_filesize` faoina bhun, chomh maith le `session.upload_progress.enabled=0`. Is in php.ini, i linn FPM nó i gcumraíocht an fhreastalaí a bhaineann na luachanna seo, agus ina dhiaidh sin ní mór gach oibrí a atosú.

Molann údair theicniúla freisin iarratais `multipart/form-data` a bhlocáil ag an seachfhreastalaí nó sa WAF lasmuigh de chosáin uaslódála fíora. Is beart neamhoifigiúil é sin agus is é an riosca go mbristear foirmeacha; déanann an t-alt [Iarratais uaslódála a scagadh ag an imeall](https://phpsos.de/ga/blog/upload-anfragen-am-rand-filtern/) cur síos ar an gcomhbhách. Ní thagann aon cheann de na bearta seo in ionad an nuashonraithe go PHP 8.5.12, 8.4.27, 8.3.36 nó 8.2.35.

## Conas a chabhraíonn PHP SOS go praiticiúil?

- Faighimid amach cé acu de do shuíomhanna gréasáin a dteastaíonn uaslódálacha uathu i ndáiríre agus ar cé na cosáin.
- Socraímid na teorainneacha agus na bearta idirthréimhseacha do gach linn, atosaímid gach oibrí agus déanaimid tástáil ar na foirmeacha.
- Seiceálaimid eolairí uaslódála le haghaidh comhad inrite agus cuirimid cosc ar rith scripteanna mar chuid de [chruatú freastalaí](https://phpsos.de/ga/leistungen/server-haertung/).
- Suiteálaimid an nuashonrú PHP agus déanaimid staid an phaistithe a dhoiciméadú do gach suíomh gréasáin.


## Ceisteanna coitianta

**Cá stórálann PHP comhaid uaslódáilte ar dtús?**  
I eolaire sealadach. De réir réamhshocraithe is é sin eolaire sealadach an chórais; is féidir é a athrú le upload_tmp_dir. Mura n-aistrítear an comhad sa script, scriosann PHP é ag deireadh an iarratais.

**An bhfuil muinín agam as an réimse type i $_FILES?**  
Níl. Is é an brabhsálaí a thuairiscíonn an cineál MIME, agus de réir an lámhleabhair ní sheiceálann PHP é. Is ón seoltóir freisin a thagann name agus full_path. Faigh amach an cineál comhaid iarbhír ar an taobh freastalaí, ar bhonn an ábhair.

**Cén fáth a bhfuil $_FILES folamh cé gur seoladh comhad?**  
Is dócha go raibh an t-iarratas iomlán níos mó ná post_max_size. Ansin folmhaíonn PHP $_POST agus $_FILES go hiomlán, gan cód earráide san eagar. Is cúiseanna eile iad enctype in easnamh sa fhoirm nó file_uploads a bheith múchta.

**An gcabhraíonn sé i gcoinne PHP2Shell uaslódálacha a thoirmeasc sa fheidhmchlár?**  
Ní chabhraíonn. Tarlaíonn próiseáil shonraí an iarratais i PHP sula ritheann cód an fheidhmchláir. Is éifeachtach an nuashonrú PHP agus atosú gach oibrí; ní bheart idirthréimhseach iad teorainneacha níos docht ach sin amháin.

**Cad é an difríocht idir upload_max_filesize agus post_max_size?**  
Cuireann upload_max_filesize teorainn le gach comhad ar leith, post_max_size le hábhar iomlán an iarratais, gach comhad agus réimse san áireamh. Dá bhrí sin ní mór post_max_size a bheith níos mó ná upload_max_filesize.

## Foinsí

- [Lámhleabhar PHP: Uaslódálacha le POST](https://www.php.net/manual/de/features.file-upload.post-method.php)
- [Lámhleabhar PHP: Teachtaireachtaí earráide d'uaslódálacha](https://www.php.net/manual/de/features.file-upload.errors.php)
- [Lámhleabhar PHP: Treoracha php.ini](https://www.php.net/manual/de/ini.core.php)
- [php.net: Fógraí slándála](https://www.php.net/)
