【问题标题】:Laravel 5.2 get Linux system environment variablesLaravel 5.2 获取Linux系统环境变量
【发布时间】:2016-07-03 12:34:03
【问题描述】:

是否有可能获取一些 Linux 系统环境变量并仍然使用 .env 变量?

我们想使用自动生成的数据库密码,该密码设置为 Linux 环境变量,但无法让 Laravel 找到 Linux 系统环境变量。

【问题讨论】:

  • 据我所知,你不能直接使用 Linux 环境变量,你必须运行 shell 命令,获取你的变量并将它分配给 Laravel 全局变量供内部使用
  • 这个问题仍然悬而未决的任何原因?

标签: php linux laravel laravel-5.2


【解决方案1】:

使用 PHP 的 getenv() 函数。

PHP: getenv - Manual

【讨论】:

    【解决方案2】:

    无法通过 PHP/Apache 访问 Linux 系统变量。您可以通过 SetEnv 在您网站的 Apache Vhost 中设置一个变量,然后在 Laravel 中获取它。

    你可以这样做

    • Apache:SetEnv DB_Pass dbpassword123 在您的 Vhost 中
    • Nginx:fastcgi_param DB_Pass dbpassword123

    Apache Vhost 示例:

    <VirtualHost example.com:80>
        ServerAdmin root@mpj.local.dev
        DocumentRoot /var/www/html
        ServerName mpj.local.dev
    
        SetEnv DB_Pass dbpassword123
    
        <Directory /var/www/html>
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog "/var/log/apache2/error_log"
        CustomLog "/var/log/apache2/access_log" common
    </VirtualHost>
    

    并在 Laravel 中使用

    获取变量 DB_Pass
    $dbPass = env('DB_Pass');
    

    【讨论】:

    【解决方案3】:

    【讨论】:

    • env函数仅限于Laravel项目环境变量,无法获取Linux系统环境变量。
    • 好吧,您需要导出变量以供任何用户访问。 /etc/profile.d 必须是一个好的起点。
    猜你喜欢
    • 1970-01-01
    • 2015-09-16
    • 2013-06-17
    • 2017-10-15
    • 2016-09-29
    • 2015-03-16
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    相关资源
    最近更新 更多