PHP-FastCGI: test, php.ini per sito e impostazioni singole

Questa guida mostra come testare PHP via FastCGI su Apache, assegnare un php.ini specifico a ciascun sito e cambiare singole direttive usando l’opzione -d di php-cgi. Include esempi pratici, una checklist per amministratori e uno schema decisionale rapido.
Testare PHP con FastCGI
Creiamo un piccolo file di test PHP sul sito www.example1.com per verificare che PHP stia girando come CGI/FastCGI.
Apri il file di test (esempio path per una distribuzione tipica):
vi /srv/www/web1/web/info.php
Inserisci questo contenuto:
Poi apri nel browser:
http://www.example1.com/info.php
Se tutto è configurato correttamente, la pagina phpinfo() mostrerà la riga “Server API” con CGI/FastCGI.
Importante: se non vedi CGI/FastCGI, controlla i log di Apache e gli script wrapper php-fcgi-starter.
Usare un php.ini diverso per ogni sito
Per avere configurazioni PHP diverse per ogni sito, sfrutta lo script wrapper php-fcgi-starter per ciascun virtual host. Di seguito un esempio che copia il php.ini di default nella directory del sito web2 e imposta i permessi corretti.
Esegui questi comandi (esegui come utente con permessi adeguati):
cp /etc/php5/fastcgi/php.ini /srv/www/web2/
chown web2:web2 /srv/www/web2/php.ini
Modifica poi lo script wrapper del sito (per esempio):
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter
Assicurati che la variabile PHPRC punti alla directory che contiene php.ini del sito:
#!/bin/sh
PHPRC=/srv/www/web2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi
Dopo la modifica, riavvia Apache:
/etc/init.d/apache2 restart
Crea un file phpinfo() per www.example2.com e aprilo nel browser:
vi /srv/www/web2/web/info.php
La riga “Loaded Configuration File” dovrebbe mostrare ora /srv/www/web2/php.ini.
Nota: mantenere php.ini nella directory del sito permette di avere limiti, estensioni e direttive diverse per host.
Cambiare singole impostazioni PHP senza un nuovo php.ini
Se preferisci non fornire un php.ini completo per un sito, puoi modificare singole direttive avviando php-cgi con l’opzione -d. Esempio: disabilitare magic_quotes_gpc per www.example2.com.
Apri lo script wrapper del sito:
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter
Modificalo in questo modo:
#!/bin/sh
PHPRC=/etc/php5/fastcgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi -d magic_quotes_gpc=off
Riavvia Apache:
/etc/init.d/apache2 restart
Apri nuovamente http://www.example2.com/info.php e cerca la riga magic_quotes_gpc: dovrebbe risultare Off.
Best practice e suggerimenti rapidi
- Mantieni script wrapper separati per ciascun sito. Così puoi riavviare o riciclare solo i processi di quel sito.
- Non esporre php.ini con permessi globali di scrittura. Usa owner e group appropriati.
- Testa ogni cambiamento su un sito di staging prima di applicarlo in produzione.
- Controlla i log di Apache (/var/log/apache2/) dopo ogni modifica.
Checklist per ruolo
Sysadmin:
- Verificare che lo user del sito possieda /srv/www/
/php.ini - Controllare permessi e ownership
- Riavviare solo quando necessario per evitare downtime
- Monitorare errori e slow CGI processes
Sviluppatore:
- Confermare le direttive PHP richieste dall’app
- Testare phpinfo() e script principali dopo le modifiche
- Evitare direttive globali che compromettono sicurezza
Mini-metodologia: come procedere in 5 passi
- Creare un phpinfo() locale e aprirlo nel browser.
- Identificare la configurazione corrente (Server API, Loaded Configuration File).
- Decidere tra php.ini specifico o singole direttive (-d).
- Applicare modifiche nello script wrapper del sito.
- Riavviare Apache e verificare con phpinfo().
Schema decisionale (mermaid)
flowchart TD
A[Ho bisogno di configurazione diversa per il sito?] -->|Sì| B[Creare php.ini nella directory del sito]
A -->|No| C[Usare php-cgi -d per impostazioni singole]
B --> D[Impostare PHPRC nello script wrapper]
C --> D
D --> E[Riavviare Apache]
E --> F[Verificare con phpinfo'']
Quando questo approccio può fallire
- Se Apache è configurato per usare mod_php invece di FastCGI, le configurazioni dei wrapper non avranno effetto.
- Se SELinux/AppArmor blocca l’accesso ai php.ini personalizzati.
- Se lo script wrapper non viene eseguito con i permessi corretti.
1-linea glossario
- php-cgi: eseguibile PHP per CGI/FastCGI; -d permette di impostare direttive PHP on-the-fly.
Link utili
- mod_fcgid: http://fastcgi.coremail.cn/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- OpenSUSE: http://www.opensuse.org/
Riepilogo
Questa procedura consente di gestire configurazioni PHP diverse per ogni virtual host usando script wrapper FastCGI. Puoi scegliere tra fornire un php.ini dedicato o modificare singole direttive con l’opzione -d. Verifica sempre con phpinfo() e monitora i log dopo ogni modifica.
Note:
- Modifiche errate a php.ini o a process manager possono causare errori di runtime. Testa in ambiente di staging.
- Mantieni backup dei file php-fcgi-starter prima di editarli.
Materiali simili

Abilitare HDR in Stalker 2 — guida rapida

Suggerimenti parole in stile smartphone su Windows

Salvare link da Twitter per leggerli dopo

Come minare Dogecoin con un laptop

Velocità diverse per trackpad e mouse su Windows
