Skip to main content

Errore "out of memory in com_virtuemart.php" con sh404SEF

Se utilizzate VirtueMart e sh404SEF potreste essere vittima di una specifica condizione di errore che blocca del tutto la visualizzazione del vostro sito a causa dell’utilizzo di troppa memoria rispetto a quella disponibile. Questo errore fa sì che la memoria utilizzata cresca talmente tanto che non importa quanto sia effettivamente il limite a vostra disposizione, prima o poi verrà esaurito. Vediamo come risolverlo.

sh404SEF contiene uno specifico file di gestione del rewrite per le varie estensioni, tra cui anche uno per VirtueMart. Tale file contiene un bug che però viene attivato solo in presenza di condizioni particolari:

  • avete creato uno o più prodotti in una certa categoria, poi avete cancellato la categoria
  • avete configurato sh404SEF per visualizzare nell’URL tutte le categorie

In questo caso, l’assegnazione prodotto / categoria rimane comunque e il codice di sh404SEF va in un loop infinito che gradualmente occupa sempre più memoria, fino al messaggio di errore del web server:

Fatal error: Out of memory (allocated xxx) (tried to allocate xx bytes) in ...components/com_sh404sef/sef_ext/com_virtuemart.php on line 65

Non ci è ancora dato di sapere se questo bug sia stato risolto in versioni successive di sh404SEF; al momento l’unica possibilità è quella di assicurarsi di non avere prodotti assegnati a una categoria cancellata.
Questo si può ottenere riaprendo i prodotti sospetti e riassegnandoli alle categorie corrette, visto che in tal caso precedenti assegnazioni vengono cancellate.
Oppure, in alternativa, potrebbe essere necessario fare una query direttamente sulle tabelle di VirtueMart per individuare le assegnazioni anomale.