Skip to content

Alt om WordPress, webutvikling — og mer til

🛠 Slik øker du max_input_vars i PHP: 3 metoder som fungerer

🛠 Slik øker du max_input_vars i PHP: 3 metoder som fungerer

Du har satt opp temaet, lagt til et dusin utvidelser, konfigurert egendefinerte felt, og så slutter WordPress å lagre menyinnstillinger. Du klikker «Lagre», men noen menyelementer forsvinner rett og slett.

Dette er ikke en feil i administrasjonspanelet eller et utvidelsesproblem. PHP på serveren har nådd grensen for max_input_vars og avkorter data fra skjemaet i stillhet. Standardgrensen er 1000, noe som åpenbart er utilstrekkelig for et moderne WordPress-oppsett med et par tunge utvidelser.

Nedenfor finner du tre måter å øke grensen på: fra en rask.htaccess-redigering til innstillinger i hosting-panelet. Alle metodene er testet på Apache og PHP-FPM og fungerer fra PHP 7.4 til og med 8.4.

Hva er max_input_vars og hvordan viser feilen seg

max_input_vars er et PHP-direktiv som begrenser antallet variabler som aksepteres fra GET-, POST- og COOKIE-forespørsler. Begrensningen gjelder for hver superglobal tabell separat: POST-variabler telles uavhengig av GET og COOKIE.

For en liten visittkortside er tusen variabler mer enn nok. Men WordPress-administrasjonspanelet genererer dusinvis av felt for hver enhet: menyelementer, widgeter, tilpasser-alternativer, metabokser for utvidelser. Når et menyskjema inneholder 80 elementer, som hver sender 12-15 variabler, overskrides grensen usynlig og en del av dataene går tapt under lagring.

Advarsel om overskridelse av maksgrensen for inndatavariabler i WordPress

Symptomer som indikerer dette spesifikke problemet:

  • Menyelementer lagres ikke eller lagres bare delvis.
  • Widgeter tilbakestilles spontant til inaktive.
  • En utvidelse (for eksempel en SEO-utvidelse eller sidebygger) mister noen innstillinger etter lagring.
  • I Nettstedhelse (Verktøy → Nettstedhelse → Info → Server) er verdien for PHP max input variables lik 1000 eller mindre.

Standardanbefalingen fra WordPress-miljøet er å øke grensen til 3000. Dette er tilstrekkelig for de fleste oppsett. Nettsteder med spesielt tunge administrasjonspaneler (flernivåmenyer med 100+ elementer, Mega Menu, dusinvis av ACF-felt) kan trygt sette 5000 eller til og med 10000, da dette praktisk talt ikke påvirker serverytelsen.

💡 Rask oversikt:

  • Sjekk gjeldende grense: phpinfo() eller Nettstedhelse i WordPress-admin.
  • Metode 1: legg til php_value max_input_vars 3000 i.htaccess-filen din, fungerer med Apache som bruker mod_php.
  • Metode 2: legg til max_input_vars = 3000 i php.ini eller.user.ini, egnet for PHP-FPM.
  • Metode 3: endre verdien via hostingpanelet, et alternativ for dem uten direkte tilgang til serverfiler.

Metode 1: redigere.htaccess

Denne metoden fungerer når PHP kjører som en Apache-modul (mod_php). Du kan fastslå dette i Verktøy → Nettstedhelse → Info → Server: linjen Server architecture inneholder Apache, og PHP-behandleren er oppført som en modul, ikke FPM/FastCGI.

Før du redigerer, ta en sikkerhetskopi av.htaccess: last ned filen via FTP eller vertskapets filbehandler til datamaskinen din. Redigeringer i denne filen er syntaks-sensitive; et ekstra mellomrom eller linjeskift kan ta ned nettstedet med en 500-feil.

Åpne.htaccess (plassert i nettstedets rot, ved siden av wp-config.php) og legg til linjen:

1php_value max_input_vars 3000
php_value max_input_vars-linje lagt til i .htaccess-fil

Hvis serveren har Suhosin-utvidelsen installert (sjelden i 2026, men finnes fortsatt på eldre delte hoster), er ikke én linje nok. Legg til tre direktiver:

1php_value suhosin.request.max_vars 3000
2php_value suhosin.post.max_vars 3000
3php_value suhosin.get.max_vars 3000

Suhosin fanger opp variabler før PHP og avkorter dem uavhengig av max_input_vars, derav det ekstra settet med linjer.

Etter å ha lagret.htaccess, åpne WordPress-admin → Verktøy → Nettstedhelse → Info → Server og bekreft at PHP max input variables viser den nye verdien. Hvis den ikke har endret seg, les avsnittet «Hva du gjør hvis grensen fortsatt ikke endres» nedenfor.

Metode 2: redigere php.ini eller.user.ini

På moderne servere kjører PHP oftest gjennom PHP-FPM, og php_value-direktiver i.htaccess ignoreres. Det fungerende verktøyet her er php.ini eller.user.ini.

.user.ini behandles av PHP-FPM på per-katalog-basis: filen plasseres i nettstedets rot og gjelder rekursivt for alle underkataloger. I motsetning til .htaccess, som Apache leser ved hver forespørsel, er dette PHPs standardmekanisme, støttet siden versjon 5.3.

Opprett (eller rediger en eksisterende) .user.ini-fil i nettstedets rot og legg til:

1max_input_vars = 3000

Hvis du har tilgang til den globale php.ini (VPS/dedikert server), endre verdien der også. Den nøyaktige banen til php.ini finner du via phpinfo(): se etter linjen Loaded Configuration File. Etter redigering av php.ini kreves en omstart av PHP-FPM:

1sudo systemctl restart php8.2-fpm

Bytt ut versjonsnummeret i kommandoen med ditt eget (8.1, 8.2, 8.3, 8.4). Sjekk den nye verdien via Nettstedhelse; den skal oppdateres umiddelbart.

Hvis .user.ini-filen ikke eksisterer, oppretter du den ganske enkelt i et tekstredigeringsprogram. Navnet starter med et punktum, så du må kanskje aktivere visning av skjulte filer i vertskapets filbehandler.

Metode 3: endre grensen via hostingpanelet

For delt hosting (cPanel, ISPmanager, DirectAdmin) er den enkleste tilnærmingen å endre verdien via det grafiske grensesnittet uten å berøre filer manuelt.

cPanel: gå til Select PHP Version → bytt til fanen Options. Finn linjen max_input_vars, endre verdien fra 1000 til 3000, og klikk Save. Endringen trer i kraft umiddelbart; ingen omstart er nødvendig.

ISPmanager: PHP-seksjonen → innstillinger → tilleggsparametere → max_input_vars.

DirectAdmin: PHP Settings → finn direktivet i listen → endre → lagre.

Hvis panelet ikke har et felt for max_input_vars, bruker hostingen en hardkodet php.ini uten redigeringsrettigheter. I dette tilfellet vil bare det å kontakte support hjelpe: send inn en forespørsel om å øke max_input_vars til 3000 (eller den spesifikke verdien du trenger). De fleste hoster endrer grensen ved første forespørsel; dette er en rutineoperasjon.

Hva du gjør hvis grensen fortsatt ikke endres

Situasjon: linjer i.htaccess og.user.ini er på plass, hostingpanelet viser den nye verdien, men Nettstedhelse viser hardnakket 1000. Årsaker og deres løsninger:

Feil metode for endringen. max_input_vars tilhører modusen PHP_INI_PERDIR: direktivet kan bare endres i php.ini,.htaccess,.user.ini eller httpd.conf. Funksjonen ini_set() i wp-config.php har ingen effekt på det; koden @ini_set('max_input_vars', 3000) utfører operasjonen, men PHP ignorerer den i stillhet. Ikke kast bort tid på denne metoden.

PHP-konfigurasjonsbuffer. Noen paneler (spesielt cPanel med PHP-FPM) bufrer ini-filer. Etter redigering av.user.ini, vent 5 minutter; dette er hvor lenge PHP-FPM som standard beholder konfigurasjonsbufferen for en spesifikk katalog. Du kan fremskynde prosessen ved å starte PHP-FPM på nytt fra hostingpanelet.

To php.ini-filer. På delt hosting er det ofte en global php.ini i én mappe og en lokal i en annen. PHP plukker opp den første den finner ved oppstart. Sjekk banen til Loaded Configuration File via phpinfo() og rediger den spesifikke filen. Den ekstra Scan this directory for additional .ini files kan også inneholde grensen; sjekk denne mappen også.

Hard hostinggrense. Noen leverandører blokkerer endringer i max_input_vars på beholdernivå (CloudLinux med PHP Selector-grenser). I phpinfo() er direktivet merket som no value eller vises ikke i det hele tatt. Dette betyr at hostingen har satt et tak over brukerredigeringer; bare en supportforespørsel eller oppgradering av abonnement vil hjelpe.

⁉️🤔 Ofte stilte spørsmål

Hvor mye bør jeg egentlig sette: 3000 eller mer?

For det store flertallet av WordPress-nettsteder er 3000 nok. Denne verdien dekker menyer på opptil 120 elementer, administrasjonspaneler med et dusin aktive utvidelser og tilpassersider med ti seksjoner. Sett 5000 hvis du bruker Mega Menu med 150+ elementer, en bygger som Elementor med hundrevis av felt per side, eller ACF med fleksible oppsett. Over 10000, bare hvis utvidelsesutvikleren eksplisitt spesifiserer det i dokumentasjonen.

Hvorfor ble grensen tilbakestilt til 1000 etter en PHP-oppdatering?

Oppdatering av PHP-versjonen via hostingpanelet henter ofte inn standard php.ini. Sjekk.user.ini og panelet; mest sannsynlig er filen der fortsatt, men hostingen byttet poolen til en ny konfigurasjon uten dine redigeringer.

Kan jeg sette grensen via wp-config.php?

Nei. Direktivet max_input_vars har modusen PHP_INI_PERDIR og kan ikke endres via ini_set(); PHP vil i stillhet ignorere et slikt kall. Bare.htaccess (på Apache med mod_php),.user.ini / php.ini og hostingpanelet fungerer.

Hvordan kan jeg vite om problemet spesifikt er max_input_vars og ikke noe annet?

Den mest nøyaktige indikatoren er PHP-logger. Aktiver WP_DEBUG i wp-config.php: define('WP_DEBUG', true);. Etter en mislykket skjemalagring, sjekk /wp-content/debug.log: hvis det er en oppføring Warning: Input variables exceeded 1000, er diagnosen bekreftet.

Hva bør jeg gjøre hvis min hosting ikke lar meg endre grensen?

Kontakt support med et spesifikt tall (for eksempel «øk max_input_vars til 3000»). Dette er en standard forespørsel; support oppfyller den gratis hos de fleste leverandører. De avslår i to tilfeller: et ekstremt billig abonnement med strengt fastsatte grenser (da hjelper bare en oppgradering) eller et nettsted på delt hosting med hundrevis av naboer der individuelle grenser ikke støttes arkitektonisk.

Oppsummering: hvilken metode du bør velge for din situasjon

Handlingsrekkefølge, fra enklest til mest kompleks.

Hvis du er på delt hosting med cPanel, start med metode 3 (panel). Det tar tre klikk, og i de fleste tilfeller er problemet løst. Hvis verdien ikke endres i Nettstedhelse, prøv metode 2 via.user.ini: filen legges i nettstedets rot og plukkes opp av PHP-FPM automatisk.

Hvis du har en VPS eller dedikert server med Apache og mod_php, gir metode 1 (.htaccess) umiddelbare resultater og krever ikke omstart av tjenester. For et Apache + PHP-FPM-oppsett, bruk metode 2 (php.ini eller.user.ini).

Hvis panelet ikke tillater redigering, support ikke svarer, og grensen sitter fast på 1000, kan det hende du har vokst ut av ditt nåværende abonnement. WordPress-oppsett blir tyngre for hvert år: flere felt, mer data, høyere krav til servermiljøet. Å bytte hosting til et mer fleksibelt abonnement løser problemet radikalt og forbedrer også den generelle nettstedsytelsen.

Start med å sjekke Nettstedhelse akkurat nå: Verktøy → Nettstedhelse → Info → Server → PHP max input variables. Hvis den viser 1000 eller mindre, vil en av de tre løsningene ovenfor gjenopprette kontrollen din over administrasjonspanelet på 5 minutter.