Allowed memory size exhausted (web SAPI) – PHP memory_limit

memory_limit

Quando PHP funziona da CLI ma fallisce dal browser con Allowed memory size exhausted, spesso il valore di memory_limit applicato dai due SAPI è diverso. Il file php.ini letto dal modulo web può non essere quello del CLI, oppure pool PHP-FPM e processo web possono avere configurazioni separate. La diagnosi confronta phpinfo, PHP_INI_SCAN_DIR e configurazione effettiva prima di cambiare il limite.

Cosa significa questo errore?

Quando PHP funziona da CLI ma fallisce dal browser con Allowed memory size exhausted, spesso il valore di memory_limit applicato dai due SAPI è diverso. Il file php.ini letto dal modulo web può non essere quello del CLI, oppure pool PHP-FPM e processo web possono avere configurazioni separate. La diagnosi confronta phpinfo, PHP_INI_SCAN_DIR e configurazione effettiva prima di cambiare il limite.

Messaggio originale

Allowed memory size exhausted (web SAPI)

Contesto e parole chiave

Alias

  • memory_limit SAPI mismatch
  • PHP CLI web memory mismatch

Messaggi alternativi

  • Allowed memory size differs between CLI and web

Prodotti

  • PHP

Piattaforme

  • Linux
  • macOS
  • Windows

Parole chiave

  • allowed memory size web
  • php memory_limit cli web
  • phpinfo memory limit

Cause possibili

Configurazione diversa tra CLI e web SAPI

Il processo web usa un php.ini o un pool con memory_limit più basso rispetto alla CLI.

comune

Diagnosi

Limite e uso durante l'elaborazione

Leggere memory_limit e registrare memory_get_usage prima e dopo le operazioni sospette.

Come leggere il risultato. Il valore del CLI può differire da quello del web SAPI; la misura vicino al picco mostra l'operazione responsabile.

php
php -i | findstr memory_limit

Risoluzione

Riduzione del picco di memoria

Difficoltà: mediaRischio: basso

Elaborare dati a blocchi e liberare riferimenti non più necessari.

  1. Confrontare il memory_limit del SAPI corretto.
  2. Ridurre la dimensione dei batch o usare iteratori.
  3. Aumentare il limite solo dopo aver misurato il fabbisogno.

Domande frequenti

Perché php -i mostra un limite diverso dal browser?

CLI e web possono caricare php.ini, pool o variabili d'ambiente diversi. Va confrontata la configurazione del SAPI che esegue davvero la richiesta.

Approfondimenti

Schede correlate