Guida alle tecnologie

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

4 min read Server PHP Aggiornato 01 Oct 2025
PHP-FastCGI: php.ini per sito e impostazioni
PHP-FastCGI: php.ini per sito e impostazioni

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.

Uscita di phpinfo che mostra

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.

Schermata phpinfo che mostra il percorso di php.ini caricato: /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.

Screenshot di phpinfo che mostra magic_quotes_gpc impostato su 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

  1. Creare un phpinfo() locale e aprirlo nel browser.
  2. Identificare la configurazione corrente (Server API, Loaded Configuration File).
  3. Decidere tra php.ini specifico o singole direttive (-d).
  4. Applicare modifiche nello script wrapper del sito.
  5. 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

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.
Autore
Redazione

Materiali simili

Abilitare HDR in Stalker 2 — guida rapida
Gaming

Abilitare HDR in Stalker 2 — guida rapida

Suggerimenti parole in stile smartphone su Windows
Produttività

Suggerimenti parole in stile smartphone su Windows

Salvare link da Twitter per leggerli dopo
Produttività

Salvare link da Twitter per leggerli dopo

Come minare Dogecoin con un laptop
Criptovalute

Come minare Dogecoin con un laptop

Velocità diverse per trackpad e mouse su Windows
Hardware

Velocità diverse per trackpad e mouse su Windows

Errore D3D 25 in RE4 Remake: guida completa
Guide.

Errore D3D 25 in RE4 Remake: guida completa