# Nem mentődik a sok adat (variációk, adókulcsok)

> Mit tegyél, ha sok variációt, adókulcsot vagy más nagy űrlapadatot mentesz, és egy része elvész: max_input_vars, Suhosin és mod_security.

Ha egy termékhez sok variációt veszel fel, vagy hosszú adókulcslistát mentesz, előfordulhat, hogy a mentés után az adatok egy része hiányzik, vagy a mentés hibával áll le. Ilyenkor szinte mindig a szerver korlátozza, hány mezőt fogad el egyetlen űrlapküldésnél. Három tipikus ok van: a PHP `max_input_vars` beállítása, a Suhosin biztonsági modul és az Apache mod_security modulja.

> **Megjegyzés**
>
> A javítás szerverszintű beállítás (php.ini, .htaccess). Ha nem érzed magadénak, kérd meg a tárhelyszolgáltatódat, és add át neki az alábbi értékeket.

## Előbb erősítsd meg az okot

Mielőtt bármit átállítasz, nézd meg, tényleg a mezőszám-korlát okozza-e a gondot.

1. Nyisd meg a **WooCommerce → Állapot** oldalt, a **Rendszerállapot** fülön.
2. Keresd meg a **Szerver környezet** szakaszt, és olvasd le a PHP bemeneti változóinak korlátját.

![A Rendszerállapot Szerver környezet szakasza a PHP-korlátokkal](./kepek/hibaelharitas-rendszerallapot-szerver.webp)

*A Rendszerállapot Szerver környezet szakasza a PHP-korlátokkal* (https://minta-bolt.hu/wp-admin/admin.php?page=wc-status)

A képen a **PHP Max Input idő** sorban látható 1000 a `max_input_vars` értéke (a felületen a felirat tévesen „idő”). Ha ez kevesebb, mint az űrlapod mezőinek száma (például sok variációjú terméknél), a szerver csendben levágja a felesleget mentéskor.

Segíthet az ingyenes **WP Max Submit Protect** bővítmény is: figyelmeztet, ha egy űrlap több mezőt küld, mint amennyit a szerver enged. Telepítés előtt ellenőrizd, hogy kompatibilis-e a WordPress-szel.

## A max_input_vars emelése

A `max_input_vars` PHP-beállítás azt korlátozza, hány bemeneti változót fogad el a szerver egyetlen űrlapküldésnél. Az alapértéke általában 1000. Ennél több mezőt tartalmazó űrlapnál az adat levágódik, és nem mentődik el.

A php.ini fájlban emeld meg az értékét:

```ini
max_input_vars = 3000
```

Ha nem érsz el a php.ini-hez (például megosztott tárhelyen), próbáld a `.htaccess` fájlban:

```apache
php_value max_input_vars 3000
```

## Suhosin

A Suhosin egy PHP biztonsági modul, régebbi vagy speciális tárhelyeken fordul elő. Ha be van kapcsolva, a saját mezőkorlátait is meg kell emelni. A módosítás tárhelyenként más, ezért érdemes a szolgáltatódhoz fordulni. Van, ahol a php.ini, a suhosin.ini vagy a .htaccess is jó erre.

Ezeket az értékeket szokás megemelni:

```ini
suhosin.post.max_array_index_length = 256
suhosin.post.max_totalname_length = 65535
suhosin.post.max_vars = 1024
suhosin.post.max_name_length = 256
suhosin.request.max_varname_length = 256
suhosin.request.max_array_index_length = 256
suhosin.request.max_totalname_length = 65535
suhosin.request.max_vars = 1024
```

A mentés után indítsd újra a szervert, hogy érvénybe lépjenek. Megosztott tárhelyen, ha a php.ini nem szerkeszthető, a .htaccess fájlban is megadhatod:

```apache
php_value suhosin.max_array_index_length 256
php_value suhosin.post.max_array_index_length 256
php_value suhosin.post.max_totalname_length 65535
php_value suhosin.post.max_vars 1024
php_value suhosin.post.max_name_length 256
php_value suhosin.request.max_varname_length 256
php_value suhosin.request.max_array_index_length 256
php_value suhosin.request.max_totalname_length 65535
php_value suhosin.request.max_vars 1024
```

Ha a tárhelyed dokumentációja nem segít, nyiss ügyfélszolgálati jegyet.

Ha nem latin karaktereket használsz (például ékezetes vagy más írásrendszerű neveket), és emiatt nem mentődnek az adatok, emeld meg ezt az alapértelmezett 64 értékről:

```ini
suhosin.request.max_varname_length = 256
```

## mod_security

Az Apache mod_security modulja is blokkolhatja a mentést. Ilyenkor gyakori a 503-as hiba. Ezt csak a tárhelyszolgáltató tudja megoldani. Lehetséges megoldások:

- Kérd meg a szolgáltatót, hogy úgy állítsa be a mod_securityt, hogy átengedje az adatot.
- Kérd meg, hogy kapcsolja ki a mod_securityt az oldaladra, vagy a te IP-címedre.
- Csak a Dreamhostnál: kapcsold ki az **Extra web security** beállítást a vezérlőpulton.
