2010-07-12 14 views
5

per il nostro progetto, è necessario impostare diversi valori PHP a seconda dell'ambiente (sviluppo/produzione), in particolare il percorso di salvataggio della sessione e alcune impostazioni di traccia e profilazione..htaccess Imposta il valore PHP in base al nome host

Non vogliamo impostarli nello script PHP perché a causa di un codice legacy orribile che richiederebbe molte modifiche e non vogliamo dover modificare l'htaccess ogni volta prima di eseguirlo su git (ma abbiamo bisogno che il .htaccess sia nel controllo del codice sorgente).

Esiste un modo per fare qualcosa di simile nel .htaccess:

if (hostname == "dev.example.com") { 
    php_value session.save_path /tmp 
    [...] 
} 

risposta

6

È possibile definire regole in config virtualhost di Apache (un gradino sopra .htaccess, dovrete chiedere a un amministratore di modificare questo):

<VirtualHost *:80>                
    ServerName piskvor.example.com 
    ServerAlias *.host2.example.com 
    php_value session.save_path /home/piskvor/tmp 
</VirtualHost> 
<VirtualHost *:80>                
    ServerName someotherhost.example.org 
    php_value session.save_path /tmp 
</VirtualHost> 

Questo vi dà la possibilità di configurare ogni host in modo diverso (per nome host o un carattere jolly hostname). Le configurazioni Apache più recenti supportano questo.

0

In un lavoro precedente abbiamo usato usato il seguente:

<IfDefine SERVER1> 
    php_value session.save_path /tmp1 
</IfDefine> 

<IfDefine SERVER2> 
    php_value session.save_path /tmp2 
</IfDefine> 

Farebbe quindi starup apache con il interruttore supplementare:

-D SERVER1 SERVER2

EDIT:

EDIT

Forse qualcosa di simile al seguente potrebbe essere una via di mezzo?

if (!file_exists('.htaccess')) { 

    copy('.htaccess.default', '.htaccess'); 

    $handle = fopen('.htaccess', 'a'); 

    switch ($_SERVER['HTTP_HOST']) { 

    case 'dev.site': 
     fwrite($handle, 'php_value .....' . "\n"); 
     fwrite($handle, 'php_value .....' . "\n"); 
    break; 

    case 'live.site': 
     fwrite($handle, 'php_value .....' . "\n"); 
     fwrite($handle, 'php_value .....' . "\n"); 
    break; 

    } 

    fclose($handle); 

} 
+0

Questo è un passo nella giusta direzione, ma gli amministratori lo bloccheranno sicuramente. Cercherò di negoziare con loro, ma spero ancora in qualcosa di limitato alla .htaccess – dbemerlin

+0

Questo non pone in realtà alcun rischio per la sicurezza, tuttavia, sono abbastanza sicuro che sia così versatile come .htaccess. Che ne dici di uno script PHP che scrive in .htaccess in modo silenzioso? –

Problemi correlati