Linux

php-fpm 和 Nginx 動態環境變數

  • July 15, 2015

您可以從目前環境中檢索變數的FPM 配置統計資訊。但是,在使用 Nginx 和 PHP-FPM 的 ubuntu 上,我無法找到一種方法來從環境中檢索變數值,而無需在 php-fpm.conf 或 nginx fcgi params 中對其進行硬編碼

有沒有辦法從 /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.

看起來唯一的方法是手動添加環境變數

我稍微修改了程式碼

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

引用自:https://serverfault.com/questions/704151