
🛠 Kuinka nostaa max_input_vars-arvoa PHP:ssä: 3 toimivaa tapaa
Olet määrittänyt teeman, lisännyt tusinan lisäosia, konfiguroinut mukautetut kentät, ja sitten WordPress lakkaa tallentamasta valikkoasetuksia. Klikkaat "Tallenna", mutta osa valikkokohteista yksinkertaisesti katoaa.
Tämä ei ole hallintapaneelin häiriö eikä lisäosaongelma. Palvelimen PHP on saavuttanut max_input_vars-syötemuuttujarajan ja katkaisee hiljaisesti lomakkeesta tulevan datan. Oletuksena raja on 1000, mikä on selvästi riittämätön modernille WordPress-asennukselle, jossa on pari raskasta lisäosaa.
Alla on kolme tapaa nostaa rajaa: nopeasta.htaccess-muokkauksesta hotellin hallintapaneelin asetuksiin. Kaikki menetelmät on testattu Apachella ja PHP-FPM:llä ja ne toimivat PHP 7.4:stä 8.4:ään.
Mikä max_input_vars on ja miten virhe ilmenee
max_input_vars on PHP-direktiivi, joka rajoittaa GET-, POST- ja COOKIE-pyynnöistä hyväksyttävien muuttujien määrää. Rajoitus koskee jokaista superglobaalia taulukkoa erikseen: POST-muuttujat lasketaan erillään GET- ja COOKIE-muuttujista.
Pienelle käyntikorttisivustolle tuhat muuttujaa on enemmän kuin tarpeeksi. Mutta WordPressin hallintapaneeli tuottaa kymmeniä kenttiä jokaista entiteettiä kohden: valikkokohteet, vimpaimet, mukauttimen asetukset, lisäosien metaboksit. Kun valikkolomake sisältää 80 kohdetta, joista jokainen lähettää 12-15 muuttujaa, raja ylittyy huomaamatta ja osa datasta katoaa tallennuksen aikana.

Oireet, jotka viittaavat tähän nimenomaiseen ongelmaan:
- Valikkokohteet eivät tallennu tai tallentuvat vain osittain.
- Vimpaimet nollautuvat itsestään epäaktiivisiksi.
- Lisäosa (kuten SEO-lisäosa tai sivunrakentaja) kadottaa joitakin asetuksia tallennuksen jälkeen.
- Sivuston kunnossa (Työkalut → Sivuston kunto → Tiedot → Palvelin)
PHP max input variables-arvo on 1000 tai vähemmän.
WordPress-yhteisön vakiosuositus on nostaa raja 3000:een. Tämä riittää useimmille asennuksille. Sivustot, joissa on erityisen raskas hallintapaneeli (monitasoiset valikot, joissa on yli 100 kohdetta, Mega Menu, kymmeniä ACF-kenttiä), voivat turvallisesti asettaa arvoksi 5000 tai jopa 10000, sillä tällä ei ole käytännössä mitään vaikutusta palvelimen suorituskykyyn.
💡 Pikakatsaus:
- Tarkista nykyinen raja: phpinfo() tai Sivuston kunto WordPressin hallinnassa.
- Tapa 1: lisää
php_value max_input_vars 3000.htaccess-tiedostoosi, toimii Apachen kanssa mod_php:tä käytettäessä. - Tapa 2: lisää
max_input_vars = 3000php.ini- tai.user.ini-tiedostoon, sopii PHP-FPM:lle. - Tapa 3: muuta arvoa hotellin hallintapaneelin kautta, vaihtoehto niille, joilla ei ole suoraa pääsyä palvelintiedostoihin.
Tapa 1:.htaccess-tiedoston muokkaaminen
Tämä tapa toimii, kun PHP toimii Apache-moduulina (mod_php). Voit selvittää tämän kohdasta Työkalut → Sivuston kunto → Tiedot → Palvelin: Server architecture -rivillä lukee Apache, ja PHP-käsittelijä on listattu moduulina, ei FPM/FastCGI:nä.
Tee ennen muokkausta varmuuskopio.htaccess-tiedostosta: lataa tiedosto FTP:n tai hotellisi tiedostonhallinnan kautta tietokoneellesi. Tämän tiedoston muokkaukset ovat syntaksiherkkiä; ylimääräinen välilyönti tai rivinvaihto voi kaataa sivuston 500-virheellä.
Avaa.htaccess (sijaitsee sivuston juuressa, wp-config.php-tiedoston vieressä) ja lisää rivi:
1 php_value max_input_vars 3000

Jos palvelimelle on asennettu Suhosin-laajennus (harvinainen vuonna 2026, mutta yhä löytyy vanhemmilta jaetuilta palvelimilta), yksi rivi ei riitä. Lisää kolme direktiiviä:
1 php_value suhosin.request.max_vars 3000 2 php_value suhosin.post.max_vars 3000 3 php_value suhosin.get.max_vars 3000
Suhosin sieppaa muuttujat ennen PHP:tä ja katkaisee ne max_input_vars-asetuksesta riippumatta, mistä syystä tarvitaan lisärivit.
Kun olet tallentanut.htaccess-tiedoston, avaa WordPressin hallinta → Työkalut → Sivuston kunto → Tiedot → Palvelin ja varmista, että PHP max input variables näyttää uuden arvon. Jos se ei ole muuttunut, lue alla oleva kohta "Mitä tehdä, jos raja ei vieläkään muutu".
Tapa 2: php.ini- tai.user.ini-tiedoston muokkaaminen
Nykyaikaisilla palvelimilla PHP toimii useimmiten PHP-FPM:n kautta, ja php_value-direktiivit.htaccess-tiedostossa ohitetaan. Toimiva työkalu tässä on php.ini tai.user.ini.
PHP-FPM käsittelee .user.ini-tiedostoa hakemistokohtaisesti: tiedosto sijoitetaan sivuston juureen ja se vaikuttaa rekursiivisesti kaikkiin alihakemistoihin. Toisin kuin .htaccess, jonka Apache lukee jokaisella pyynnöllä, tämä on PHP:n vakiomekanismi, jota on tuettu versiosta 5.3 lähtien.
Luo (tai muokkaa olemassa olevaa) .user.ini-tiedostoa sivuston juuressa ja lisää:
1 max_input_vars = 3000
Jos sinulla on pääsy yleiseen php.ini-tiedostoon (VPS/omistettu palvelin), muuta arvoa sielläkin. Tarkan polun php.ini-tiedostoon löydät phpinfo()-toiminnolla: etsi Loaded Configuration File -rivi. php.ini-tiedoston muokkauksen jälkeen tarvitaan PHP-FPM:n uudelleenkäynnistys:
1 sudo systemctl restart php8.2-fpm
Korvaa komennon versionumero omallasi (8.1, 8.2, 8.3, 8.4). Tarkista uusi arvo Sivuston kunto -kohdasta; sen pitäisi päivittyä välittömästi.
Jos .user.ini-tiedostoa ei ole olemassa, luo se tekstieditorilla. Nimi alkaa pisteellä, joten saatat joutua ottamaan piilotiedostojen näytön käyttöön hotellisi tiedostonhallinnassa.
Tapa 3: rajan muuttaminen hotellin hallintapaneelin kautta
Jaetulle hotellille (cPanel, ISPmanager, DirectAdmin) yksinkertaisin tapa on muuttaa arvoa graafisen käyttöliittymän kautta koskematta tiedostoihin manuaalisesti.
cPanel: mene kohtaan Valitse PHP-versio → vaihda Asetukset-välilehdelle. Etsi max_input_vars-rivi, muuta arvo 1000:sta 3000:een ja klikkaa Tallenna. Muutos astuu voimaan heti; uudelleenkäynnistystä ei tarvita.
ISPmanager: PHP-osio → asetukset → lisäparametrit → max_input_vars.
DirectAdmin: PHP-asetukset → etsi direktiivi listasta → muuta → tallenna.
Jos paneelissa ei ole max_input_vars-kenttää, hotelli käyttää kovakoodattua php.ini-tiedostoa ilman muokkausoikeuksia. Tässä tapauksessa vain tukiyhteydenotto auttaa: lähetä tiketti, jossa pyydät nostamaan max_input_vars-arvon 3000:een (tai mihin tahansa tarvitsemaasi arvoon). Useimmat hotellit muuttavat rajaa ensimmäisestä pyynnöstä; tämä on rutiinitoimenpide.
Mitä tehdä, jos raja ei vieläkään muutu
Tilanne: rivit.htaccess- ja.user.ini-tiedostoissa ovat paikoillaan, hotellin hallintapaneeli näyttää uuden arvon, mutta Sivuston kunto näyttää itsepintaisesti 1000. Syyt ja niiden ratkaisut:
Väärä muutostapa. max_input_vars kuuluu PHP_INI_PERDIR-tilaan: direktiiviä voi muuttaa vain php.ini-,.htaccess-,.user.ini- tai httpd.conf-tiedostoissa. ini_set()-funktiolla wp-config.php-tiedostossa ei ole siihen vaikutusta; koodi @ini_set('max_input_vars', 3000) suorittaa operaation, mutta PHP sivuuttaa sen hiljaisesti. Älä tuhlaa aikaa tähän tapaan.
PHP:n konfiguraatiovälimuisti. Jotkin paneelit (erityisesti cPanel PHP-FPM:n kanssa) välimuistittavat ini-tiedostoja. Odota.user.ini-tiedoston muokkauksen jälkeen 5 minuuttia; tämä on aika, jonka PHP-FPM oletuksena säilyttää konfiguraatiovälimuistia tietylle hakemistolle. Voit nopeuttaa prosessia käynnistämällä PHP-FPM:n uudelleen hotellin hallintapaneelista.
Kaksi php.ini-tiedostoa. Jaetulla hotellilla on usein yleinen php.ini yhdessä kansiossa ja paikallinen toisessa. PHP poimii käynnistyksessä ensimmäisen löytämänsä. Tarkista polku kohtaan Loaded Configuration File phpinfo()-toiminnolla ja muokkaa juuri sitä tiedostoa. Lisäksi Scan this directory for additional .ini files -kohta voi myös sisältää rajan; tarkista tämäkin kansio.
Hotellin kova rajoitus. Jotkut palveluntarjoajat estävät max_input_vars-muutokset konttitasolla (CloudLinux PHP Selector -rajoituksilla). phpinfo()-tiedoissa direktiivi on merkitty no value -tilaan tai ei näy ollenkaan. Tämä tarkoittaa, että hotelli on asettanut katon käyttäjän muokkausten yläpuolelle; vain tukitiketti tai paketin päivitys auttaa.
⁉️🤔 Usein kysytyt kysymykset
Kuinka paljon minun pitäisi tarkalleen asettaa: 3000 vai enemmän?
Valtaosalle WordPress-sivustoista 3000 riittää. Tämä arvo kattaa jopa 120 kohdetta sisältävät valikot, hallintapaneelit, joissa on tusina aktiivista lisäosaa, ja mukautinsivut, joissa on kymmenen osiota. Aseta 5000, jos käytät Mega Menua, jossa on yli 150 kohdetta, rakentajaa kuten Elementor, jossa on satoja kenttiä sivua kohden, tai ACF:ää joustavilla asetteluilla. Yli 10000 vain, jos lisäosan kehittäjä nimenomaisesti määrittelee niin dokumentaatiossa.
Miksi raja palautui 1000:een PHP-päivityksen jälkeen?
PHP-version päivittäminen hotellin hallintapaneelin kautta tuo usein mukanaan oletus-php.ini-tiedoston. Tarkista.user.ini ja hallintapaneeli; todennäköisesti tiedosto on yhä olemassa, mutta hotelli vaihtoi poolin uuteen konfiguraatioon ilman muokkauksiasi.
Voinko asettaa rajan wp-config.php:n kautta?
Et.
max_input_vars-direktiivillä onPHP_INI_PERDIR-tila, eikä sitä voi muuttaaini_set()-funktiolla; PHP sivuuttaa tällaisen kutsun hiljaisesti. Vain.htaccess (Apachen ja mod_php:n kanssa),.user.ini / php.ini ja hotellin hallintapaneeli toimivat.
Mistä tiedän, onko ongelma nimenomaan max_input_vars eikä jokin muu?
Tarkin indikaattori on PHP-lokit. Ota
WP_DEBUGkäyttöön wp-config.php:ssa:define('WP_DEBUG', true);. Epäonnistuneen lomakkeen tallennuksen jälkeen tarkista/wp-content/debug.log: jos siellä on merkintäWarning: Input variables exceeded 1000, diagnoosi on vahvistettu.
Mitä minun pitäisi tehdä, jos hotellini ei anna minun muuttaa rajaa?
Ota yhteyttä tukeen ja kerro tietty luku (esimerkiksi "nostakaa max_input_vars 3000:een"). Tämä on vakiopyyntö; tuki toteuttaa sen maksutta useimmilla palveluntarjoajilla. He kieltäytyvät kahdessa tapauksessa: erittäin halpa paketti, jossa on tiukasti kiinteät rajat (silloin vain paketin päivitys auttaa) tai sivusto jaetulla hotellilla, jossa on satoja naapureita ja yksilöllisiä rajoja ei arkkitehtuurisesti tueta.
Yhteenveto: mikä tapa valita omaan tilanteeseesi
Toimintajärjestys yksinkertaisimmasta monimutkaisimpaan.
Jos olet jaetulla hotellilla, jossa on cPanel, aloita tavasta 3 (paneeli). Se vie kolme klikkausta, ja useimmissa tapauksissa ongelma ratkeaa. Jos arvo ei muutu Sivuston kunto -kohdassa, kokeile tapaa 2.user.ini-tiedoston kautta: tiedosto menee sivuston juureen ja PHP-FPM poimii sen automaattisesti.
Jos sinulla on VPS tai omistettu palvelin, jossa on Apache ja mod_php, tapa 1 (.htaccess) antaa välittömät tulokset eikä vaadi palveluiden uudelleenkäynnistystä. Apache + PHP-FPM -kokoonpanolle käytä tapaa 2 (php.ini tai.user.ini).
Jos paneeli ei salli muokkausta, tuki ei vastaa ja raja on jumissa 1000:ssa, olet saattanut kasvaa ulos nykyisestä paketistasi. WordPress-asennukset raskastuvat joka vuosi: enemmän kenttiä, enemmän dataa, korkeammat palvelinympäristön vaatimukset. Hotellin vaihtaminen joustavampaan pakettiin ratkaisee ongelman radikaalisti ja parantaa myös sivuston yleistä suorituskykyä.
Aloita tarkistamalla Sivuston kunto juuri nyt: Työkalut → Sivuston kunto → Tiedot → Palvelin → PHP max input variables. Jos se näyttää 1000 tai vähemmän, mikä tahansa kolmesta yllä olevasta ratkaisusta palauttaa hallintasi hallintapaneeliin 5 minuutissa.



