Preciso definir uma variável para um valor padrão, se ainda não estiver definida. A seguinte configuração faz o trabalho:
if ($foo ~ "^$") {
set $foo default-value;
}
Mas gera avisos de tempo de execução:
usando variável "foo" não inicializada
Existe uma maneira de testar se uma variável é definida sem gerar o aviso e sem desativar o aviso globalmente com:
uninitialized_variable_warn off;
uninitialized_variable_warn
que não precisa ser definido globalmente, você pode defini-lo onde precisa usar variáveis potencialmente não inicializadas. Estou usando isso para passar detalhes de SSL para PHP, que estarão vazios se a página for acessada sem SSL.
nginx: [emerg] "uninitialized_variable_warn" directive is duplicate in
uninitialized_variable_warn
como parte de um php.conf
que é importado apenas por locais que suportam PHP, então definitivamente estou usando-o apenas nesses escopos, deixando o aviso em qualquer outro lugar. Eu ainda não uninitialized_variable_warn
defini nenhum outro escopo (deixando como padrão true
).
set_if_empty
em github.com/openresty/set-misc-nginx-module