2010-05-31 44 views
8

Tôi muốn chuyển biến môi trường trong linux sang apache khi khởi động.Biến môi trường PHP và Apache

xuất khẩu myVar = 5 --Tôi định nghĩa biến môi trường của tôi trên dòng lệnh

PassEnv myVar --set apache để nhập khẩu các biến trong tập tin cấu hình apache

apachectl restart Khi HP xuống tôi khởi động lại apache Tôi không nhận được một thông báo lỗi. Tuy nhiên tôi đã nhận thấy rằng nếu tôi không tạo biến môi trường trong bước đầu tiên của mình, tôi sẽ nhận được một thông báo cảnh báo, vì vậy phải làm việc tại đây

echo $ _SERVER ['MYVAR'] - tôi cố gắng truy cập biến môi trường trong PHP nhưng nó không được định nghĩa

Tôi đã quan sát thấy rằng nếu tôi cố gắng PassEnv một biến môi trường đã thoát ra (một biến mà tôi không tự tạo ra) thì nó hoạt động tốt. Chỉ thị SetEnv cũng hoạt động tốt.

Tôi thực sự muốn chuyển biến môi trường sang apache khi đang di chuyển mà không cần viết nó vào một tệp. Giúp nhiều đánh giá cao.

Tôi đang sử dụng CentOS, PHP5 và Apache2.

Cảm ơn.

cập nhật nó dường như biến môi trường được thông qua nếu tôi gọi khởi động apache trực tiếp với httpd và không sử dụng apachectl đó là một kịch bản shell. Tôi đã có thể nghĩ rằng "xuất khẩu" đã có thể xuất khẩu biến vào kịch bản shell không? Tôi không phải là một guru Linux nên lý do tôi thiếu kiến ​​thức.

Trả lời

10

Nếu bạn muốn biến môi trường được chuyển tới apache, bạn nên đảm bảo rằng biến môi trường được xác định cho môi trường mà apache đang chạy. Để thực hiện điều đó, tùy chọn đơn giản nhất là thêm dòng export MYVAR=value vào envvars (nên được đặt trong/etc/apache2) hoặc tập lệnh khởi động apache (trong /etc/init.d) và thêm PassEnv MYVAR của bạn vào nơi mà nó muốn trong cấu hình apache của bạn.

Khởi động lại apache phải đảm bảo biến môi trường MYVAR được chuyển. AFAIK bạn sẽ không thể thay đổi giá trị của var này trong khi đang chạy apache dù ...

Một số thông tin liên quan cho CentOS: http://php.dzone.com/news/inserting-variable-headers-apa&default=false&zid=159&browser=16&mid=0&refresh=0

1

Để mở rộng câu trả lời của wimvds ở trên; bạn có thể thay đổi các biến môi trường trong khi Apache đang chạy với mô-đun SetEnvIf. Cụ thể, chỉ thị SetEnvIf của mô-đun đã nói.

ví dụ:

SetEnvIf Request_URI "^.*\/foobar.*$" FOOBAR="something" 

Ví dụ trên sẽ thiết lập $ môi trường FOOBAR biến thành "cái gì đó" nếu regex phù hợp với yêu cầu URI (trong trường hợp này, bất kỳ URI có chứa từ "foobar"). Bạn có thể định nghĩa điều này trong tệp cấu hình của máy chủ lưu trữ của bạn (thường là trong /etc/apache2/sites-available/mywebsite.conf hoặc một cái gì đó tương tự).

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