Laravel 5.2 получает переменные системной среды Linux

Есть ли возможность получить некоторые переменные системной среды Linux и по-прежнему использовать переменные .env?

Мы хотим использовать автоматически сгенерированный пароль базы данных, который устанавливается как переменная среды Linux, но не может заставить Laravel находить переменные системной среды Linux.

Ответ 2

Системные переменные Linux не могут быть доступны через PHP/Apache. Вы можете установить переменную в Apache Vhost вашего сайта через SetEnv и захватить ее в Laravel.

Вы могли бы сделать

  • Apache: SetEnv DB_Pass dbpassword123 в вашем Vhost
  • Nginx: fastcgi_param DB_Pass dbpassword123

Пример Apache Vhost:

<VirtualHost example.com:80>
    ServerAdmin [email protected]
    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>

и выберите переменную DB_Pass в Laravel с помощью

$dbPass = env('DB_Pass');