• ベストアンサー

[Debian] MySQLとPHPを用いて簡易的なWEB認証画面の作成

学校の課題でMySQL、PHP、Apache2を用いてウェブの認証画面が作成する必要があります。 サーバーのOS は Debian Linux を利用しております。 http://www.debianhelp.co.uk/mysqlapache.htm 上記サイトを見ながら、手順に従ってやろうと思ったのですが、最初の apt-get で躓きました。 libapache2-mod-php libapache2-mod-auth-mysql この2つのファイルが見つからずにインストールができません…。 また、上記サイトの説明と私が持っているApache2の参考書だと説明が異なり、困っております。 参考書ではmod_auth_mysqlをコンパイルする必要があるとなっているのですが…。 どなたか、MySQL,PHP,Apache2を利用したWeb認証画面の作成方法で、参考となるサイトがありましたら、ご教授願います。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.7

.htaccessファイルにある >AuthMySQL_Encryption_Types Crypt_DES を AuthMySQL_Encryption_Types Plaintext Crypt_DES に変えるとはじかれないようになったりしませんか? ちなみにApacheのログに何か出力されていませんか?

umizaru76jp
質問者

お礼

ありがとうございます!! ビンゴでした!! Plaintextを追加したら、できました!! ただ、Plaintextでパスワードをやり取りするのは不本意なのですが、DESで暗号化したいのですが…これは何か別モジュールが必要なのでしょうか…。

その他の回答 (7)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.8

MySQLにDES_ENCRYPT()という関数があります。 ただし、SSLが組み込まれている必要があります。 MySQL 4.1 リファレンスマニュアル 6 MySQL SQL言語リファレンス 6.3 SELECT 節と WHERE 節で使用する関数 6.3.6 その他の関数 6.3.6.2 その他の各種関数 http://dev.mysql.com/doc/refman/4.1/ja/miscellaneous-functions.html

umizaru76jp
質問者

お礼

ありがとうございます。頂いた参考URLをもとに取り組んでみたいと思います。 今回は本当にありがとうございました。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.6

>Restart Apache 2 > >#apache2ctl restart と書いてあるように、apache2.confを設定を変更した後Apacheの再起動をしていますか? ><Directory "/var/​www/members/">​ >Options +Indexes FollowSymlinks MultiViews >AllowOverride AuthConfig Options FileInfo Limit >Order allow,deny >Allow from all ></Directory> これは、httpd.conf(apache2.conf)で設定した内容を.htaccess ファイル内で設定した内容で上書きするための設定をしています。 ところで"/var/​www/members/"と空白が入っているのですが実際にも空白が入っているのですか?

umizaru76jp
質問者

お礼

お蔭様で一歩一歩近づいている気がします。 本当にありがとうございます。

umizaru76jp
質問者

補足

いつも回答ありがとうございます。 Apacheの再起動は行いました。また空白の件ですが、実際のものには入っておりませんでした。 サーバー自体を再起動した後、稼動し始めましたが、MySQLで設定したユーザ名、パスワードを入力してもはじかれてしまいます。 > Auth_MySQL_Info localhost 'auth_user' 'password' この部分の 'auth_user' と 'password'ですが、参考書を見るとこのusername+passwordの組み合わせは他のシステムのユーザアカウントと同じであってはならないとなっておりますが、それが原因なのでしょうか…。うっかり同じにしてしまいました…。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.5

>2.したいこと >質問とちょっと変わるのですが、MySQLにて、ウェブへログインする際のユーザID,パスワード管理を行いたいです。(PHPは不要) 質問の所にご自分でお書きになられたURLのページにデータベースの作成、テーブルの作成、ユーザのテーブルへの追加、Apacheでの設定方法と全て書いてあると思うのですが。

umizaru76jp
質問者

補足

再度失礼いたします。 http://www.debianhelp.co.uk/mysqlapache.htm 必要モジュールもインストし、基本的に上記手順に従って設定を行いました。 ■ MySQL設定内容 ----------------------------------------------- CREATE TABLE wwwusers ( username varchar(25) NOT NULL primary key, passwd varchar(25) NOT NULL ); insert into wwwusers (username, passwd) values ('username' , 'password'); ----------------------------------------------- ■ /etc/apache2/apache2.conf設定内容 下記をファイル最下部に追加しました。 -------------------------------------------------- Auth_MySQL_Info localhost 'auth_user' 'password' Auth_MySQL_General_DB wwwusers <Directory "/var/www/members/"> Options +Indexes FollowSymlinks MultiViews AllowOverride AuthConfig Options FileInfo Limit Order allow,deny Allow from all </Directory> --------------------------------------------------- ※'auth_user''password'は私が grant privileges on ...の記述をしたときに 指定した物を記述しています。 ※参考書を見るとhttpd.confへ下記2行を追記するよう書いてあり、どちらが正しいのか混乱しています。 Auth_MySQL_Info localhost 'auth_user' 'password' Auth_MySQL_General_DB wwwusers ■ .htaccess ファイル設定 .htaccess ファイルは上記で指定した/var/www/members/の下に置きました。 下記内容は上記URLとは別に参考書も参考にしました。 -------------------------------------------- AuthMYSQL on AuthName "Members Only" AuthType Basic require valid-user AuthMySQL_DB auth AuthMySQL_Password_Table wwwusers AuthMySQL_Username_Field username AuthMySQL_Password_Field passwd AuthMySQL_Empty_Passwords off AuthMySQL_Encrypted_Passwords on AuthMySQL_Encryption_Types Crypt_DES AuthMySQL_Scrambled_Passwords off AuthMySQL_Authoritative on AuthMySQL_Non_Persistent off --------------------------------------------- 設定後、ブラウザで指定したフォルダにアクセスしたら、普通にアクセスできてしまいました…。 一体どこに不備があるのでしょうか…。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.4

>学校の課題でMySQL、PHP、Apache2を用いてウェブの認証画面が作成する必要があります。 認証にmod_auth_mysqlモジュールを使用しようとしているみたいですが、認証としてはこのモジュールだけで済んでしまいますからPHPを使用する必要はないですよね? つまり「MySQL、PHP、Apache2を用いて」には当てはまらないですよね? 課題としては、PHPでユーザ名(ID)、パスワードを入力する画面を表示し、入力されたユーザ名(ID)、パスワードに一致するものがMySQLのデータベース上に存在するかPHP自体でMySQLにアクセスして認証を行い、その結果を画面に表示するという事なのではないのでしょうか? そういうものが求められているなら、下記URLが参考になるかもしれません。 ただし、使用しているのがPostgreSQLですが。 STACK* >IT技術情報>php>PHP第3回:PHP応用  6.セッション管理  ■認証に利用する  http://www.stackasterisk.jp/tech/php/php03_06.jsp

umizaru76jp
質問者

補足

失礼しました。確認したら、PHPは要件に含まれていませんでした。 MySQLにてユーザID,パスワード管理だけを行うことになります。

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.3

こんばんは。 Debian/sarge を使っています。 apt-cache コマンドでパッケージ検索してみました。 参考にしてください。 # apt-cache search mod-php libapache-mod-php4 - server-side, HTML-embedded scripting language (apache 1.3 module) libapache2-mod-php4 - server-side, HTML-embedded scripting language (apache 2.0 module) # apt-cache search mod-auth libapache2-mod-auth-kerb - Apache2 module for Kerberos authentication libapache2-mod-auth-mysql - Apache 2 module for MySQL authentication libapache2-mod-auth-pam - module for Apache2 which authenticate using PAM libapache2-mod-auth-pgsql - Module for Apache2 which provides pgsql authentication libapache2-mod-auth-plain - Module for Apache2 which provides plaintext authentication libapache2-mod-auth-sys-group - Module for Apache2 which checks user against system group

umizaru76jp
質問者

お礼

apt-cache で出てきた結果からapt-get を行ったら、module のインストができました。ありがとうございました。

  • nebel
  • ベストアンサー率37% (117/308)
回答No.2

ソースから入れるのであれば、Debianのパッケージ管理システムの恩恵にあずかれなかったり、問題が生じたりする可能性があります。 まぁ稼働後にトラブルがあっても構わない気概があれば別に止めはしませんが。 >#apt-get install libapache2-mod-php mysql-server php4-mysql libapache2-mod-auth-mysql まず、この部分ですが、パッケージ名が一部間違ってます。 libapache2-mod-php → libapache2-mod-php4 libapache2-mod-auth-mysqlは、上記パッケージとの兼ね合いで依存関係に問題があってクリアできずにインストールできていないのかもしれません。 必要なパッケージに関しては、うまくいかないときは、apt-cache等でパッケージ検索してみることをお勧めします。 また、質問するときには、 1.環境 2.したいこと 3.何がどううまくいかないのか を具体的に書かれることをお勧めします。 apache2が必須であることはわかりますが、phpのバージョンはどうでもいいのでしょうか? など、本人には自明でも、質問を読んでいる側からはわからないことも多々あります。 また、インストールできないとは、どういう状況でしょうか? apt-get install を実行したときにエラーがでてインストールできないのでしょうか? 実際にエラーメッセージが表示されているのであれば、エラーメッセージを一字一句間違えなく書かれると、 回答するほうは何が問題かはっきりわかります。 (それでわからなければログを教えて欲しいとか、状況を教えて欲しいとかいろいろ補足事項を尋ねるでしょう)

umizaru76jp
質問者

補足

エラーメッセージはE: Couldn't find package libapache2-mod-php でしたが、ご回答頂いたようにファイル名の変更、またapt-cache でファイルを検索して行ったら、モジュールのインストはできました。失礼いました。 1.環境 VMwareに Debian をインストして使っております。現在は基本的にデフォルト設定の上に上記4つのモジュールをインスト状態です。 2.したいこと 質問とちょっと変わるのですが、MySQLにて、ウェブへログインする際のユーザID,パスワード管理を行いたいです。(PHPは不要)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

apache2のmod_auth_mysqlはくせがあって面倒ですね。 apache1.3系の方は結構楽チンなんですけど。 ダウンロードは以下 http://sourceforge.net/projects/modauthmysql/ 解説は以下あたり参考に http://www.nognog.com/techmemo/Apache2_MySQL_Auth_HOWTO.php http://srvhat09.anaheim-eng.com/modules/tinyd4/index.php?id=4 よほどのことがないかぎり一発でセットアップできる ことはないと思います。 トライアンドエラーでがんばってください

umizaru76jp
質問者

お礼

回答ありがとうございます。 >apache2のmod_auth_mysqlはくせがあって面倒ですね。 どこかのサイトにも記載ありました…。できればApache1.3系にしたいのですが、Apache2が要件の1つになっているので…。 何とか参考サイトをもとに Try and Error で頑張って見ます。

関連するQ&A