Nonostante 2048M di memoria PHP compare l'errore Fatal error: Allowed memory size
Buongiorno,
questo è il mio primo post sul portale. Sono uno sviluppatore che utilizza da diversi mesi Drupal ed ho scoperto da poco questo portale. Vi espongo il mio problema:
ho installato un sito in Drupal ed il componente Commerce Kickstarter.
Il sito funziona bene, ma ho un grosso problema, in molte occasioni mi compare il messaggio d'errore "Fatal Error: Allowed memory size..." nonostante ho settato la memoria php a 2048M. Come è possibile?
Mi accade in queste situazioni:
- abilitazioni di moduli
- pulizia cache
- update
I problemi principali sono che:
- non riesco a completare l'update
- non riesco ad abilitare alcuni moduli. In particolare vedo nell'interfaccia che il modulo è abilitato, ma nela DB, nella tabelal "system" non lo vedo...
Come è possibile?
Vi ringrazio per il supporto
Risposte
Ciao, prova ad aumentare il
Ciao, prova ad aumentare il valore di apc.shm_size che se non ricordo male dovrebbe essere a 32 MB di default, portalo ad esempio a 128 MB, poi pulisci la cache di Drupal e dovresti aver risolto.
Nel caso non dovesse funzionare, scrivi il tipo di installazione del tuo server e le caratteristiche (macchina reale o VM? Quanti processori? Di che tipo? Configurazione? Ecc ecc).
Ciao ciao.
Grazie per la risposta. Non
Grazie per la risposta.
Non ho installato APC sul server, ma xCache. E' un problema questo?
Il dettaglio della macchina non la conosco, ma mi posso informare. So che è una VM con 16GB di RAM. In ogni caso avendo installato commerce kickstarter e pochi altri moduli mi sembra MOLTO strano un problema di questo tipo, o è normale?
I problemi di completamento dell'upgrade e dell'abilitazione dei moduli possono essere legati ai "fatal error: allowed memory size"?
Per quanto riguarda l'ultima
Per quanto riguarda l'ultima domanda, sicuramente sì. Un fatal error è bloccante, il processo php non viene portato a termine quindi l'operazione qualsiasi essa sia non viene completata.
Per quanto riguarda il pb, secondo me non dipende da una cache opcode (poi magari mi sbaglio :-D) ma da qualche cosa che viene eseguita, non so una chiamata ricorsiva o altro. Per tracciare il problema occorrerebbe qualche info in più (es. il punto di interruzione file/linea è sempre lo stesso?) o avere una stampa dello stack delle chiamate (credo si possa avere tramite la libreria xdebug).
Grazie per le informazioni,
Grazie per le informazioni, molto utili.
Le righe in cui si blocca sono sempre le stesse, son 3 diverse.
Di seguito ho messo i log degli errori con le righe in cui appare il "Fatal error":
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 87 bytes) in /home/pixspeak/public_html/includes/form.inc on line 1815
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 491520 bytes) in /home/pixspeak/public_html/profiles/commerce_kickstart/modules/contrib/commerce_backoffice/includes/views/commerce_backoffice_content.views_default.inc on line 426
QUeste mi compaiono quando tento di installare il modulo "xmlsitemap", mentre quando cerco di fare l'upgrade ho altri errori...
Spero possano essere utili queste info.
Da qui 134217728/1024/1024 =
Da qui 134217728/1024/1024 = 128M. Non è poco, ma non sono 2GB come dici di avere impostato. Potresti aver bisogno di portarla fino a 196M o più. Prova a rivedere la tua configurazione, in particolare il php.ini alla riga memory_limit. L'effettivo quantitativo di memoria che vede Drupal lo vedi da admin/reports/status: quanto riporta "Limite della memoria PHP"?
Esatto, ho visto anceh io che
Esatto, ho visto anceh io che il valore è pari a 128M.
Io ho fatto queste impostazioni:
- Nel file .htaccess ho importato php_value memory_limit 2048M
- in PHP.ini memory_limit = 2048M
Mi vien da pensare che:
1) quel php.ini non viene considerato (sono su un server non di mia proprietà, dove mi han fornito questo file)
2) l'htaccess invece dovrebbe essere considerato, ma non è così...
Dove sbaglio?
Le soluzioni possibili sono
Le soluzioni possibili sono queste http://drupal.it/node/6510.
Non stai sbagliando, probabilmente è un limite imposto e non puoi effettuare l'override di questo parametro tramite i mezzi a tua disposizione.
OK chiaro. Ho contattato il
OK chiaro.
Ho contattato il gestore del server, dice di aver impostato PHP a 512MB, ma io ne vedo sempre 128 MB.
Le cose son 2:
1) o lui sbaglia
2) oppure da qualche parte in Drupal è "condificato" il valore 128MB
E' possibile questo secondo punto? Come posso verificarlo?
Un prova la puoi effettuare
Un prova la puoi effettuare al volo.
Vai in admin/reports/status/php e cerca la stringa memory_limit: vedrai due valori il primo è la local value la seconda la master value.
La seconda indica il valore di default assegnato a livello di configurazione del server, il primo quanta ne vede effettivamente la tua installazione Drupal.
La prima è sicuramente 128MB, altrimenti non avresti problemi.
La seconda dovrebbe essere 512MB secondo quello che dice il gestore, se non fosse così, faglielo sapere.