2016-03-17 10 views
10

Esiste la possibilità di ottenere alcune variabili di ambiente del sistema Linux e utilizzare ancora le variabili .env?Laravel 5.2 ottiene le variabili di ambiente del sistema Linux

Vogliamo utilizzare una password di database generata automaticamente impostata come variabile di ambiente Linux ma che non riesce a trovare Laravel per trovare le variabili di ambiente del sistema Linux.

+2

come per la mia conoscenza, non è possibile utilizzare variabile d'ambiente Linux direttamente, è necessario eseguire comandi di shell, afferrare la variabile e assegnarlo a laravel variabile globale per uso interno – Qazi

+3

http://stackoverflow.com/ domande/13568191/how-to-get-system-ambiente-variabili-in-php-while-running-cli-apache2hand hai guardato? –

+0

Qualche ragione per cui questa domanda è ancora aperta? – miken32

risposta

-1

È necessario utilizzare la funzione 'env'.

https://laravel.com/docs/5.2/configuration#environment-configuration

+0

La funzione env è limitata alle variabili di ambiente del progetto Laravel, non siamo in grado di ottenere le variabili di ambiente del sistema Linux. – yclaes

+0

Bene, è necessario esportare la variabile per essere accessibile da qualsiasi utente. /etc/profile.d deve essere un buon punto di partenza. –

0

variabili di sistema Linux non può essere l'accesso tramite PHP/Apache. È possibile impostare una variabile in Apache Vhost del proprio sito tramite SetEnv e recuperarla in Laravel.

Si potrebbe fare

  • Apache: SetEnv DB_Pass dbpassword123 nel vostro Vhost
  • Nginx: fastcgi_param DB_Pass dbpassword123

Esempio 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> 

e recuperare la variabile DB_Pass in laravel con

$dbPass = env('DB_Pass'); 
+1

A metà strada. È molto probabile, le variabili devono essere prima passate nel server HTTP. Come condiviso da @NabinKunwar, vedere [Come ottenere le variabili di ambiente del sistema in PHP mentre si esegue CLI e Apache2Handler?] (Http://stackoverflow.com/a/23635043/5816643). – Qevo