- ベストアンサー
Basic認証でのログインができない問題
- Basic認証を行いたいが、設定したIDとパスワードでログインできない。
- .htaccessファイルと.htpasswordファイルに設定が記載されており、設置ディレクトリも正しい。
- どこが間違っているのか原因を特定する必要がある。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
パスワードファイルは、 ユーザ名:暗号化したパスワード という形式をしていますが、この暗号化の方法が何種類かあります。サーバーのapacheが使っているのと同じ方法で暗号化する必要があります。htpasswdコマンドのオプションを調べて、いろいろ指定してみてください。 linux版の場合は、#2の補足にある >-m Force MD5 encryption of the password. >-d Force CRYPT encryption of the password (default). >-p Do not encrypt the password (plaintext). このあたりがそのオプションですがWindows版でも同じとは限りません。 あと、これはテキストファイルなので改行コードが変換されるようにテキストモードでアップロードしてくださいね。 なんか最初からレンタルサーバー業者のサポートに聞くのが早かったかもしれませんね。有料の業者ならちゃんとやり方を教えてくれるだろうし、無料の場合は、ユーザーのBBSなんかが充実してたりすると思うのでそこで聞くのが良かったでしょう。もし上記で解決しなかったらそうしてみてください。
その他の回答 (5)
- notnot
- ベストアンサー率47% (4900/10359)
Internal Server Error はわからないです。 >htpasswd: cannot open file home/*******/phpMyAdmin/.htpassword for write access >fopen: No such file or directory エラーメッセージを見直すと、homeの前にスラッシュが無いですが、実際のコマンドラインにはあるんでしょうか? 他の方法としては、手元でCDブートのKNOPPIX等ででも、htpasswd を実行して、結果のファイルをアップロードするか。あるいはWindows用のapacheもあるのでインストールすれば htpasswd.exe もきっとあるはずですね。
お礼
ご返答ありがとうございました。 XPにApacheをインストールして、 C:\***\Apache Group\Apache2\bin>htpasswd.exe -bc "C:\***\.htpassword test test を実行しましたところ、 Autmatically using MD5 format. Assing password for user test と返ってきて、.htpassword ファイルが出来てました。 喜びに満ちてこのファイルをサーバーにアップロードしましたが、認証されませんでした。 作り方は合ってますでしょうか。 お手数お掛け致しますが、何卒よろしくお願い致します。
- notnot
- ベストアンサー率47% (4900/10359)
アクセス権についてはご承知かと思っていました。 エラーメッセージからすると、.htpassword の書き込みアクセス権が無いようです。.htpassword のファイルが作られていればそのアクセス権を rw-rw-rw- (666) もしくは rw----rw- (606) に変更してください。変更できなければ一旦ファイルを削除して、大きさゼロのファイルを .htpassword としてアップロードしてから上記のアクセス権にしてください。 もし .htpassword が作られていなければ、phpMyaAdmin のアクセス権を rwxrwxrwx (777) または rwx---rwx (707)に。
お礼
何度もありがとうございます。 前回の質問をする前に、アクセス権も色々変えてみたものの、変えてしまうとInternal Server Errorになってしまっていた状況でした。 再度改めて試したのは、 ■htpassword のファイルを606へ。 →前回のエラーのまま。 ■一旦ファイルを削除して、大きさゼロのファイルを .htpassword としてアップロード。606へ。 →前回のエラーのまま。 ■htpassword のファイルを606へ。 phpMyaAdminディレクトリを707へ。 →Internal Server Error ちなみに、FFFTPを使ってまして、htpasswordの属性を777にしようと思っても、707にしかならない状況です。 何かお分かりになれば教えて頂きたいと思います。 よろしくお願い致します。
- notnot
- ベストアンサー率47% (4900/10359)
すいませーーーーーーーーん。オプション指定がもれてました。 htpasswd -bc /フルパス/phpMyAdmin/.htpassword test test でした。htpasswd は動いているのでこれで多分できると思います。もしこれでログインできなければ、 htpasswd -mbc /フルパス/phpMyAdmin/.htpassword test test で再度やってみてください。 さらに訂正ですが、上記のオプションを使うことでファイルを上書きしますので、phpMyAdmin/.htpassword はいちいち消さなくてかまいません。
お礼
何度もありがとうございます。 オプションを指定してやってみました。 しかし、以下のエラーが表示されました。 一応、サーバにファイル(前述の3つ)をおいて実行したり ファイルを削除して実行しましたが、同じでした。 htpasswd: cannot open file home/*******/phpMyAdmin/.htpassword for write access fopen: No such file or directory いかがなものでしょうか。 よろしくお願い致します。
- notnot
- ベストアンサー率47% (4900/10359)
>これはどうやって実行すればよろしいのでしょうか。 自前サーバーもしくは、レンタルでもtelnetログイン出来るなら、ログインしてコマンドを打てばいいです。 ログインできず、ftpのみのアクセスの場合は、 #!/bin/sh exec 2>&1 echo "Content-Type: text/plain" echo "" htpasswd /フルパス/phpMyAdmin/.htpassword test test というファイルを例えばsetpass.cgi等とCGIとして認識される拡張子の名前でアップロードし、実行可能属性をつけます。そしてそれをttp://hostname/xxxx/setpass.cgi というふうにCGIとして実行すればいいです。 もし、htpasswd が command not found と表示されたら、レンタルサーバー業者に、htpasswd のフルパスを問い合わせてファイルにフルパスを書いてください。 実行前に phpMyAdmin/.htpassword を消す(または空にする)のを忘れないように。また、作業後は setpass.cgiはサーバーからは消しておきましょう。
お礼
ご回答ありがとうございました。 実行しましたところ、以下の表示が出ました。 また、サーバに.htpasswordは、作られておりませんでした。 これはエラーなのでしょうか。 若しくは次はどういった手順になるのでしょうか。 何度もお手数お掛けして恐縮です。 よろしくお願い致します。 --- Usage: htpasswd [-cmdps] passwordfile username htpasswd -b[cmdps] passwordfile username password htpasswd -n[mdps] username htpasswd -nb[mdps] username password -c Create a new file. -n Don't update file; display results on stdout. -m Force MD5 encryption of the password. -d Force CRYPT encryption of the password (default). -p Do not encrypt the password (plaintext). -s Force SHA encryption of the password. -b Use the password from the command line rather than prompting for it. On Windows, TPF and NetWare systems the '-m' flag is used by default. On all other systems, the '-p' flag will probably not work. ---
- notnot
- ベストアンサー率47% (4900/10359)
パスワードファイル .htpassword ファイルは、手で書くんじゃなくて、htpasswd コマンドで作ります。一旦パスワードファイルを消して、 htpasswd パスワードファイル名 ユーザー名 パスワード を実行してください。
補足
ご返答ありがとうございます。 手で書くのではないんですね。 >htpasswd パスワードファイル名 ユーザー名 パスワードを実行してください。 これはどうやって実行すればよろしいのでしょうか。 お手数お掛け致しますがよろしくお願い致します。
お礼
大変参考になりました。 ありがとう御座いました。