J'ai besoin de définir une variable sur une valeur par défaut si elle n'est pas déjà définie. La configuration suivante fait le travail:
if ($foo ~ "^$") {
set $foo default-value;
}
Mais il génère des avertissements d'exécution:
en utilisant la variable "foo" non initialisée
Existe-t-il un moyen de tester si une variable est définie sans générer l'avertissement et sans désactiver l'avertissement globalement avec:
uninitialized_variable_warn off;
uninitialized_variable_warn
cela ne doive pas être défini globalement, vous pouvez simplement le définir là où vous devez utiliser des variables potentiellement non initialisées. J'utilise ceci pour transmettre des détails SSL à PHP, qui sera vide si la page est accessible sans SSL.
nginx: [emerg] "uninitialized_variable_warn" directive is duplicate in
uninitialized_variable_warn
dans le cadre d'un php.conf
importé uniquement par des emplacements qui prennent en charge PHP, donc je ne l'utilise certainement que dans ces étendues, tout en laissant l'avertissement partout ailleurs. Je n'ai cependant uninitialized_variable_warn
défini aucune autre portée (en le laissant par défaut true
).
set_if_empty
sur github.com/openresty/set-misc-nginx-module