Hopp til innhold
Siden er nede

«Allowed memory size exhausted»

PHP har gått tom for minne. Du kan heve grensen i wp-config.php, men finn også ut hva som bruker opp minnet.

Du trenger
FTP
Oppdatert

Meldingen betyr at PHP har brukt opp minnet det får bruke per forespørsel, og har stoppet. Grensen er memory_limit i PHP. Den settes av hostingleverandøren, og WordPress kan heve den med WP_MEMORY_LIMIT. Sidebyggere og utvidelser som importerer data eller tar sikkerhetskopi, er de som krever mest minne.

Du kan øke grensen, men du bør også finne ut hva som bruker minnet. Ellers kan feilen komme tilbake neste gang du installerer en utvidelse.

Les tallene i feilmeldingen

Meldingen ser for eksempel slik ut:

PHP Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 20480 bytes) in /wp-content/plugins/eksempel/fil.php

Det første tallet er grensen i byte. Del det på 1 048 576 for å få megabyte. Tallet 41943040 i eksempelet er 40 MB, som er standardgrensen i WordPress for en vanlig nettside. Sist i meldingen står filen som kjørte da minnet tok slutt. Ligger den under wp-content/plugins, forteller mappenavnet hvilken utvidelse det er.

Hvis du bare ser en hvit side eller en kritisk feil, finner du meldingen i feilloggen. Se slå på feilloggen.

Sjekk grensen i wp-admin

Hvis du kommer inn i wp-admin, går du til Verktøy → Nettstedshelse og åpner fanen Info. Under Server finner du PHP minnegrense. Det er grensen som gjelder for siden.

I wp-admin bruker WordPress en høyere grense, som standard 256 MB. Derfor kan wp-admin virke selv om resten av siden ikke gjør det. Under Konstantverdier ser du WP_MEMORY_LIMIT og WP_MAX_MEMORY_LIMIT.

Slå på feilloggen

Finn linjen define( 'WP_DEBUG', false ); i wp-config.php, og bytt den ut med disse tre linjene:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Finnes ikke linjen, legger du de tre linjene rett over linjen med require_once ABSPATH . 'wp-settings.php';.

Last siden på nytt og åpne wp-content/debug.log. Sett WP_DEBUG tilbake til false og slett debug.log når du er ferdig. Ellers kan hvem som helst lese loggen i nettleseren.

Øk grensen i wp-config.php

  1. Koble til med FTP eller filbehandleren i hostingpanelet, og ta en kopi av wp-config.php.
  2. Legg til denne linjen rett over linjen med require_once ABSPATH . 'wp-settings.php';:
define( 'WP_MEMORY_LIMIT', '256M' );
  1. Last siden på nytt, og sjekk PHP minnegrense i Nettstedshelse igjen.

Hvis det står et lavere tall der, har webhotellet satt en grense som PHP ikke får overskride.

Øk grensen i hostingpanelet

De fleste hostingpaneler har en side for PHP-innstillinger der du kan endre memory_limit. Hvis du ikke finner den, kan hostingleverandøren gjøre det for deg. Kjører serveren PHP-FPM, kan du også sette memory_limit = 256M i en .user.ini-fil i rotmappen. Endringen gjelder etter inntil fem minutter. Noen hostingløsninger har en fast øvre grense for minne. Da må du oppgradere til en løsning med mer tilgjengelig minne.

Finn ut hva som bruker minnet

  1. Se hvilken utvidelse feilmeldingen peker på, og om feilen bare kommer på enkelte sider eller når du gjør noe bestemt, for eksempel importerer eller lagrer.
  2. Deaktiver den utvidelsen under Utvidelser, og se om feilen forsvinner.
  3. Hvis meldingen peker på forskjellige utvidelser hver gang, deaktiverer du dem én og én til feilen er borte.

Utvidelsen Query Monitor viser det høyeste minneforbruket for hver side i adminlinjen, så du ser hvilke sider som ligger nær grensen.

Hvis én utvidelse bruker langt mer minne enn resten av siden, kan du oppgradere til en løsning med mer minne, eller se etter en tilsvarende utvidelse som bruker mindre ressurser.

Når 256 MB ikke er nok

Når siden går tom for minne selv med 256 MB eller mer, hjelper det sjelden å øke grensen enda mer. Da må en erfaren PHP-utvikler gå gjennom koden og arkitekturen for å finne ut hva som bruker opp minnet.