2013-02-06 3 views
6

시작하기 전에 스택 오버플로를 찾아보고 다른 유사한 질문 (PHP_AUTH_USER not set?HTTP Auth via PHP - PHP_AUTH_USER not set?)을 발견했음을 지적하고 싶습니다. 그리고 이것들은 인증 $ _SERVER 변수가 "서버 API ''가 ''CGI/FCGI ''로 설정되었지만 ''phpinfo() ''출력을 확인하고 ''서버 API ''가 ''Apache 2.0 Handler ''로 설정되었습니다. 나는 간단한 스크립트를 그래서

확인을 다음과 같이

wget -v --http-user=johnsmith --http-password=mypassword http://www.example.com/myscript.php 

...하지만 출력한다 :

<?php 
    echo "Username: " . $_SERVER["PHP_AUTH_USER"] . ", Password: " . $_SERVER["PHP_AUTH_PW"]; 
?> 

을 ... 나는 다음을 통해 원격으로 호출하고있는

Username: , Password: 

나는 PHP cURL을 사용하여 스크립트를 호출하고 인증 매개 변수를 적절하게 설정해 보았습니다.

curl_setopt($ch, CURLOPT_USERPWD, "johnsmith:mypassword"); 

...하지만 위와 같은 결과가 나옵니다.

내가 뭘 잘못하고 있는지 아는 사람이 있습니까? 아마도 내가 활성화/구성해야 할 다른 것이 있습니까?

드디어 다음 페이지 문제 요약

irc.freenode.net의 ## PHP에서 Naktibalda의 도움의에 대한 답변 덕분에 발견했습니다

+0

올바른 응답 코드를 보내십니까? –

+0

감사합니다 Iganacio, 당신이 무슨 뜻인지 자세히 설명해 주시겠습니까? –

답변

5

: http://php.net/manual/en/features.http-auth.php

은 관련 비트를 인용하기를 : PHP 4.3.0

, 기존의 외부 메커니즘을 통해 인증 된 페이지에 대한 암호를 보여 스크립트를 작성하지 못하도록하기 위해, PHP_AUTH 변수는 외부 인증이 활성화 된 경우 설정되지 않습니다 th를 위해 특정 페이지 및 안전 모드에서 사용할 수 있습니다. REMOTE_USER를 사용하여 외부 인증 사용자를 식별 할 수 있습니다. 그래서 $ _SERVER [ 'REMOTE_USER']를 사용할 수 있습니다.

...

PHP 외부 인증이 유효한 것인지 결정하는 AuthType이 지시어의 존재를 이용한다. PHP-CGI를 들어

10

:

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] 
</IfModule> 

및 스크립트의 시작 부분이 추가 :

의 .htaccess이 추가

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); 
-4

이 다음과 같이해야한다

echo "Username: " . $_SERVER[PHP_AUTH_USER] . ", Password: " . $_SERVER[PHP_AUTH_PW]; 
+4

틀렸어. http://www.php.net/manual/en/reserved.variables.server.php 색인을 위해 문자열을 사용해야하므로 '$ _SERVER ['PHP_AUTH_USER ']'등이되어야합니다. –

관련 문제