• ベストアンサー

PHP Auth認証ができない

今日は。 PEARのAuthを使って認証ページを作ろうとしているのですが、下記エラーがでてきて困ってます。環境はウインドウズXPです Fatal error: Class 'Auth' not found in C:\Program Files\Apache Group\Apache2\htdocs\samples\practice\myauth.php on line 15 15行目のソースは $auth=new Auth("DB",$params,"loginFunction",TRUE);です Authが無いのかなと思い require_once("Auth/Auth.php"); でエラーがでているか調べたのですが、エラーはでてないようです。 また、Authフォルダがあるかどうかも調べたのですが、C:\php\PEARにありました Fatal error: Class 'Auth' not foundをグーグルで調べてもよくわからないので困っています。 何かアドバイスがあればよろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • juri_a
  • ベストアンサー率50% (3/6)
回答No.2

自信は無いのですが… pearへのパスは、通ってますか? 一度、"myauth.php"と同じ場所に、"Auth.php" と "Auth"のフォルダを置いてみてはいかがでしょうか?

yorkies
質問者

お礼

juri_aさんアドバイスありがとうございます。 >自信は無いのですが… pearへのパスは、通ってますか? パスは通ってました。 require_once("DB.php"); の機能は問題なく使えるので多分パスは通ってると思います。 >一度、"myauth.php"と同じ場所に、"Auth.php" と "Auth"のフォルダを置い>てみてはいかがでしょうか? 試してみました。ついでにrequire_once("Auth/Auth.php");をコメントアウトしてみたんですがエラーメッセージは Fatal error: Class 'Auth' not found in C:\Program Files\Apache Group\Apache2\htdocs\samples\practice\myauth.php on line 15で変わりませんでした。 ありがとうございます

その他の回答 (2)

  • Rayderl
  • ベストアンサー率83% (40/48)
回答No.3

requireでエラーが出ずにクラス未定義とエラーが出るということは、意図したものと違うAuth.phpを読み込んでいたりはしませんか。 絶対pathで require_once("C:/php/PEAR/Auth/Auth.php"); のようにrequireしてみても結果は一緒でしょうか。

yorkies
質問者

お礼

Rayderlさんアドバイスありがとうございます。 解決しました。 原因は同じフォルダ内にauth.phpという空のファイルが存在していたからです。いつの間に作成したんだろう。 Rayderlさんの言うとおり、絶対path指定したのですが、結果は変わらず。 別のフォルダにソースをコピーし、テストしてみたら問題なく起動しました。 なので、フォルダ内に問題があるのかと思い、私が作成したauth.phpフィルを削除したらAuth認証ができるようになりました。 どうもありがとうございました。

  • gogo-tea
  • ベストアンサー率75% (25/33)
回答No.1

>Authが無いのかなと思い デフォルトで入ってましたっけ? 一応現在インストールされているパッケージを確認してみたらどうでしょうか? コマンドラインで pear list でインストールされているパッケージの一覧が表示されます。

参考URL:
http://pear.php.net/manual/ja/installation.cli.php
yorkies
質問者

お礼

gogo-teaさんアドバイスありがとうございます pear list試してみたんですが、Auth1.5.1が表示されていました あと、参考HP、PEARのHPは英語だけと思っていたのですが、日本語のページもあったんですね。 教えてくれてありがとうございます。

関連するQ&A

  • PEAR AUTH 認証エラーClass 'PEAR_Error' not found

    Fatal error: Class 'PEAR_Error' not found in E:\Program Files\xampp\php\PEAR\DB.php on line 946 アクセスすると上記のエラーが出ます。 以前まで認証できていたのですが何をいじったのか ログインフォームがでなくなりました。 環境は以下の通りです。 ApacheFriends XAMPP (Basispaket) version 1.6.8 Apache 2.2.9 MySQL 5.0.67 (Community Server) PHP 5.2.6 + PHP 4.4.9 + PEAR あまり理解していないので質問を質問で返す可能性がありますが よろしくお願いします。 *********************************************** <?php require_once("../../php/PEAR/Auth/Auth.php"); require_once("loginform.php"); $params = array( "dsn" => "mysqli://hoge:hoge@localhost/hoge", "table" => "test", "usernamecol" => "user", "passwordcol" => "pass", "cryptType"=>"md5", 'db_fields'=>"*" ); $authobj = new Auth("DB", $params, "loginFunction"); $authobj->start(); ?> ***************************************************

    • ベストアンサー
    • PHP
  • pear_info.phpが表示できません

    PCをサーバーにしてPHPの練習をしている初心者です。最近PEARをインストールしたのですが、機能しなくて困っています。試しにpear_info.phpを作ってブラウザで開くと下記の警告がでました。 ---------------------------------------------- <?php require_once("PEAR/Info.php");//←line 8 $info = new PEAR_Info(); $info->show(); ?> Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\pear_info.php on line 8 Fatal error: require_once() [function.require]: Failed opening required 'PEAR/Info.php' (include_path='.;C:\php5\pear') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\pear_info.php on line 8 かなりの時間を費やして原因を調べていたのですが、どうしても解決する事ができません。助言を頂けると非常にありがたいです。 php.iniのパス include_path = ".;c:/php/includes;C:/php/PEAR" また、phpinfoで Configuration File (php.ini) Path の項目は C:\WINDOWS となっています。 上記に記載したエラーで「include_path='.;C:\php5\pear'」と表示されている部分がありますが、C:\php5と言うフォルダは作っていません。C:\phpと言うフォルダならあります。 PCの環境  Windows XP  Apache  2.2.6  PHP 5.2.4

    • 締切済み
    • PHP
  • PEARでのAuth認証について

    ただいまPEAR入門を参考に勉強しているのですが 認証部分でつまずいてしまっています。 どなたか御教授いただけませんでしょうか。 簡単なログイン認証をするためにサンプル通りのコードを 作って表示テストを行うものなのですが 認証できたら「認証済みです」 できていなければ「ID/パスワードが違います」 と表示されるようなものです。 IDもパスワードもきちんと入れているのですが認証できないため 悩んでいます。 以下そのコードを書きますので助言いただけるとありがたいです。 *contents.php* <?php require_once("Auth.php"); function loginFunction($usr, $status){ require_once("loginForm.php"); } $params = array( "dsn" => "mysqli://pear:pass@localhost/pear", "table" => "auth", "usernamecol" => "username", "passwordcol" => "password"); $myAuth = new Auth("DB", $params, "loginFunction"); $myAuth -> start(); if($myAuth -> getAuth()){ print("認証済です。"); } ?> *loginForm.php* <?php switch($status){ case AUTH_IDLED : case AUTH_EXPIRED : $err = "ログイン期限が切れています。再ログインしてください。"; break; case AUTH_WRONG_LOGIN : $err = "ユーザID/パスワードが間違っています。"; break; } ?> <html> <head> <title>ログインページ</title> </head> <body> <form method="POST" action="<?php print($_SERVER['PHP_SELF']) ?>"> <table border="0"> <tr> <th align="right">ユーザID:</th> <td><input type="text" name="username" size="15" maxlength="20"></td> </tr> <tr> <th align="right">パスワード:</th> <td><input type="password" name="password" size="15" maxlength="20"></td> </tr> <tr> <td colspan="2"> <input type="submit" value="ログイン"> </td> </tr> </table> <font color="red"><?php print($err); ?></font> </form> </body> </html>

    • ベストアンサー
    • PHP
  • PEARのインストール

    初めまして。今日からphpの勉強を始めた超・初心者です。 PEARのインストールがうまくいかず、下記のエラーが出ます。他の回答も試してみましたが、うまくいきません。 Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\phpbook\pear_info.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'PEAR/Info.php' (include_path='.;c:\php\includes;c:\php\PEAR;') in C:\Program Files\Apache Group\Apache2\htdocs\phpbook\pear_info.php on line 2 apache2.0.63 php5.1.6 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • XAMPPでPEARのAuthが動作しない

    XAMPPでPEARのAuthが動作しません。 XAMPPのバージョンは1.7.4です。 使ったサンプルは、Pearのサイトに載っている以下のサンプルです。 (認証の選択的な使用を試してみました。) http://pear.php.net/manual/ja/package.authentication.auth.intro.php プログラムを置いた場所は C:\xampp\htdocs\hoge です。 ●考えられる原因 1.XAMPPでPEARのインストールが出来ていない 2.SQLからデータを取得するときに何らかのエラーが起きている 1.の根拠として、go-pear.batを動かした時にエラーが出てインストールできなかったので phpのコードには require_once 'C:\xampp\php\PEAR\Auth.php'; のように絶対パスで指定している。 ※ただしphpを動かした時にエラーが出ません。(notisは消してます) インストールがうまくいかない解決方法として以下 を試してみましたが結局、うまくいきませんでした。 http://ameblo.jp/phpwalker/entry-10422457243.html 2.の根拠として、SQLのテーブルにログイン用の値が見つからない たぶんこれだと思うのですが、webauthというテーブルがありました。 しかし中には1行目にnameとpassというセルと 2行目にはxamppとwamppとうセルがありました。 入力したパスワードなどがありませんでした。 SQLは初心者なのでデータをテーブル構造で保存するものという認識しかありません。 正しい検証方法も出来たら教えてください。 PEARのAuthが動作しない原因はなんでしょうか? ご教授、お願いします。

    • 締切済み
    • PHP
  • PEAR auth で認証ができません

    PHP初心者で、PEAR Authによるsqliteを使用して認証のテストを行っています。 コード: <?php require_once "Auth.php"; function loginFunction() { echo "<form method=\"post\" action=\"test_auth.php\">"; echo "<input type=\"text\" name=\"username\">"; echo "<input type=\"password\" name=\"password\">"; echo "<input type=\"submit\">"; echo "</form>"; } $dsn = array( 'phptype' => 'sqlite', 'database' => 'test.sqlite', 'mode'=>'0644' ); $options = array( 'dsn' => $dsn, 'table'=>"schedule_usr", 'usernamecol'=>"username", 'passwordcol'=>"password" ); $a = new Auth("DB", $options, "loginFunction"); $a->start(); if ($a->checkAuth()) { print("認証しました。"); }else{ print("認証していません。")); } ?> エラーなどは表示されませんが、「認証しました」が表示されません。 test.sqliteではschedule_usrテーブルに username=test password=1111を 入力してあります。パスワードはmd5()で変換したものを入れてありますが、 「認証していません」が表示されてしまいます。 コード自体に問題があるのでしょうか? ご教示願います。

    • ベストアンサー
    • PHP
  • require Auth.php

    require 'Auth/Auth.php'; の動作について教えてください。 サンプルソース a.php に、 「require 'Auth/Auth.php';」と冒頭に記述してありました。 PEARだと思うのですが、結局この記述は、 a.phpに、 (1)Auth.phpの内容を取り込む? (2)Auth.phpの内容を継承する? どちらの解釈の方が正しいのでしょうか? 今までrequire だと、指定したphpの内容を取り込む((1)番だと)だと認識していました。 以下ソースのように動作してると思っています。Auth.phpも同じ動作と思っていいものなのでしょうか。 ・test.php <?php echo "start!!\n"; include("include.php"); echo "end!!\n"; ?> ・include.php <?php echo "include start!!\n" ?> ●実行結果 start!! include start!! end!!

    • ベストアンサー
    • PHP
  • PHP5 DB_DataObjectクラスを教えて

    PHP5 PEAR入門初心者です。 ただいま DB_DataObjectクラスを勉強中ですがエラーがでて困っています。 PHP ver5.2.4 xampp ver1.6.4 PEAR 1.4.1 参考文献は独習PHPです。 sqlite2 データベースsqlite(chap6.SQLite)の内容ははsqliteManager表示して確認しています。 内容は以下のとおりです。 エラー内容DB_DataObject: ERROR: autoload:Could not find class DataObjects_Book using class_location value DB_DataObject: ERROR: factory could not find class from book Fatal error: Call to undefined method DB_DataObject_Error::selectAdd() in C:\xampp\htdocs\dokushuu\find.php on line 7 find.phpの内容↓ <?php require_once('DB/DataObject.php'); $config=parse_ini_file(dirname(__FILE__).'/myConfig.ini',TRUE); $options=&PEAR::getStaticProperty('DB_DataObject','options'); $options=$config['DB_DataObject']; $book=DB_DataObject::factory('book'); $book->selectAdd(); $book->selectAdd('title'); $book->published='翔泳社'; $book->orderBy('isbn ASC'); print($book->find().'件が検索されました。<br />'); while($book->fetch()) { print($book->title.'<br />'); } ?> myConfig.iniの設定内容↓ [DB_DataObject] database="sqlite2://localhost/C:/xampp/htdocs/dokushuu/sample/samples/chap6/chap6.sqlite" schema_location="C:/xampp/htdocs/dokushuu/sample/samples/chap6" class_location="C:/xampp/htdocs/dokushuu/sample/samples/chap6" require_prefix=C:/xampp/htdocs/dokushuu/sample/samples/chap6/ class_prefix=DataObjects_ debug=3 以上です宜しくお願い致します。

    • 締切済み
    • PHP
  • 「PEAR::Auth認証」の結果による判別について

    現在、PEAR::Authを利用して認証処理を作成しております。 質問させていただきたい内容は、 AuthクラスのgetAuthメソッドについてです。 まず、Authクラスのインスタンスを生成し、 start()メソッドを実行して認証を行い、 その認証の結果をgetAuthメソッドによって 取得しております。 次に、getAuthメソッドにより得た結果を IF文で判別して、結果がTRUEの場合は処理を続行し、 結果がFALSEの場合はログイン画面に戻るように 制御しようとしたところ、 FALSEの場合の制御が思うように動作しませんでした。 以下に、ソースを記述いたします。 login_check.php ************************************************* <?php require_once("Auth/Auth.php"); $params = array( "dsn" => "pgsql://postgres:postgres@win/db", "table" => "test_table", "usernamecol" => "test_user", "passwordcol" => "test_passwd", "cryptType" => "none", ); // インスタンス生成 $auth = new Auth("DB", $params , "LoginFuntion"); // 認証開始 $auth->start(); // 結果を判別 if (!$auth->getAuth()) { // 結果がFALSEだったらログイン画面に戻る header("Location: ./login.php"); exit; } else { // 結果がTRUEであれば処理を続行 ・ ・ ・ } ?> $auth->getAuth()の使い方が違うのかも知れませんが、 Authのソースを見ても分かりませんでした。 どなたか、「PEAR::Auth認証」の結果による判別に ついてお教え下さい。。。 ※今回は、ログイン画面とチェックPHPを分けております。 ログイン画面はHTMLで、チェックPHPにAuthを利用しております。 この利用の仕方が既に間違っているのでしょうか? 併せてお教えいただければと思います。

    • 締切済み
    • PHP
  • XAMPP1.77でPEARが見れない。

    XAMPP1.77でPEARが見れない。 最新版であるXAMMP1.77についてる pearを使いたいのですがうまく行きません。 現在できていること ・pearを使わないPHPファイルの動作 ・コマンドpear listでpearの一覧が出る。 環境 ・windows 7 64bit ・XAMMP1.77 最新版 ------------------------------------ できていないこと。 ●pearinfoを見ることができない。 pearの情報を見るために 以下のコードをコピペしました。 <?php require_once 'PEAR/Info.php'; $info = new PEAR_Info(); $info->show(); ?> ソース元:http://allabout.co.jp/gm/gc/47461/2/ そもそもPEARフォルダの中にInfo.phpが無いので、 下のようなエラーが出ます。 Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\test\pearinfo.php on line 2 そこで、Info.phpを検索をかけると、 VersionControl\SVN\Info.phpというのだけ見つかり、 そいつをrequireすると、 Fatal error: Class 'VersionControl_SVN' not found in C:\xampp\php\PEAR\VersionControl\SVN\Info.php on line 121 というエラーがでます。 デバッグで一行ずつコードを走らせると、 Info.phpに入りますが、 その中にあるVersionControl_SVNの所で止まります。 XAMPPに最初から入ってるPEARが特殊?なので よくわからないですが、この場合どう対処すればいいでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう