Matrice di compatibilità delle versioni PHP per PrestaShop (da 1.6 a 9.x)
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 PrestaShop | PHP 5.4 | PHP 5.5 | PHP 5.6 | PHP 7.0 | PHP 7.1 | PHP 7.2+ |
|---|---|---|---|---|---|---|
| 1.6.0.x - 1.6.0.14 | Sì | Sì | Sì | No | No | No |
| 1.6.1.0 - 1.6.1.4 | Sì | Sì | Sì | Parziale | No | No |
| 1.6.1.5 - 1.6.1.23 | Sì | Sì | Sì | Sì | Sì | No |
| 1.6.1.24+ | Sì | Sì | Sì | Sì | Sì | 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 PrestaShop | PHP 7.1 | PHP 7.2 | PHP 7.3 | PHP 7.4 | PHP 8.0+ |
|---|---|---|---|---|---|
| 1.7.0.x - 1.7.4.x | Sì (raccomandato) | No | No | No | No |
| 1.7.5.x | Sì | Sì (raccomandato) | No | No | No |
| 1.7.6.x | Sì | Sì (raccomandato) | Sì | No | No |
| 1.7.7.x | Sì | Sì | Sì (raccomandato) | Parziale | No |
| 1.7.8.x | Sì | Sì | Sì | Sì (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 PrestaShop | PHP 7.2 | PHP 7.3 | PHP 7.4 | PHP 8.0 | PHP 8.1 | PHP 8.2 | PHP 8.3 |
|---|---|---|---|---|---|---|---|
| 8.0.0 - 8.0.2 | Sì (min) | Sì | Sì | Sì | Parziale | No | No |
| 8.0.3 - 8.0.5 | Sì (min) | Sì | Sì | Sì | Sì (raccomandato) | No | No |
| 8.1.0 - 8.1.2 | No | Sì (min) | Sì | Sì | Sì (raccomandato) | Parziale | No |
| 8.1.3 - 8.1.7 | No | Sì (min) | Sì | Sì | Sì (raccomandato) | Sì | 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 PrestaShop | PHP 8.1 | PHP 8.2 | PHP 8.3 | PHP 8.4 |
|---|---|---|---|---|
| 9.0.x | Sì (min) | Sì | Sì (raccomandato) | Sì |
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 PHP | Supporto attivo fino a | Fix di sicurezza fino a | Stato (2026) |
|---|---|---|---|
| PHP 7.4 | Nov 2021 | Nov 2022 | EOL - Pericoloso |
| PHP 8.0 | Nov 2022 | Nov 2023 | EOL - Pericoloso |
| PHP 8.1 | Nov 2023 | Dic 2025 | EOL - Aggiorna presto |
| PHP 8.2 | Dic 2024 | Dic 2026 | Solo sicurezza |
| PHP 8.3 | Dic 2025 | Dic 2027 | Solo sicurezza |
| PHP 8.4 | Dic 2026 | Dic 2028 | Supporto 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 parentGli 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.logIncompatibilità 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 esecuzionePasso 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 = fileinfoConsiderazioni 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.