Bối cảnh
Tôi có Apache/2.2.15 (Win32) với PHP/5.3.2 được thiết lập, xử lý xác thực.Không thể truy xuất các biến môi trường Apache trong PHP
<Directory /usr/www/myhost/private>
# core authentication and mod_auth_basic configuration
# for mod_authn_dbd
AuthType Basic
AuthName "My Server"
AuthBasicProvider dbd
# core authorization configuration
Require valid-user
# mod_authn_dbd SQL query to authenticate a user
AuthDBDUserPWQuery "SELECT Password,UserName,Realm,Access FROM authn WHERE user = %s"
</Directory>
Xác thực hoạt động tốt! Không vấn đề gì.
Nhưng liên quan đến documentation, mọi trường bổ sung được trả lại từ AuthDBDUserPWQuery sẽ được đưa vào biến số AUTHENTICATION_fieldname trong Môi trường.
Với phpinfo()
, tôi có thể thấy các biến này với giá trị chính xác trong "Môi trường Apache".
AUTHENTICATE_USERNAME
AUTHENTICATE_REALM
AUTHENTICATE_ACCESS
Vấn đề
tôi không thể tìm nạp các biến môi trường từ php của tôi.
1 <?php
2 $Access = apache_getenv('AUTHENTICATE_ACCESS',true);
3 var_dump($Access);
4 ?>
Dòng 3 in bool (sai) chỉ ra rằng biến không được tìm thấy!
Tuy nhiên, nếu tôi thay đổi sang một biến Môi trường Apache khác như 'HTTP_HOST' thì nó hoạt động.
..và có, tôi đã thử getenv()
cũng vậy, cùng một kết quả.
Cũng có một lưu ý rằng máy chủ Apache cần được biên dịch với APR 1.3.0 để hoạt động. Tôi đã sử dụng Apache msi build từ httpd.apache.org và nó dường như được biên dịch với APR ở trên phiên bản 2. Vì tôi có thể thấy chúng với phpinfo()
chúng phải được truy cập từ PHP.
* \ [♦ lưu ý: Xem [lịch sử sửa đổi] (http://stackoverflow.com/posts/4308886/revisions) cho ngữ cảnh của nhận xét này.] * Chúng tôi thường không nói về tiếng Anh của ai đó (của bạn là khá tốt) và nếu định dạng mã của bạn hút ai đó có lẽ sẽ chỉnh sửa nó để nó có thể đọc được. Ngoài ra SO không phải là nơi mọi người được nói với google/rtfm - googling/rtfming là những gì mọi người trả lời có thể làm khi họ sẽ nhận được + đại diện cho nó trong khi nói với bạn để làm như vậy rất có thể sẽ dẫn đến -rep. : p – ThiefMaster
Tôi không có bất kỳ câu trả lời nào cho câu hỏi của bạn, nhưng +1 để có câu hỏi có cấu trúc tốt nhất mà tôi từng thấy trên SO. –
Câu hỏi hoàn toàn hợp lệ, không cần phải phòng thủ. :) Câu trả lời RTFM thường được dành riêng cho nhiều câu hỏi * nhiều * tồi tệ hơn (không). – deceze