Trước khi tôi bắt đầu, tôi muốn chỉ ra rằng tôi đã duyệt Stack Overflow và tìm thấy các câu hỏi tương tự khác - PHP_AUTH_USER không được đặt? và http auth thông qua php - php_auth_user không được đặt? - Và những điều này đã chỉ ra rằng các biến xác thực $ _Server sẽ không được đặt nếu '' API máy chủ '' được đặt thành '' CGI/FCGI '', nhưng tôi đã kiểm tra '' '' '' '' '' '' 'API máy chủ' 'được đặt thành' 'Apache 2.0 Handler' '.
Ok vì vậy tôi có một tập lệnh đơn giản như sau:
<?php echo "Username: " . $_SERVER["PHP_AUTH_USER"] . ", Password: " . $_SERVER["PHP_AUTH_PW"]; ?>... mà tôi đang gọi từ xa qua những điều sau:
wget -v --http-user=johnsmith --http-password=mypassword //www.example.com/myscript.php... nhưng chỉ xuất hiện:
Username: , Password:Tôi cũng đã thử gọi tập lệnh bằng cách sử dụng PHP Curl và đặt các tham số xác thực một cách thích hợp như sau:
curl_setopt($ch, CURLOPT_USERPWD, "johnsmith:mypassword");... Nhưng tôi nhận được đầu ra giống như trên.
Có biết tôi đang làm gì sai không? Có lẽ có một cái gì đó khác tôi cần để kích hoạt / cấu hình?
Đã hỏi ngày 6 tháng 2 năm 2013 lúc 7:57Feb 6, 2013 at 7:57
Kosta Kontoskosta KontosKosta Kontos
3.9627 Huy hiệu vàng24 Huy hiệu bạc28 Huy hiệu đồng7 gold badges24 silver badges28 bronze badges
2
Đối với PHP-CGI:
trong .htaccess Thêm điều này:
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{Authorization},L] </IfModule>Và khi bắt đầu tập lệnh của bạn, hãy thêm điều này:
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));Đã trả lời ngày 21 tháng 3 năm 2014 lúc 8:52Mar 21, 2014 at 8:52
Cuối cùng tôi đã phát hiện ra câu trả lời nhờ sự giúp đỡ của Naktibalda trong ## PHP trên irc.freenode.net
Trang sau tóm tắt vấn đề: //php.net/manual/en/features.http-auth.php
Để trích dẫn các bit có liên quan:
Kể từ Php 4.3.0, để ngăn ai đó viết tập lệnh tiết lộ mật khẩu cho một trang được xác thực thông qua cơ chế bên ngoài truyền thống, các biến PHP_AUTH sẽ không được đặt nếu xác thực bên ngoài được bật cho trang cụ thể đó và an toàn Chế độ được bật. Bất kể, remote_user có thể được sử dụng để xác định người dùng được xác nhận bên ngoài. Vì vậy, bạn có thể sử dụng $ _Server ['remote_user'].
...
PHP sử dụng sự hiện diện của một chỉ thị AuthType để xác định xem xác thực bên ngoài có hiệu lực hay không.
Đã trả lời ngày 11 tháng 2 năm 2013 lúc 10:06Feb 11, 2013 at 10:06
Kosta Kontoskosta KontosKosta Kontos
3.9627 Huy hiệu vàng24 Huy hiệu bạc28 Huy hiệu đồng7 gold badges24 silver badges28 bronze badges
Đối với PHP-CGI:
CGIPassAuth Ontrong .htaccess Thêm điều này:
SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0Và khi bắt đầu tập lệnh của bạn, hãy thêm điều này:
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['REDIRECT_HTTP_AUTHORIZATION'], 6)));Đã trả lời ngày 21 tháng 3 năm 2014 lúc 8:52
Cuối cùng tôi đã phát hiện ra câu trả lời nhờ sự giúp đỡ của Naktibalda trong ## PHP trên irc.freenode.netNov 7, 2018 at 19:50
Trang sau tóm tắt vấn đề: //php.net/manual/en/features.http-auth.phpMatt
Để trích dẫn các bit có liên quan:8 bronze badges
Kể từ Php 4.3.0, để ngăn ai đó viết tập lệnh tiết lộ mật khẩu cho một trang được xác thực thông qua cơ chế bên ngoài truyền thống, các biến PHP_AUTH sẽ không được đặt nếu xác thực bên ngoài được bật cho trang cụ thể đó và an toàn Chế độ được bật. Bất kể, remote_user có thể được sử dụng để xác định người dùng được xác nhận bên ngoài. Vì vậy, bạn có thể sử dụng $ _Server ['remote_user'].
...
PHP sử dụng sự hiện diện của một chỉ thị AuthType để xác định xem xác thực bên ngoài có hiệu lực hay không.
Đã trả lời ngày 11 tháng 2 năm 2013 lúc 10:06
RewriteRule ^my_script/my_action$ /redirect_url/?auth=%{Authorization} [R=301,QSA,L]Đã thử các đề xuất trước đó, không hoạt động, cũng được phát hiện
wget -v --http-user=johnsmith --http-password=mypassword //www.example.com/myscript.php 0là phiên bản cập nhật hơn của bổ sung HTAccess được đề xuất, nhưng điều đó vẫn không hoạt động với tôi, thay vào đó tôi đã sử dụng
(phải nằm trong tệp htaccess gốc của bạn) sau đó trong tệp PHP
Nếu bất cứ ai vẫn gặp khó khăn, tôi khuyên họ nên kiểm tra vars máy chủ, vì dữ liệu có thể nằm trong một var khác, bạn đang tìm kiếm thứ gì đó bắt đầu với cơ bảnAug 4 at 8:10
Đã trả lời ngày 7 tháng 11 năm 2018 lúc 19:50Swissdude
Mattmatt3 gold badges34 silver badges67 bronze badges
3
Phù hiệu bằng đồng 1158
wget -v --http-user=johnsmith --http-password=mypassword //www.example.com/myscript.php 1
Tôi biết điều này là cũ, nhưng trong trường hợp ai đó vấp ngã điều này và không thể có bất kỳ giải pháp nào để làm việc
Tôi đã phải chuyển thông tin tiêu đề cho một tập lệnh được chuyển hướng. Không có điều nào ở trên đã làm việc.9 gold badges49 silver badges68 bronze badges
Vì vậy, tôi đã làm như sau:Mar 26, 2014 at 10:49
1