Guida alle tecnologie

Testare e configurare PHP-FastCGI per siti web

4 min read DevOps Aggiornato 27 Sep 2025
PHP-FastCGI: test e php.ini per sito
PHP-FastCGI: test e php.ini per sito

4 Test

Ora creiamo un piccolo file di test PHP, ad esempio nel sito web www.example1.com:

vi /var/www/web1/web/info.php

Inserire il seguente contenuto:

… e chiamare quel file dal browser (http://www.example1.com/info.php). Se tutto è configurato correttamente, l’output dovrebbe essere simile a questo e dovresti vedere CGI/FastCGI nella riga Server API:

Output phpinfo() che mostra Server API impostato su CGI/FastCGI

Nota: phpinfo() espone molte informazioni sensibili; rimuovilo o proteggilo dopo il test.

5 php.ini personalizzato per ogni sito web

Poiché ogni sito ha il proprio script wrapper php-fcgi-starter, è possibile definire file php.ini diversi per siti diversi. Per dimostrarlo, copiamo il php.ini di default in /var/www/web2/ e facciamo sì che www.example2.com usi quel php.ini:

cp /etc/php5/cgi/php.ini /var/www/web2/
chown web2:web2 /var/www/web2/php.ini

(Adesso puoi modificare /var/www/web2/php.ini secondo le tue esigenze.)

Poi apriamo lo script wrapper del sito:

vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter

… e inseriamo /var/www/web2/ nella variabile PHPRC:

#!/bin/sh
PHPRC=/var/www/web2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php

Ricarica Apache subito dopo:

/etc/init.d/apache2 reload

Crea un nuovo file phpinfo() per www.example2.com:

vi /var/www/web2/web/info.php

… e aprilo dal browser (http://www.example2.com/info.php). La riga Loaded Configuration File dovrebbe ora mostrare /var/www/web2/php.ini:

phpinfo() che mostra Loaded Configuration File impostato su /var/www/web2/php.ini

6 Modificare singole impostazioni PHP

Invece di fornire un intero php.ini personalizzato, puoi modificare singole direttive PHP nel wrapper php-fcgi-starter aggiungendo l’opzione -d all’eseguibile PHP. Per esempio, per disabilitare magic_quotes_gpc per www.example2.com:

vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter

Modifica lo script come segue:

#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php -d magic_quotes_gpc=off

Ricarica Apache:

/etc/init.d/apache2 reload

Poi richiama info.php nel browser (http://www.example2.com/info.php) e cerca la riga magic_quotes_gpc: dovrebbe mostrare Off ora:

phpinfo() che mostra magic_quotes_gpc impostato su Off

Quando può fallire (controesempi e limitazioni)

  • Il wrapper non viene eseguito: controlla permessi e shebang (#!/bin/sh). Se lo script non è eseguibile, PHP non parte.
  • PHPRC puntato a cartella errata: PHPRC deve essere una directory contenente php.ini leggibile dall’utente del processo.
  • Valori -d non supportati: alcune direttive di configurazione non sono modificabili a runtime con -d.
  • Cache opcode condivisa: se usi opcache o simili, potrebbe essere necessario svuotarla o riavviare il processo PHP per applicare cambiamenti.

Approcci alternativi

  • Usare PHP-FPM con pool separati per sito: offre isolamento e gestione dei processi più avanzata rispetto a php-fcgi-starter.
  • Usare mod_php (non consigliato per hosting multiutente): semplifica la configurazione ma con minore isolamento.
  • Contenitori o chroot per isolare configurazioni e file system tra siti.

Checklist per l’amministratore (ruolo: sysadmin)

  • Verificare che lo script php-fcgi-starter sia eseguibile e con permessi corretti.
  • Controllare che PHPRC punti alla directory con php.ini leggibile.
  • Confermare il numero di processi con PHP_FCGI_CHILDREN e PHP_FCGI_MAX_REQUESTS.
  • Testare phpinfo() solo in ambiente di sviluppo o temporaneamente.
  • Ricaricare Apache dopo ogni cambio: /etc/init.d/apache2 reload.

Box: numeri e variabili chiave

  • PHP_FCGI_MAX_REQUESTS: 5000 (numero di richieste prima che un processo venga riavviato)
  • PHP_FCGI_CHILDREN: 8 (numero di processi figli per il wrapper)
  • PHPRC: directory contenente php.ini da usare per il sito

Breve glossario (una riga ciascuno)

  • phpinfo(): funzione PHP che ritorna la configurazione corrente di PHP.
  • PHPRC: variabile d’ambiente che indica dove cercare php.ini.
  • php-fcgi-starter: script wrapper che avvia PHP in modalità FastCGI per un sito.

Link utili

Informazioni sull’autore

Falko Timme è il proprietario di Timme Hosting (hosting nginx ultra-veloce). È il manutentore principale di HowtoForge (dal 2005) e uno degli sviluppatori core di ISPConfig (dal 2000). Ha anche contribuito al libro O’Reilly “Linux System Administration”.

Riepilogo finale

Usa phpinfo() per verificare rapidamente lo stato di PHP e la Server API. Per isolamento a sito, imposta PHPRC nel wrapper php-fcgi-starter o passa singole direttive con -d. Valuta PHP-FPM per esigenze più complesse di gestione dei processi e isolamento.

Importante: rimuovi o proteggi i file phpinfo() dopo i test per evitare di esporre informazioni sensibili.

Autore
Redazione

Materiali simili

Installare Asterisk: guida per il primo PBX
Telecomunicazioni

Installare Asterisk: guida per il primo PBX

Microsoft Store non funziona: guida completa di riparazione
Windows

Microsoft Store non funziona: guida completa di riparazione

Scansione sicurezza WordPress: guida completa
Sicurezza web

Scansione sicurezza WordPress: guida completa

RSS da thread di forum con Blogger e email
Guide tecniche

RSS da thread di forum con Blogger e email

Installare OCS Inventory NG 2 su CentOS 5.5
Inventario IT

Installare OCS Inventory NG 2 su CentOS 5.5

Funzione CHAR in Google Sheets: guida pratica
Guide.

Funzione CHAR in Google Sheets: guida pratica