Đặt các biến môi trường để truy cập trong PHP khi sử dụng Apache


104

Tôi có một môi trường Linux và tôi có một Ứng dụng Web PHP chạy có điều kiện dựa trên các biến môi trường sử dụng getenvtrong PHP. Tôi cần biết các biến môi trường này cần được thiết lập như thế nào để ứng dụng hoạt động chính xác. Tôi không chắc về cách thiết lập điều này trên Apache.

Ngoài ra, tôi cần có thể định cấu hình các biến môi trường riêng biệt cho từng miền riêng biệt.

Xin lời khuyên về cách tôi có thể đạt được điều này.


Câu trả lời:


159

Một cái gì đó dọc theo dòng:

<VirtualHost hostname:80>
   ...
   SetEnv VARIABLE_NAME variable_value
   ...
</VirtualHost>

3
không có trong mảng $ _ENV của tôi, để biết giá trị đang truy xuất, hãy xem: stackoverflow.com/questions/2378871/…
i_a

Cảm ơn rât nhiều!
Omran Shagooj

4
@i_a bạn có thể truy cập vào các giá trị trong PHP vớigetenv('VARIABLE_NAME')
Beetlejuice

trong xampp trên windows, tệp sẽ là C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf
Dung

@i_a Trên máy của tôi, giá trị cũng có thể được tìm thấy trong $_SERVERbiến.
robsch

28

Bạn cũng có thể thực hiện việc này trong tệp .htaccess giả sử chúng được bật trên trang web.

SetEnv KOHANA_ENV production

Tất cả những gì bạn cần thêm vào .htaccess để thêm biến môi trường


Điều này có gì khác với việc sử dụng tệp .env chẳng hạn như cách laravel thực hiện điều này? Điều này có làm cho nó kém an toàn hơn không? Tôi hỏi điều này bởi vì tôi đang xây dựng cùng một cấu trúc phụ trợ với nhiều khung công tác (laravel, express, django, v.v.) và một số nhà phát triển của các ngôn ngữ khác nói rằng 'không thích hợp để sử dụng .env và "cấu hình máy chủ" nên sử dụng thay vào đó, hoặc làm việc đó thông qua dòng lệnh, Heroku phong cách
OzzyTheGiant

8

Không thể tin được, nhưng trên httpd 2.2 trên centos 6.4 điều này hoạt động.

Export env vars in /etc/sysconfig/httpd

export mydocroot=/var/www/html

Sau đó, chỉ cần làm điều này ...

<VirtualHost *:80>
  DocumentRoot ${mydocroot}
</VirtualHost>

Rồi cuối cùng ....

service httpd restart;

4

Nếu máy chủ của bạn là Ubuntu và phiên bản Apache là 2.4

Phiên bản máy chủ: Apache / 2.4.29 (Ubuntu)

Sau đó, bạn xuất các biến ở vị trí "/ etc / apache2 / envvars".

Giống như dòng dưới đây, bạn cần thêm một dòng bổ sung trong "/ etc / apache2 / envvars" export GOROOT = / usr / local / go

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.