Variable définie dans php.ini - PHP - Programmation
Marsh Posté le 12-02-2009 à 16:23:40
souvent j'ai un seul fichier de conf, dans lequel je fais un truc du style :
switch ($_SERVER[' SERVER_NAME ']) {
case 'monsite.com':
$CONF = ...
break;
default:
$CONF = ...
}
ce qui m'evite en cas d'ecrasement du fichier de conf par inadvertance de ne pas mettre KO le site.
Bon apres, c'est pas forcement la solution elegante que tu cherchais.
Tu peux peut-etre modifier ca pour que le switch inclu un fichier different en fonction de l'environnement, afin que les developpeurs n'aient pas les acces à la prod...
Marsh Posté le 12-02-2009 à 16:33:51
les développeurs, c'est nous, c'est pas tant l'accès à la prod qui nous dérange, mais le fait de devoir potentiellement faire des manip' sur des fichiers lors du déploiement.
Le coup du serveur name, on y a pensé, mais crée des problèmes avec localhost.
Quand on développe, on accède à notre machine en local, donc server_name=localhost. Mais quand on fait des démos aux clients, il arrive qu'ils accèdent à nos machines et là, server_name=@IP. problème aussi si le serveur de prod/dev/recette change, etc...
merci en tout cas
Marsh Posté le 12-02-2009 à 16:38:55
J'ai eu le meme soucis, je l'avais resolu en mettant plusieurs case pour la meme conf
en gros : tout ce qui pouvait etre du dev dans les case et le defaut pour la conf du serveur :
switch ($_SERVER[' SERVER_NAME ']) {
case 'localhost':
case 'ip.local1':
case 'ip.local2':
$CONF = ...
break;
default:
$CONF = ...
}
j'avais inversé dans mon exemple pour que ce soit plus parlant
mais je suis d'accord avec toi que c'est pas la solution ultime.
si il y a mieux, je suis interessé par la solution
Marsh Posté le 12-02-2009 à 21:49:48
Il reste parfois des variables vide selon la conf de ton server local / distant ..
ça peut être une piste, il m'est arrivé de le faire
Marsh Posté le 13-02-2009 à 08:31:22
donc tu me confirmes qu'il n'y a pas moyen d'ajouter de nouvelle variable ?
et galère...
avec un serveur J2EE, il y a moyen de faire ça, c'est dommage qu'on ne puisse pas avec PHP, ou même apache, chui pas sectaire...
Marsh Posté le 13-02-2009 à 15:17:41
bon j'ai setté l'option auto_prepend_file dans php.ini. Dans le fichier que je prepend, il y a define ('ENV', 'dev')....
je trouve ça crade, mais ça fait ce que je veux avec des features classiques non détournées...
Marsh Posté le 13-02-2009 à 15:28:20
Ce qu'on faisait à l'époque c'est qu'on avait un fichier de config dans un folder qu'on ne commitait pas. Il avait même une extension relou qui était bloquée dans le rsync si jamais ca passait jusqu'en dev.
Ce truc était inclu après le framework donc tout était dispo dans ce fichier, on faisait ce qu'on voulait. Donc bien pratique pour le debug à la fourche.
Marsh Posté le 12-02-2009 à 15:59:30
Google et la recherche ne m'ont pas aisé.
voilà donc mon problème.
Pour un projet quelconque, on utilise Zend et Zend_Conf_Xml pour loader la conf du site.
Évidemment, la conf est différente entre les serveurs de dev, de recette et de prod. Zend_Conf nous permet de faire de façon pas trop dégueux à priori.
Donc le problème : comment savoir quelle conf loader suivant le serveur sur lequel on est ? tout ça sans modifier le code déployé.
On a pensé mettre une variable dans php.ini, genre
mais un ini_get('env') ne donne pas trop la réponse attendue.
Si on pouvais faire marcher cette solution, ça nous semblerai plus propre dans le sens où il n'y a pas besoin de modifier de code en dur pour savoir quoi charger, ni même un fichier texte/ini/xml. Le serveur nous dit qui il est. Et la modification de php.ini est faite une fois pour toute.
qu'est-ce qu'on a raté ??
merci de votre aide !
---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris