Memory
Allowed memory size exhausted (web SAPI) – PHP 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.
comuneDiagnosi
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 -i | findstr memory_limitRisoluzione
Riduzione del picco di memoria
Elaborare dati a blocchi e liberare riferimenti non più necessari.
- Confrontare il memory_limit del SAPI corretto.
- Ridurre la dimensione dei batch o usare iteratori.
- 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
- Direttive core php.ini - Manuale PHP manuale_ufficiale