Testare e configurare PHP-FastCGI per siti web

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:
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:
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:
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
- mod_fcgid: http://httpd.apache.org/mod_fcgid/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- Debian: http://www.debian.org/
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.
Materiali simili
Installare Asterisk: guida per il primo PBX

Microsoft Store non funziona: guida completa di riparazione

Scansione sicurezza WordPress: guida completa

RSS da thread di forum con Blogger e email
Installare OCS Inventory NG 2 su CentOS 5.5
