Come Impostare Le Variabili D'Ambiente Per PHP In Apache?

Pubblicato 20 gennaio 2026

Problema: Impostare le Variabili d'Ambiente PHP in Apache

Impostare le variabili d'ambiente per PHP in Apache può essere difficile. Queste variabili aiutano a configurare le applicazioni PHP e controllare il loro funzionamento, ma impostarle correttamente in Apache non è sempre facile.

Soluzione: Utilizzare la Direttiva SetEnv nella Configurazione del Virtual Host Apache

Configurare le Variabili d'Ambiente in Apache

Apache offre la direttiva SetEnv per impostare le variabili d'ambiente per le applicazioni PHP. Questa direttiva ti permette di definire variabili personalizzate nei file di configurazione di Apache. La sintassi base è: SetEnv NOME_VARIABILE valore. Puoi utilizzare questa direttiva per impostare le variabili d'ambiente necessarie alla tua applicazione PHP.

Suggerimento: Proteggere i Dati Sensibili

Utilizza sempre le variabili d'ambiente per informazioni sensibili come credenziali del database o chiavi API. Questa pratica mantiene i tuoi dati sensibili fuori dal codice sorgente, migliorando la sicurezza.

Impostare Variabili d'Ambiente Specifiche per Dominio

Apache utilizza i blocchi VirtualHost per gestire le configurazioni per diversi domini. Questi blocchi ti permettono di configurare impostazioni specifiche per ogni sito web sul tuo server. Per configurare diverse variabili d'ambiente per ciascun dominio, aggiungi le direttive SetEnv all'interno del blocco VirtualHost appropriato.

Ecco un esempio di come impostare le variabili d'ambiente per due domini nella configurazione Apache:

<VirtualHost *:80>
    ServerName esempio1.com
    DocumentRoot /var/www/esempio1
    SetEnv DB_HOST localhost
    SetEnv DB_NAME esempio1_db
</VirtualHost>

<VirtualHost *:80>
    ServerName esempio2.com
    DocumentRoot /var/www/esempio2
    SetEnv DB_HOST 192.168.1.100
    SetEnv DB_NAME esempio2_db
</VirtualHost>

Questa configurazione imposta diverse variabili DB_HOST e DB_NAME per esempio1.com ed esempio2.com. La tua applicazione PHP può accedere a queste variabili utilizzando la funzione getenv().

Esempio: Accedere alle Variabili d'Ambiente in PHP

<?php
$dbHost = getenv('DB_HOST');
$dbName = getenv('DB_NAME');

$db = new PDO("mysql:host=$dbHost;dbname=$dbName", $username, $password);
?>

Guida Passo-Passo per Implementare le Variabili d'Ambiente

Localizzare e Modificare i File di Configurazione Apache

Per configurare le variabili d'ambiente in Apache, devi trovare e modificare il file di configurazione. Sulla maggior parte dei sistemi Linux, il file di configurazione principale di Apache si trova in /etc/apache2/apache2.conf o /etc/httpd/httpd.conf. È spesso preferibile utilizzare file di configurazione separati per ogni virtual host.

Questi file si trovano solitamente in /etc/apache2/sites-available/ o /etc/httpd/conf.d/. Cerca file denominati con il nome del tuo dominio o con estensione .conf.

Per modificare questi file in modo sicuro:

  1. Crea un backup del file originale:

    sudo cp /etc/apache2/sites-available/tuo-sito.conf /etc/apache2/sites-available/tuo-sito.conf.bak
  2. Apri il file con un editor di testo utilizzando sudo:

    sudo nano /etc/apache2/sites-available/tuo-sito.conf

Suggerimento: Controlla i Permessi del File

Prima di modificare i file di configurazione di Apache, controlla i loro permessi per assicurarti di avere i diritti di accesso necessari. Utilizza il seguente comando:

ls -l /etc/apache2/sites-available/tuo-sito.conf

Se non hai i permessi richiesti, potresti dover modificarli usando il comando chmod.

Aggiungere Variabili d'Ambiente ai Blocchi VirtualHost

Per aggiungere variabili d'ambiente, utilizza la direttiva SetEnv all'interno del blocco VirtualHost per il tuo dominio. Ecco la sintassi base:

<VirtualHost *:80>
    ServerName tuodominio.com
    DocumentRoot /var/www/tuodominio
    SetEnv NOME_VARIABILE valore
</VirtualHost>

Ecco alcuni esempi di configurazioni comuni di variabili d'ambiente:

  1. Dettagli di connessione al database:

    SetEnv DB_HOST localhost
    SetEnv DB_NAME myapp_database
    SetEnv DB_USER myapp_user
    SetEnv DB_PASS myapp_password
  2. Modalità applicazione:

    SetEnv APP_ENV production
  3. Chiavi API:

    SetEnv API_KEY la_tua_chiave_api_qui
  4. Impostazioni personalizzate dell'applicazione:

    SetEnv CACHE_TIMEOUT 3600
    SetEnv DEBUG_MODE false

Aggiungi queste direttive SetEnv all'interno del blocco VirtualHost appropriato per ogni dominio. In questo modo, puoi avere diverse variabili d'ambiente per diversi domini sullo stesso server.

Verificare e Testare la Configurazione delle Variabili d'Ambiente

Riavviare Apache per Applicare le Modifiche

Dopo aver configurato le variabili d'ambiente nella tua configurazione Apache, riavvia il servizio Apache affinché le modifiche abbiano effetto. Utilizza questi comandi per riavviare Apache:

Per sistemi Ubuntu/Debian:

sudo systemctl restart apache2

Per sistemi CentOS/RHEL:

sudo systemctl restart httpd

Prima di riavviare, controlla eventuali errori di configurazione:

sudo apache2ctl configtest

Se questo comando restituisce "Syntax OK", la tua configurazione è corretta e puoi procedere con il riavvio.

Suggerimento: Riavvio Graduale

Per ridurre al minimo i tempi di inattività durante il processo di riavvio, puoi utilizzare un comando di riavvio graduale:

Per Ubuntu/Debian:

sudo systemctl reload apache2

Per CentOS/RHEL:

sudo systemctl reload httpd

Questo consente ad Apache di completare l'elaborazione delle richieste correnti prima di riavviarsi, riducendo l'impatto sugli utenti attivi.

Confermare le Variabili d'Ambiente in PHP

Per verificare che le tue variabili d'ambiente siano impostate correttamente, utilizza le funzioni PHP per controllare i loro valori:

  1. Crea un file PHP (ad esempio, env_test.php) nella directory root del tuo web con questo contenuto:
<?php
phpinfo();
?>
  1. Accedi a questo file tramite il tuo browser web. Cerca la sezione "Environment" nell'output. Le tue variabili personalizzate dovrebbero essere elencate lì.

  2. Per un controllo specifico, utilizza la funzione getenv() in uno script PHP:

<?php
echo "DB_HOST: " . getenv('DB_HOST') . "
"; echo "DB_NAME: " . getenv('DB_NAME') . "
"; ?>

Se riscontri problemi:

  1. Controlla i log degli errori di Apache (/var/log/apache2/error.log o /var/log/httpd/error_log) per eventuali errori.

  2. Assicurati che le direttive SetEnv siano nel blocco VirtualHost corretto.

  3. Verifica che mod_env sia abilitato in Apache:

    apache2ctl -M | grep env

    Se non è elencato, abilitalo con:

    sudo a2enmod env
  4. Se utilizzi PHP-FPM, potresti dover passare le variabili d'ambiente in modo diverso. Considera l'utilizzo di SetEnvIf invece di SetEnv.

Seguendo questi passaggi, puoi configurare, verificare e risolvere i problemi delle variabili d'ambiente per le tue applicazioni PHP in Apache.