Multiple versioni PHP sullo stesso server
Plesk consente di installare multiple versioni di PHP in parallelo sullo stesso server e di scegliere quale usare per ogni dominio, sottoscrizione o addirittura singolo path. Questa funzionalita' e' essenziale quando:
- Ospiti applicazioni legacy che richiedono PHP 5.6 o 7.x
- Vuoi testare un sito con PHP 8.x prima di migrare
- Differenti CMS hanno requisiti diversi (es. Joomla vecchio vs WordPress nuovo)
Versioni disponibili
Plesk Obsidian supporta tipicamente:
- PHP 5.6 (EOL, solo per legacy)
- PHP 7.0, 7.1, 7.2, 7.3, 7.4
- PHP 8.0, 8.1, 8.2, 8.3, 8.4
Verificare le versioni installate da SSH:
plesk bin php_handler --list
Installare una nuova versione PHP
Da pannello: Tools & Settings → Updates and Upgrades → Add/Remove Components. Espandere il nodo Plesk PHP e selezionare le versioni desiderate.
Da SSH:
plesk installer --select-product-id panel --select-release-current --install-component php8.3
Cambiare la versione PHP di un dominio
Da pannello:
- Aprire Subscriptions → dominio.it
- Cliccare PHP Settings
- Selezionare la versione dal menu PHP version
- Scegliere il PHP handler (FPM, FastCGI, CGI, Apache module)
- Salvare
Da SSH:
plesk bin domain --update dominio.it -php_handler_id plesk-php83-fpm
PHP handlers
Per ogni versione, Plesk offre diversi handler:
- PHP-FPM by nginx (consigliato): Nginx serve i file statici, FPM processa PHP. Performance massime.
- PHP-FPM by Apache: Apache+FPM, supporta .htaccess
- FastCGI: legacy, simile a FPM ma meno efficiente
- CGI: lento, sconsigliato
- Apache module (mod_php): solo PHP system, condivide memoria con Apache
Configurazione PHP per dominio
In PHP Settings si possono personalizzare le direttive php.ini per il singolo dominio:
- memory_limit: limite memoria (default 128M, WordPress consiglia 256M)
- max_execution_time: tempo massimo di esecuzione (default 30s)
- upload_max_filesize: dimensione max file caricati (default 2M)
- post_max_size: dimensione max POST (deve essere >= upload_max_filesize)
- max_input_vars: numero max variabili in input (importante per WooCommerce)
Le modifiche sono applicate immediatamente: Plesk ricrea i config files e ricarica PHP-FPM.
Verifica via phpinfo()
Per verificare quale versione e' attiva su un dominio, creare un file info.php con:
<?php phpinfo(); ?>
Aprire https://dominio.it/info.php e controllare la sezione superiore. Eliminare il file dopo il test: contiene informazioni sensibili.
Versioni PHP per subdomain
Subdomain e sottosezioni possono avere versioni PHP diverse dal dominio principale. Configurazione separata in Subscriptions → dominio → subdomain → PHP Settings.
Estensioni PHP
Le estensioni (mysqli, gd, mbstring, ecc.) si installano per versione. Per vedere le estensioni installate:
/opt/plesk/php/8.3/bin/php -m
Installare un'estensione mancante:
dnf install plesk-php83-imagick
Composer multi-versione
Plesk include Composer per ogni versione PHP:
/opt/plesk/php/8.3/bin/php /usr/local/bin/composer install
OPcache per performance
OPcache e' essenziale per PHP performance. Plesk lo abilita di default per ogni versione PHP. Verificare la configurazione in PHP Settings:
- opcache.memory_consumption: 128M-256M consigliato
- opcache.max_accelerated_files: 10000-20000 per app grandi (Magento, Laravel grandi)
- opcache.validate_timestamps: 0 in produzione (massima performance), 1 in development
PHP-FPM pool tuning
Ogni dominio ha un pool FPM dedicato. Parametri chiave:
- pm.max_children: massimo processi attivi (rule of thumb: RAM/process_size)
- pm.start_servers: processi iniziali
- pm.max_requests: dopo N richieste il processo viene rinnovato (mitigates memory leaks)
Symlink vs filesystem
Plesk gestisce le versioni PHP via symlink in /opt/plesk/php/X.Y/. Verifica:
ls -la /opt/plesk/php/ update-alternatives --display php
WP-CLI con PHP custom
Per usare WP-CLI con la versione PHP del dominio:
/opt/plesk/php/8.3/bin/php /usr/local/bin/wp ...
Creare alias in ~/.bashrc per comodita'.
Composer con versione specifica
/opt/plesk/php/8.3/bin/php /usr/local/bin/composer install
EOL versions e supporto
PHP 5.6, 7.0, 7.1, 7.2, 7.3 sono End of Life: non ricevono più' patch di sicurezza. Plesk continua a fornire le binary per compatibilità' legacy ma e' fortemente sconsigliato usarle in produzione. Pianificare la migrazione a PHP 8.x.
Test di compatibilità'
Per testare se un sito funziona su versione PHP più' recente, usare PHPCompatibility con PHP_CodeSniffer:
phpcs --standard=PHPCompatibility --runtime-set testVersion 8.3 path/to/code
FPM status page
PHP-FPM espone un'endpoint di status per monitoraggio. Abilitare in Plesk modificando il pool config (in PHP Settings → Additional configuration):
pm.status_path = /fpm-status
Accessibile da https://dominio.it/fpm-status con autenticazione consigliata. Mostra processi attivi, slow queries, statistiche.
Slow log
Per identificare script PHP lenti:
request_slowlog_timeout = 5s slowlog = /var/log/plesk-php-fpm/slow.log
Le richieste > 5 secondi vengono loggate con stack trace.
Composer cache
Composer mantiene cache in ~/.composer/cache. Per progetti grandi pre-warming della cache accelera i deploy:
composer global require ergebnis/composer-normalize
Migrazione tra versioni
Per migrare un sito da PHP 7.4 a 8.3:
- Backup del sito
- Test in staging con PHP 8.3
- Risolvere deprecation warnings (es. funzioni rimosse)
- Aggiornare composer dependencies che richiedono PHP 8
- Switch della versione in produzione
- Monitor errori per 24-48 ore
Common gotchas
Errori frequenti nella migrazione PHP:
- each() rimossa in PHP 8: sostituire con foreach
- create_function() rimossa: usare closures
- Stricter type checks: PHP 8 e' più' rigido su int/string
- Default value of $errcontext changed: alcuni error handler vanno aggiornati
Plesk PHP vs system PHP
Plesk PHP (in /opt/plesk/php/) e' separato dal PHP di sistema (in /usr/bin/php). Usare sempre Plesk PHP per i siti hospitati.
Hai bisogno di aiuto?
Se vuoi gestione Plesk dal team di G Tech Group, scrivici tramite il modulo di contatto.