Matrice di compatibilità delle versioni PHP per PrestaShop (da 1.6 a 9.x)

410 visualizzazioni

Matrice di compatibilità delle versioni PHP per PrestaShop

Scegliere la versione PHP corretta per il tuo negozio PrestaShop è una delle decisioni infrastrutturali più critiche che prenderai. L'esecuzione di una versione PHP incompatibile può causare schermate bianche, processi di checkout malfunzionanti, errori nei moduli e vulnerabilità di sicurezza. Questa guida completa copre ogni versione di PrestaShop dalla 1.6 alla 9.x e associa ciascuna alle versioni PHP supportate, configurazioni raccomandate e considerazioni per l'aggiornamento.

Perché la versione PHP è importante per PrestaShop

PHP è il linguaggio lato server che alimenta PrestaShop. Ogni versione principale di PHP introduce miglioramenti delle prestazioni, nuove funzionalità del linguaggio e depreca le funzioni più vecchie. Il codice di PrestaShop si evolve parallelamente a PHP, il che significa che le versioni più recenti di PrestaShop sfruttano le funzionalità moderne di PHP abbandonando il supporto per quelle obsolete.

L'utilizzo della versione PHP sbagliata causa tre categorie di problemi:

  • Errori fatali - Le funzioni rimosse nelle versioni PHP più recenti (ad es., le funzioni mysql_* rimosse in PHP 7.0, each() rimossa in PHP 8.0) causano crash immediati.
  • Avvisi di deprecazione - Le funzioni deprecate generano avvisi che possono interrompere le risposte AJAX, l'output JSON e la generazione di PDF quando display_errors è abilitato.
  • Esposizione a rischi di sicurezza - Le versioni PHP che hanno raggiunto la fine del ciclo di vita non ricevono più patch di sicurezza, lasciando il tuo negozio vulnerabile.

Matrice di compatibilità completa

PrestaShop 1.6.x

Versione PrestaShopPHP 5.4PHP 5.5PHP 5.6PHP 7.0PHP 7.1PHP 7.2+
1.6.0.x - 1.6.0.14NoNoNo
1.6.1.0 - 1.6.1.4ParzialeNoNo
1.6.1.5 - 1.6.1.23No
1.6.1.24+No

PHP raccomandato per 1.6.x - PHP 7.1. Offre il miglior equilibrio tra prestazioni e compatibilità. L'esecuzione di 1.6.x su PHP 7.2+ richiede modifiche ai file core che interrompono il percorso di aggiornamento e non è raccomandata.

PrestaShop 1.7.x

Versione PrestaShopPHP 7.1PHP 7.2PHP 7.3PHP 7.4PHP 8.0+
1.7.0.x - 1.7.4.xSì (raccomandato)NoNoNoNo
1.7.5.xSì (raccomandato)NoNoNo
1.7.6.xSì (raccomandato)NoNo
1.7.7.xSì (raccomandato)ParzialeNo
1.7.8.xSì (raccomandato)No

Avviso critico - Nessuna versione di PrestaShop 1.7 supporta PHP 8.0 o successivo. Se esegui PS 1.7.6 su PHP 8, Smarty si bloccherà immediatamente perché il motore dei template utilizza funzioni rimosse in PHP 8.0. La rimozione della funzione each() e i cambiamenti nel funzionamento di array_key_exists() con gli oggetti causano errori fatali.

PrestaShop 8.x

Versione PrestaShopPHP 7.2PHP 7.3PHP 7.4PHP 8.0PHP 8.1PHP 8.2PHP 8.3
8.0.0 - 8.0.2Sì (min)ParzialeNoNo
8.0.3 - 8.0.5Sì (min)Sì (raccomandato)NoNo
8.1.0 - 8.1.2NoSì (min)Sì (raccomandato)ParzialeNo
8.1.3 - 8.1.7NoSì (min)Sì (raccomandato)Parziale

PHP raccomandato per 8.x - PHP 8.1. È il punto ottimale che offre piena compatibilità, supporto di sicurezza attivo ed eccellenti prestazioni con la compilazione JIT. PHP 8.1 introduce fibers, enums, proprietà readonly e tipi intersection che PrestaShop 8 può sfruttare.

PrestaShop 9.x

Versione PrestaShopPHP 8.1PHP 8.2PHP 8.3PHP 8.4
9.0.xSì (min)Sì (raccomandato)

PHP raccomandato per 9.x - PHP 8.3 o 8.4. PrestaShop 9 funziona su Symfony 6.4 LTS e richiede PHP 8.1 come minimo. PHP 8.4 introduce i Property Hooks e la visibilità asimmetrica che i futuri aggiornamenti di PrestaShop sfrutteranno.

Date di fine vita PHP che devi conoscere

Versione PHPSupporto attivo fino aFix di sicurezza fino aStato (2026)
PHP 7.4Nov 2021Nov 2022EOL - Pericoloso
PHP 8.0Nov 2022Nov 2023EOL - Pericoloso
PHP 8.1Nov 2023Dic 2025EOL - Aggiorna presto
PHP 8.2Dic 2024Dic 2026Solo sicurezza
PHP 8.3Dic 2025Dic 2027Solo sicurezza
PHP 8.4Dic 2026Dic 2028Supporto attivo

Se nel 2026 stai usando PHP 7.4 o 8.0, stai operando su una versione non supportata che non riceve più patch di sicurezza. Questo è un rischio critico per qualsiasi negozio e-commerce che gestisce dati di pagamento.

Come verificare la versione PHP attuale

Metodo 1 - Back Office PrestaShop

Naviga su Parametri avanzati > Informazioni. La sezione Informazioni sul server mostra la tua versione PHP, insieme al limite di memoria, tempo massimo di esecuzione e altre impostazioni pertinenti.

Metodo 2 - File PHP Info

Crea un file chiamato phpinfo.php nella directory root del tuo negozio con questo contenuto:

<?php phpinfo();

Accedilo tramite il tuo browser all'indirizzo https://tuonegozio.com/phpinfo.php. Elimina questo file immediatamente dopo la verifica - espone dettagli sensibili della configurazione del server.

Metodo 3 - Riga di comando

php -v
php -r "echo PHP_VERSION;"

Nota che la versione PHP CLI può differire dalla versione PHP del server web. Verifica sempre tramite l'interfaccia web o phpinfo().

Problemi comuni con la versione PHP sbagliata

Schermata bianca della morte (WSOD)

Il sintomo più comune di incompatibilità PHP. Controlla il log degli errori PHP (solitamente in /var/log/php-errors.log o accessibile tramite il pannello di hosting). Errori tipici:

Fatal error: Uncaught Error: Call to undefined function mysql_connect()
Fatal error: Uncaught Error: Call to undefined function each()
Fatal error: Cannot use "parent" when current class scope has no parent

Gli avvisi di deprecazione interrompono AJAX

Quando display_errors = On e aggiorni PHP, le notice di deprecazione vengono preposte alle risposte AJAX. Questo interrompe il parsing JSON nel back office, causando il fallimento silenzioso di funzionalità come la ricerca prodotti, la ricerca clienti e la creazione ordini. La soluzione:

; php.ini
display_errors = Off
log_errors = On
error_log = /percorso/verso/php-error.log

Incompatibilità dei moduli

I moduli di terze parti potrebbero non supportare la tua versione PHP. Prima di aggiornare PHP, verifica la compatibilità di ogni modulo installato. Aree problematiche comuni:

  • Moduli che utilizzano create_function() - rimossa in PHP 8.0
  • Moduli che utilizzano le funzioni mysql_* - rimosse in PHP 7.0
  • Moduli che utilizzano l'accesso posizionale alle stringhe con parentesi graffe $str{0} - rimosso in PHP 8.0
  • Moduli che non gestiscono i tipi di ritorno nullable - più rigorosi da PHP 8.1+

Come aggiornare PHP per PrestaShop in sicurezza

Passo 1 - Audit della configurazione attuale

Prima di modificare qualsiasi cosa, documenta il tuo ambiente attuale:

php -v                    # Versione PHP attuale
php -m                    # Estensioni caricate
php -i | grep memory      # Limite di memoria
php -i | grep max_exec    # Limite del tempo di esecuzione

Passo 2 - Verificare la compatibilità dei moduli

Esamina ogni modulo installato. Consulta la documentazione dello sviluppatore del modulo per il supporto delle versioni PHP. Se un modulo non è stato aggiornato da oltre due anni, è probabilmente incompatibile con PHP 8.x.

Passo 3 - Testare prima su staging

Non aggiornare mai PHP sul server di produzione senza test preliminari. Crea una copia staging del tuo negozio e testa con la nuova versione PHP. Verifica:

  • Le pagine del front office si caricano correttamente
  • Pagine prodotto, pagine categoria, pagine CMS
  • Il processo di carrello e checkout si completa
  • I moduli di pagamento elaborano le transazioni di test
  • Le funzionalità del back office funzionano (modifica prodotti, gestione ordini)
  • Tutti i moduli di terze parti funzionano correttamente
  • I cron job vengono eseguiti senza errori

Passo 4 - Aggiornamento con piano di rollback

La maggior parte dei provider di hosting consente di cambiare la versione PHP dal pannello di controllo (cPanel, Plesk, DirectAdmin). Mantieni la versione PHP precedente disponibile per un rollback rapido se sorgono problemi.

Passo 5 - Svuotare tutte le cache dopo l'aggiornamento

Dopo il cambio di versione PHP, svuota ogni livello di cache:

# Svuotare la cache di PrestaShop
rm -rf var/cache/prod/* var/cache/dev/*

# Svuotare i template Smarty compilati
rm -rf var/cache/smarty/compile/* var/cache/smarty/cache/*

# Se usi OPcache, riavviare PHP-FPM
systemctl restart php8.3-fpm

# Svuotare la cache CDN (Cloudflare, ecc.)

Best practice di configurazione PHP per PrestaShop

Indipendentemente dalla versione PHP scelta, queste impostazioni sono essenziali per prestazioni ottimali di PrestaShop:

; Impostazioni php.ini raccomandate
memory_limit = 512M
max_execution_time = 300
max_input_vars = 10000
post_max_size = 32M
upload_max_filesize = 32M

; Impostazioni OPcache (critiche per le prestazioni)
opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 32
opcache.max_accelerated_files = 16229
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1

; Estensioni richieste
extension = intl
extension = zip
extension = gd
extension = curl
extension = mbstring
extension = openssl
extension = pdo_mysql
extension = fileinfo

Considerazioni per gli sviluppatori di moduli

Se sviluppi moduli PrestaShop, devi considerare attentamente la compatibilità PHP:

  • Versione PHP minima - Punta a PHP 7.2 come minimo per moduli che devono funzionare su PrestaShop 8.0+, o PHP 8.1 per moduli esclusivi per PrestaShop 9.
  • Usa PHPStan o Psalm - Gli strumenti di analisi statica rilevano le incompatibilità di versione PHP prima che lo facciano i tuoi utenti.
  • Evita la sintassi specifica di versione - Funzionalità come le espressioni match (PHP 8.0), gli enums (PHP 8.1) e le proprietà readonly (PHP 8.1) limitano il tuo modulo a quelle versioni PHP e superiori.
  • Testa su più versioni - Utilizza contenitori Docker con diverse versioni PHP per testare il tuo modulo su tutto l'intervallo di compatibilità.

Domande frequenti

Posso eseguire PrestaShop 1.7 su PHP 8?

No. Nessuna versione di PrestaShop 1.7 supporta ufficialmente PHP 8.0 o successivo. Sebbene alcuni utenti abbiano applicato patch per farlo funzionare parzialmente, questo non è supportato e causerà problemi con gli aggiornamenti. Il percorso corretto è migrare a PrestaShop 8.x.

Dovrei usare PHP 8.4 con PrestaShop 8.1?

Sconsigliato. PrestaShop 8.1 è stato sviluppato e testato principalmente con PHP 8.1. Sebbene PHP 8.2 sia parzialmente supportato nelle versioni 8.1.x successive, PHP 8.4 introduce cambiamenti che possono causare problemi con i componenti Symfony più vecchi. Resta con PHP 8.1 per PrestaShop 8.x.

Quanto è più veloce PHP 8.x rispetto a 7.x?

I benchmark mostrano che PHP 8.1 è circa il 20-30% più veloce di PHP 7.4 per i carichi di lavoro tipici di PrestaShop. Il compilatore JIT offre il maggior beneficio per le attività computazionali. Per le operazioni legate all'I/O (query al database, lettura di file), il miglioramento è minore ma comunque misurabile.

L'aggiornamento di PHP richiede l'aggiornamento di PrestaShop?

Non necessariamente, ma vanno di pari passo. Puoi aggiornare PHP nell'intervallo supportato per la tua versione di PrestaShop senza aggiornare PrestaShop stesso. Tuttavia, se vuoi utilizzare una versione PHP moderna (8.3+), avrai bisogno di PrestaShop 8.1 o 9.x.

Questa risposta ti è stata utile?

Hai ancora domande?

Can't find what you're looking for? Send us your question and we'll get back to you quickly.

Loading...
Back to top