Apache Quantum Uncertainty Principle … Si la directive est vraie et fausse

La valeur de la variable d'environnement est définie dans bash:

# export PRODUCTION=true # echo $PRODUCTION # true 

Voici l'extrait pertinent de mon file hôte virtuel:

 <If "-T osenv('PRODUCTION')"> Define dogs dogs </If> <Else> Define cats cats </Else> 

apache2ctl -S produit:

 Define: dogs=dogs Define: cats=cats 

Ainsi, nous avons un conditionnement quantique à la fois vrai et faux . Que se passe-t-il ici et comment puis-je m'entendre normalement?

Je ne trouve rien dans ces references qui indique que je fais quelque chose qui ne va pas.

  • apache if-else
  • opérateurs d'apache urnaires

Lorsque vous exécutez apachectl -S il suffit d'parsingr le code pour s'assurer qu'il est syntaxiquement correct, il n'exécute pas réellement le code. La sortie indique simplement ce qui peut arriver et non le résultat de l'évaluation du bloc if / else.

Vous pouvez vérifier cela en ayant une directive Apache active dans vos blocs if and else. Par exemple:

 <If "-T osenv('PRODUCTION')"> Define dogs dogs Header set MyHeader1 "PRODUCTION defined %D %t" </If> <Else> Define cats cats Header set MyHeader2 "PRODUCTION undefined %D %t" </Else> 

Et vous démarrez Apache avec ou sans PRODCUTION défini, vous verrez l'en-tête différent dans les réponses de votre server. Le %D et %t sont là pour append quelque chose qui change avec chaque request afin que vous ne pensiez pas que vous obtenez quelque chose en cache en quelque sorte.

S'il vous plaît noter que, pour cela, vous devez effectuer un arrêt complet et commencer entre définir / désactiver la variable d'environnement PRODUCTION, le redémarrage ne fonctionnera pas.