【问题标题】:How to read system environment variable in php-fpm?如何在 php-fpm 中读取系统环境变量?
【发布时间】:2019-08-10 03:06:46
【问题描述】:

Nginx + php-fpm + yii

我有带有数据库连接字符串的系统环境变量

$ cat '~/.bashrc'
export DB_CONNECTION="connection_string"

在 php-fpm 配置中设置

$ cat /etc/php/7.2/fpm/pool.d/www.conf
env[DB_CONNECTION] = $DB_CONNECTION

尝试在我的 PHP 代码中使用

<?php
var_dump(getenv('DB_CONNECTION'));

得到

string(0) ""

如果我在 php-fpm 配置中对其进行硬编码

$ cat /etc/php/7.2/fpm/pool.d/www.conf
env[DB_CONNECTION] = "connection_string"

有效:

<?php
var_dump(getenv('DB_CONNECTION'));
string(17) "connection_string"

如何让php-fpm读取实际的系统环境变量?

【问题讨论】:

  • 你试过env[DB_CONNECTION] = ${DB_CONNECTION}吗?我不知道它是否可行,但这是php.ini 的语法。我不确定 fpm 池配置是否被解析为 root,但如果您的 bashrc 位于其他用户的主目录中,这也可能是一个问题。

标签: php nginx environment-variables


【解决方案1】:

为什么不使用 PHP 包来处理环境变量? Laravel 使用https://github.com/vlucas/phpdotenv

我建议你使用它,因为你使用的是 Yii,这意味着你已经安装了 composer。

composer require vlucas/phpdotenv

【讨论】:

    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多