php-fpm 与 Nginx 动态环境变量

php-fpm 与 Nginx 动态环境变量

FPM 配置stats 中,你可以从当前环境中检索变量。但是,在使用 Nginx 和 PHP-FPM 的 ubuntu 上,我找不到从环境中检索变量值的方法无需在 php-fpm.conf 或 nginx fcgi 参数中进行硬编码

有没有办法从 /etc/environment 或 /etc/bash.bashrc 获取环境变量?

例如:

clear_env = no
ENV[SECRET_TOKEN] = $SECRET_TOKEN

我认为主要问题是无法修改 www-data 的环境变量。因为>sudo -H -u www-data bash -c "env"不包括SECRET_TOKEN

答案1

看起来唯一的办法就是手动添加环境变量

我稍微修改了一下代码

#!/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);
}

相关内容