13

始める前に、私はスタック オーバーフローをブラウジングし、他の同様の質問を見つけたことを指摘したいと思います - PHP_AUTH_USER が設定されていませんか? およびPHP 経由の HTTP 認証 - PHP_AUTH_USER が設定されていませんか? -そして、これらは、「サーバーAPI」が「CGI / FCGI」に設定されている場合、認証$_SERVER変数が設定されないことを指摘していますが、「phpinfo()」出力と「 「サーバー API」は「Apache 2.0 ハンドラー」に設定されています。

わかりましたので、次のような簡単なスクリプトがあります。

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

...次の方法でリモートで呼び出しています:

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

...しかし、出力のみ:

Username: , Password:

また、PHP cURL を使用してスクリプトを呼び出し、次のように認証パラメーターを適切に設定しようとしました。

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

...しかし、上記と同じ出力が得られます。

私が間違っていることは何か分かりますか?おそらく、有効化/構成する必要があるものが他にありますか?

4

4 に答える 4

15

PHP-CGI の場合:

.htaccess にこれを追加します。

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

スクリプトの先頭にこれを追加します。

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
于 2014-03-21T08:52:22.407 に答える
3

以前の提案を試しましたが、うまくいきませんでした。

CGIPassAuth On 

提案された htaccess 追加の最新バージョンですが、それでもうまくいきませんでした。代わりに使用しました

SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0

(ルートの htaccess ファイルにある必要があります) 次に、php ファイルに

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

それでも問題が解決しない場合は、サーバー変数を確認することをお勧めします。データが別の変数にある可能性があるため、基本的なものを探している

于 2018-11-07T19:50:08.583 に答える