php-fpm e variável de ambiente dinâmico Nginx

3

Configration do FPM estatísticas que você pode recuperar variáveis do seu ambiente atual. No entanto, no Ubuntu usando Nginx e PHP-FPM, eu não consigo encontrar uma maneira de recuperar o valor da variável do ambiente sem codificá-lo no php-fpm.conf ou nginx fcgi params .

Existe uma maneira de obter a variável de ambiente de / etc / environment ou /etc/bash.bashrc?

Por exemplo:

clear_env = no
ENV[SECRET_TOKEN] = $SECRET_TOKEN

Eu acho que o principal problema é não ser capaz de modificar o env vars para www-data. Como >sudo -H -u www-data bash -c "env" não inclui SECRET_TOKEN .

    
por Waleed Gadelkareem 07.07.2015 / 20:01

1 resposta

0

Parece que a única maneira é adicione o env vars manualmente .

Eu modifiquei o código um pouco

#!/usr/bin/php
<?php
$confFile = '/etc/nginx/fastcgi_params';

// Update the fpm configuration to make the environment variables available
// NOTE: ONLY in the CLI will $_SERVER have environment variables in it.
$content = file_get_contents($confFile);
$line = false;
foreach ($_SERVER as $name => $val) {
    if (strstr($name, 'SYMFONY') !== false) {
        $line = "fastcgi_param {$name} {$val};\n";
        # Either Add or Reset the variable
        if (strstr($content, $name) !== false) {
            $content = preg_replace('/fastcgi_param[\s\t]+'.$name.'\][\s\t]+.*?\n/', $line, $content);
            echo "MODIFIED {$name}\n";
        } else {
            $content .= "\n{$line}";
            echo "ADDED    {$name}\n";
        }
    }
}
if ($line) {
    file_put_contents($confFile, $content);
}
    
por 07.07.2015 / 23:03