Muszę ustawić zmienną na wartość domyślną, jeśli nie jest jeszcze ustawiona. Następująca konfiguracja wykonuje zadanie:
if ($foo ~ "^$") {
set $foo default-value;
}
Ale generuje ostrzeżenia w czasie wykonywania:
za pomocą niezainicjowanej zmiennej „foo”
Czy istnieje sposób sprawdzenia, czy zmienna jest ustawiona bez generowania ostrzeżenia i bez globalnego wyłączania ostrzeżenia za pomocą:
uninitialized_variable_warn off;
uninitialized_variable_warnnie trzeba go ustawiać globalnie, możesz po prostu ustawić to w miejscu, w którym potrzebujesz użyć potencjalnie niezainicjowanych zmiennych. Używam tego do przekazywania szczegółów SSL do PHP, który będzie pusty, jeśli strona będzie dostępna bez SSL.
nginx: [emerg] "uninitialized_variable_warn" directive is duplicate in
uninitialized_variable_warnjako części php.confimportowanej tylko przez lokalizacje, które obsługują PHP, więc zdecydowanie używam go tylko w tych zakresach, pozostawiając ostrzeżenie wszędzie indziej. Nie uninitialized_variable_warnustawiłem jednak żadnego innego zakresu (pozwalając domyślnie na true).
set_if_emptyna github.com/openresty/set-misc-nginx-module