2016-03-17 26 views
10

Có khả năng nhận một số biến môi trường hệ thống Linux và vẫn sử dụng biến .env không?Laravel 5.2 nhận biến môi trường hệ thống Linux

Chúng tôi muốn sử dụng mật khẩu cơ sở dữ liệu được tạo tự động được đặt làm biến môi trường Linux nhưng không thể nhận Laravel để tìm các biến môi trường hệ thống Linux.

+2

theo hiểu biết của tôi, bạn không thể sử dụng biến môi trường Linux trực tiếp, bạn phải chạy lệnh shell, lấy biến của bạn và gán nó vào Laravel biến toàn cầu để sử dụng nội – Qazi

+3

http://stackoverflow.com/ câu hỏi/13568191/how-to-get-system-môi trường-biến-thành-php-trong khi-chạy-cli-apache2hand có bạn nhìn vào nó? –

+0

Bất kỳ lý do nào câu hỏi này vẫn mở? – miken32

Trả lời

-1
+0

Chức năng env bị giới hạn trong các biến môi trường dự án Laravel, chúng tôi không thể nhận được các biến môi trường hệ thống Linux. – yclaes

+0

Vâng, bạn cần phải xuất biến cho bạn để mọi người dùng có thể truy cập. /etc/profile.d phải là một điểm khởi đầu tốt. –

0

Biến hệ thống Linux không thể truy cập thông qua PHP/Apache. Bạn có thể đặt một biến trong Apache Vhost của trang web của bạn thông qua SetEnv và lấy nó trong Laravel.

Bạn có thể làm

  • Apache: SetEnv DB_Pass dbpassword123 trong vhost của bạn
  • Nginx: fastcgi_param DB_Pass dbpassword123

Ví dụ 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> 

và tìm biến số DB_Pass trong Laravel với

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

Nửa đường ở đó. Rất có thể, các biến chỉ cần được chuyển vào máy chủ HTTP trước. Khi @NabinKunwar chia sẻ, hãy xem [Cách nhận các biến môi trường hệ thống thành PHP khi chạy CLI & Apache2Handler?] (Http://stackoverflow.com/a/23635043/5816643). – Qevo

Các vấn đề liên quan