Linux
php-fpm 和 Nginx 動態環境變數
您可以從目前環境中檢索變數的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); }