Passa al contenuto principale
Command lines terminal

Soluzione dell’errore “Fatal error: allowed memory size of […] bytes exhausted” con Backup DB di PrestaShop

Stai avviando il backup del database del tuo negozio PrestaShop (Parametri avanzati > Backup DB) e ricevi il seguente errore: Fatal error: allowed memory size of […] bytes exhausted […]: in questo articolo ti spiego come trovare soluzioni alternative a questo problema.

Questo errore è dovuto al fatto che il database che stai cercando di “backuppare” ha dimensioni abbastanza grandi.

Ciò può avvenire quando lo shop è ormai online da molti anni (ed è quindi “cresciuto”) e il valore del memory_limit del file php.ini del tuo hosting, è troppo basso.

La soluzione è quindi quella di aumentare questo valore.

Spesso, però, soprattutto se il tuo sito è ospitato su un hosting condiviso, questo valore può essere aumentato fino a un certo limite. Questo limite potrebbe essere inferiore al valore che serve per ovviare il problema illustrato sopra.

Ad esempio, può essere impostato fino ad un massimo di 250MB. A noi però potrebbe servire a 512MB per eseguire il backup.

Se non si vuole spostare il sito su una soluzione hosting VPS, Cloud o Server dedicato (dove la modifica di questi valori può essere fatta a nostro piacimento), l’unica soluzione è eseguire il backup del database in modi alternativi.

L’alternativa più semplici sono:

  • fare il backup tramite il servizio di backup dell’hosting su cui è ospitato il sito. Deve essere fornito dal provider ed è incluso nel piano di hosting);
  • fare il backup tramite il pannello phpMyAdmin, messo a disposizione dal nostro hosting. Dopo aver selezionato il database, basterà esportarlo (per istruzioni più dettagliate, basta fare una semplice ricerca su Google). Se il database è molto grande, però, il pannello impiegherà un pò di tempo per fare il backup del database, poichè il database deve essere scaricato dal browser con cui accediamo al pannello.

Backup del database tramite SSH

L’alternativa da “smanettori”, invece, è usare SSH.

SSH (Secure SHell, shell sicura) è un protocollo che permette di stabilire una sessione remota cifrata tramite interfaccia a riga di comando con un altro host di una rete informatica (definizione di Wikipedia).

Prima di tutto, devi connetterti al server: necessiti dell’indirizzo IP del server, di uno username e di una password. Questi ultimi due valori te li fornisce il tuo provider di hosting, dopo esplicita richiesta di attivazione della connessione SSH.

Ovviamente hai bisogno di un client di “riga di comando” (Command Line) che per Mac può essere il Terminale (integrato nel sistema operativo), mentre per Windows può essere Putty.

$ ssh username@[server-ip] -p [porta-del-server]

Se è la prima volta che ti connetti, ti comparirà il messaggio Are you sure you want to continue connecting? : scrivi yes e clicca Invio; ti verrà chiesto di inserire la password di login SSH: dopo averla inserità sarai connesso al server tramite SSH.

Ora puoi esportare il database con il seguente comando:

$ mysqldump -u [username] -p [nome_del_database] > [nome_del_tuo_file_di_backup].sql

Devi sostituire i valori nelle [parentesi] con le tue informazioni personali.

Questo comando creerà un file che è un backup completo del tuo database. Devi navigare in una cartella appropriata e poi lanciare il comando, al fine di creare il file in quella specifica cartella.

Per scaricare in locale il file di backup appena creato, puoi accedere via FTP al server, navigare nella cartella dove l’hai creato e scaricarlo da li.

Statistiche

Problema delle Statistiche delle Vendite e degli Ordini che Scompaiono nel Back-office di PrestaShop

Problema: le statistiche delle vendite e degli ordini non vengono registrate nel back-office di PrestaShop: ti spiego perchè questo succede e come risolvere questo problema.

Quando si esegue una nuova installazione di PrestaShop, di default è attiva la fatturazione nelle impostazioni dello shop.

Questo significa che per ogni ordine convalidato viene generata una fattura.

Spesso, però, la fatturazione non è necessaria, soprattutto per i negozi che eseguono il corrispettivo delle vendite a fine giornata. Questi negozi, quindi, non emettono la fattura per ogni singolo ordine che ricevono.

In questo caso, si può tranquillamente disabilitare la fatturazione seguendo il percorso Ordini > Fatture >Opzioni di Fatture: Attiva fatturazione NO.

Qui sorge il problema: la generazione delle fatture determina la registrazione dell’ordine convalidato all’interno delle Statistiche delle vendite nel back-office di PrestaShop: questo significa che, nel momento in sui si va a disabilitare la fatturazione, gli ordini effettuati non vengono registrati nelle Statistiche.

Cosa si può fare per aggirare questo problema? La soluzione è abbastanza semplice: si attiva la fatturazione e si va a modificare in Traduzioni > Traduzioni PDF la voce “Fattura” sostituendola con “Distinta d’ordine”: in questo modo le statistiche degli ordini funzionano e non ci sono “implicazioni fiscali” per la generazione delle fatture.

Backup

Creare Backup Automatici del Database di PrestaShop

Tutti sappiamo che avere dei backup regolari del proprio sito è una cosa importantissima nel caso in cui dovesse succedere qualcosa che richiede un ripristino dei dati recenti: in questo articolo ti spiego come automatizzare il processo di backup del database.

Per effettuare un backup “manuale” del database del proprio sito PrestaShop dal back-end, basta seguire il percorso Parametri Avanzati > Backup DB e cliccare sul pulsante Crea un nuovo Backup: il backup comparirà nella lista sottostante dalla quale potrà essere scaricato.

Per automatizzare questa operazione a intervalli regolari di tempo è richiesto uno script e la creazione un processo cron job.

Prima di tutto bisogna creare lo script di backup.

Teniamo in considerazione che quando si clicca nel back-office sul pulsante per fare il backup, esso richiama semplicemente il metodo add() sull’istanza dell’oggetto PrestaShopBackup.

Prima di tutto creiamo nella root del nostro sito un file che chiameremo prestashop-backup.php .

Nel file includiamo il seguente codice nei tag php:


//Inizializziamo PrestaShop
include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/init.php');


//Aggiungiamo un livello di sicurezza
$key = 'latuapassword';


if(!Tools::getValue('k') || Tools::getValue('k') != $key)
die('unauthorized');


//Definiamo la costante della cartella admin, se non è definita
if(!defined('_PS_ADMIN_DIR_'))
define('_PS_ADMIN_DIR_', getcwd().'/latuacartellaadmin');


//Eseguiamo lo script
$backup = new PrestaShopBackup();
if($backup->add())
die('success');
else die('error');

Ricordiamoci ovviamente di sostituire ‘latuapassword’ con una propria password e ‘/latuacartellaadmin’ con la propria cartella admin.

Per testare manualmente questo script, bisognerà digitare l’url completo del proprio sito + /prestashop-backup.php?k=latuapassword nella barra degli URL del browser e cliccare invio: aggiornando la pagina Backup DB del back-end, vedremo comparire nella lista il nostro nuovo backup.

Ora che lo script è pronto, non serve altro che creare il cron job nel pannello del proprio hosting e impostarlo all’intervallo che si vuole.

Puoi scaricare il file dello script al seguente link GitHub.

Carta di Credito

Problema del “Doppio Pagamento” all’Interno di un Ordine nel Back-office di PrestaShop

Ti è mai capitato di ricevere un ordine sul tuo sito PrestaShop e nel back-office, nel tab “Pagamento” dell’ordine, vedere l’avviso “Avviso xxxx € pagato al posto di xxxx €” (dove la prima cifra è il doppio della seconda)?

Ora ti spiegherò perchè questo accade e come fare in modo che non si verifichi più questo avviso.

Prima di tutto bisogna premettere che, sebbene ci sia questo avviso di doppio pagamento, il reale pagamento è uno solo: questo lo si nota soprattutto se il pagamento è stato effettuato tramite PayPal, dove la transazione presenta la cifra corretta (e quindi non la cifra doppia, come indicato dall’avviso).

La causa che genera questo avviso è solitamente il cambio degli “Stati” degli ordini.

Stati degli ordini

Gli stati predefiniti degli ordini sono i seguenti:

  • Annullato
  • Consegna in corso
  • Consegnato
  • Errore di pagamento
  • In attesa di pagamento con assegno
  • In attesa di pagamento con bonifico bancario
  • In attesa di pagamento con PayPal
  • In attesa di rifornimento
  • Pagamento accettato
  • Payment remotely accepted (pagamento accettato in modalità remota)
  • Rimborsato.

Per vedere la lista di questi Stati, basta seguire il percorso Ordini > Stati: comparirà la schermata con la lista degli stati: sarà possibile aggiungere nuovi stati oppure modificare quelli esistenti (cliccando sul tasto “Modifica“).

Modificando uno Stato ordine, si vedrà una lista di checkbox che, selezionati o meno, determineranno delle particolari condizioni o azioni nel momento in cui l’ordine passerà in quello Stato (Considera questo stato ordine come validato, Consente a un cliente di scaricare e guardare le versioni PDF delle sue fatture, Nascondi questo status in tutti gli ordini del cliente, Invia una email al cliente quando lo stato ordine viene cambiato, etc…)

A seconda delle impostazioni di Pagamento del vostro negozio, questi stati d’ordine possono cambiare in automatico oppure tramite l’azione “manuale” all’interno del tab “Stato” dell’ordine nel back-office: solitamente la causa dell’avviso del pagamento doppio è generata dal passaggio tra due Stati che presentano entrambi come selezionato il checkbox Segna l’ordine come pagato.

La soluzione quindi è disabilitare il checkbox nel secondo Stato che si va ad attivare.

In generale, conviene controllare bene tutte le impostazioni dei vari Stati che si andrà ad usare nel proprio negozio, evitando che queste non vadano in conflitto quando si andrà a variare gli Stati degli ordini (da tenere in considerazione soprattutto la generazione di Fattura e Bolla di Consegna).

Spiaggia in estate

Applicazione per la Gestione di PrestaShop su Mobile

L’estate è ormai arrivata: se stai pensando a una soluzione per “tenere d’occhio” il tuo store online anche sotto l’ombrellone (senza l’uso di uno scomodo computer portatile) questa applicazione gratuita per Android potrebbe fare al caso tuo.

Puoi trovare questa app nel Google Play store con il nome “PrestaShop Mobile Assistant” .

Cosa puoi fare

Di base, consente di analizzare l’attività del tuo negozio e nello specifico:

  • Vedere i diagrammi delle statistiche
  • Ricevere le notifiche per i nuovi clienti e i nuovi ordini (tramite notifiche push) e il cambio dello stato degli ordini
  • Configurare i widgets per vedere la situazione di clienti e ordini
  • Usare uno scanner codice a barre per aggiungere i numeri tracking agli ordini
  • Usare vari filtri

I vantaggi

I vantaggi principali sono:

  • Avere dei report chiari e dettagliati del tuo shop PrestaShop, a portata di mano e consultabili velocemente
  • Consultare i prodotti, cercandoli per ID, SKU o Nome
  • Avere le notifiche degli ordini
  • Vedere le vendite mensili/settimanali/giornaliere
  • Cambiare lo stato degli ordini
  • Vedere i clienti registrati oggi/questa settimana/mese/anno o qualsiasi periodo

Il tutto è coronato da un’interfaccia semplice e molto intuitiva.

Prima di usare questa applicazione, è necessario installare in PrestaShop il modulo gratuitoMobile Assistant Connector“.

Una volta installato il modulo (ricordati di cambiare i dati di default di login e password), si può installare l’applicazione nel telefono o nel tablet e completare la configurazione manualmente o tramite lo scan del QR code.

Ovviamente non potrai gestire completamente tutti i tui ordini come dall’interfaccia web, ma, per “tenere d’occhio” il tuo shop, quest’app va più che bene.

Ora sei pronto per andare in spiaggia e avere il tuo online shop sempre a portata di mano!

Credit Card Paypal PRO Prestashop

Problema del Modulo Ufficiale PayPal di PrestaShop con il Conto PayPal PRO: Soluzione Empirica e Parziale

Hai un conto PayPal PRO? L’hai configurato correttamente nel modulo PayPal di PrestaShop? Hai ricevuto delle notifiche di pagamento PayPal ma il corrispettivo ordine non è stato registrato all’interno di PrestaShop?

Se la risposta a queste domande è si, potresti essere una delle sfortunate vittime di un problema noto.

Il problema

Il disagio causato da questo problema è molto grave. Ci si trova nella situazione in cui si hanno dei pagamenti a cui non corrispondono degli ordini.

Spesso questi ordini “fantasma” vengono scoperti solo nel momento in cui l’acquirente vi chiede info sull’ordine non recapitato. Ancora peggio: vi trovate una contestazione aperta su PayPal.

Se gli ordini non vengono registrati, inoltre, le quantità di magazzino non vengono aggiornate, causando ulteriori incongruenze.

Consultando il forum ufficiale di PrestaShop, sono diverse le discussioni a riguardo ma non viene indicata nessuna soluzione.

In base alla mia esperienza personale e al confronto con altri sviluppatori/utilizzatori di PrestaShop sono giunto a queste osservazioni:

  1. Questo è un problema noto agli sviluppatori di PrestaShop, ai tecnici di PayPal e alla community di PrestaShop;
  2. Il problema è totalmente random: si verifica su conti PayPal PRO random, in periodi random e su transazioni random;
  3. Non ci sono casi di conti PayPal Business con questo problema;

Analisi empirica

In primis, ho analizzzato alcuni aspetti per trovare una possibile soluzione al problema.

Ho fatto tutti i controlli del caso su:

  • modulo PayPal (versione aggiornata 3.10.9)
  • versione di PrestaShop (ultima versione stabile 1.6.1.5)
  • hosting (error log), etc.

Non trovando nessun errore nei punti analizzati, ho contattato direttamente l’assistenza tecnica di PayPal.

A questo punto è iniziata una discussione via email con un loro tecnico. La discussione si è prolungata per settimane, durante le quali mi ha fatto “rimbalzare” da un punto all’altro.

Il tecnico di PayPal mi ha detto che era un problema del listener IPN.

Dopo aver passato il sito su https, il problema si è ripresentato. Il tecnico mi ha detto che era un problema della variabile “Custom” delle transazioni.

Gli ho dimostrato che il problema non era quello. Il tecnico mi ha fatto tornare di nuovo sull’IPN, linkandomi gli esempi pubblicati su GitHub.

Conclusione: il problema è di PayPal PRO che a random non manda la “risposta” a PrestaShop dopo una transazione.

PayPal non sa come risolve il problema e soprattutto non vuole ammettere che il problema è suo.

Soluzione empirica

A questo punto ho deciso di analizzare la mia particolare situazione: il conto PayPal PRO era configurato all’interno di 3 PrestaShop diversi: due con la stessa email e uno con una email diversa.

Facendo diversi test nello stesso periodo di tempo sui 3 shop, ho notato che il PrestaShop con l’email “diversa” era quello che in quel preciso periodo di tempo non registrava gli ordini.

Ho deciso di inserire la stessa email degli altri 2 shop anche in questo terzo shop e immediatamente gli ordini sono stati registrati.

Da quel momento in poi il problema degli ordini “fantasma” (che colpiva a random tutti e 3 gli shop) è magicamente scomparso.

Il problema si è ripresentato solo su un ordine, ma è stato un caso isolato: nulla a che vedere con periodi precedenti in cui ci sono stati fino a 10 ordini fantasma in una settimana.

Questa è una procedura di testing assolutamente empirica, che, nel mio caso, ha portato a una risoluzione del problema.

Spero che la condivisione di questa mia ricerca possa servire a qualcuno che si è trovato in una situazione analoga alla mia, confidando, per il futuro prossimo, nella risoluzione vera e propria del bug da parte di PayPal.

Attenzione: alcune funzionalità di questa pagina potrebbero essere bloccate a seguito delle tue scelte privacy: