Plesk PHP: versioni multiple per dominio

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:

  1. Aprire Subscriptions → dominio.it
  2. Cliccare PHP Settings
  3. Selezionare la versione dal menu PHP version
  4. Scegliere il PHP handler (FPM, FastCGI, CGI, Apache module)
  5. 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:

  1. Backup del sito
  2. Test in staging con PHP 8.3
  3. Risolvere deprecation warnings (es. funzioni rimosse)
  4. Aggiornare composer dependencies che richiedono PHP 8
  5. Switch della versione in produzione
  6. 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.

Hai trovato utile quest'articolo?