2010-07-12 6 views
5

pour notre projet, nous devons définir plusieurs valeurs PHP en fonction de l'environnement (développement/production), notamment le chemin de sauvegarde de la session et certains paramètres de traçage et de profilage. Nous ne voulons pas les mettre dans le script PHP parce qu'en raison d'un code hérité horrible qui nécessiterait beaucoup de changements et nous ne voulons pas devoir changer le .htaccess chaque fois avant de le commettre à git (mais nous avons besoin que le .htaccess soit dans le contrôle de source)..htaccess Définir la valeur PHP en fonction du nom d'hôte

Est-il possible de faire quelque chose comme ça dans le .htaccess:

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

Répondre

6

Vous pouvez définir des règles dans la configuration VirtualHost d'Apache (un cran au dessus .htaccess, vous devrez demander à un administrateur de la modifier):

<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> 

Cela vous donne la possibilité de configurer chaque hôte différemment (par nom d'hôte ou un caractère générique hostname). La plupart des nouvelles configurations d'Apache supportent ceci.

0

un emploi précédent, nous avons utilisé utilisé les éléments suivants:

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

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

vous deviendriez alors starup apache avec le interrupteur supplémentaire:

-D SERVEUR1 SERVEUR2

EDIT:

EDIT

Peut-être quelque chose comme ce qui suit pourrait être un milieu au sol?

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

Ceci est un pas dans la bonne direction, mais les administrateurs bloqueraient définitivement cela. Je vais essayer de négocier avec eux mais j'espère toujours quelque chose de limité à la. Htaccess – dbemerlin

+0

Cela ne pose pas vraiment de risques de sécurité, cependant, je suis sûr que c'est aussi polyvalent que. Htaccess va obtenir. Que diriez-vous d'un script PHP qui écrit en .htaccess en silence? –

Questions connexes