2010-12-19 4 views
0

Pear Db 클래스를 사용하여 MySql 데이터베이스와 상호 작용하는 Database.php라는 클래스를 생성했습니다.배 DB 클래스가 없습니다.

Database.php

<?php 
require_once('DB.php'); 
require_once('cException.php'); 

class DataBase 
{ 

    private $dsn = 'mysql://root:[email protected]/avatar'; 
    private $conn; 


    //Constructor 
    function __construct() 
    { 
     global $conn; 
     $this->conn = DB::connect($dsn); 
     if(DB::isError($conn)) 
     { 
      throw new DatabaseConnectionException(); 
     } 
    } 

    //destructor 
    function __destruct() 
    { 
     $this->conn->disconnect(); 
    } 

    public function select($query) 
    { 
     $conn->setFetchMode(DB_FETCHMODE_ASSOC); 
     $result = & $conn->query($query); 

     if(DB::isError($result)) 
     { 
      return new SelectCommandException($result->getMessage()); 
     } 

     return $result; 
    } 

    static public function instance() 
    { 
     static $objDB; 

     if(! isset($objDB)) 
     { 
      $objDB = new DataBase(); 
     } 

     return $objDB; 
    } 
?> 

그리고 내가 테스트를 실행 test.php

test.php

<?php 

ini_set('display_errors', 1); 
ini_set('log_errors', 1); 
ini_set('error_log', dirname(__FILE__) . '/error_log.txt'); 
error_reporting(E_ALL); 


    require_once 'Database.php'; 

    try 
    { 
     $db = DataBase::instance(); 
    } 
    catch (DatabaseConnectionException $ex1) 
    { 
     echo $ex1->toString(); 
    } 

    try 
    { 
     $sql = "Select * from register"; 
     $result = $db->select($sql); 
     var_dump($result); 
    } 
    catch (SelectCommandException $ex2) 
    { 
     echo $ex2->toString(); 
    } 
?> 

샘플 파일에서이 클래스를 호출하고 있습니다. PHP는 다음과 같은 오류가 발생합니다

Warning: require_once(/usr/share/pear/DB.php): failed to open stream: No such file or directory in /var/www/Avatar/Database.php on line 2 Fatal error: require_once(): Failed opening required '/usr/share/pear/DB.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/Avatar/Database.php on line 2

왜이 오류가 발생하는지 알 수 없습니다. phpinfo()에서 include_path .:/usr/share/php:/usr/share/pear .:/usr/share/php:/usr/share/pear

나는 php5을 사용하고 있으며, 심지어는 패키지를 설치하려고 시도했지만 여전히 같은 오류가 발생합니다. 나는 무엇이 잘못되었는지 이해하지 못한다. 누군가가 올바른 방향으로 나를 가리킬 수 있습니까?

참고 :sudo apt-get install php5을 사용하여 php5를 설치하지 않았습니다. Keryx 응용 프로그램을 사용하여 php5 패키지를 다운로드했습니다.

답변

4

하면, DB 패키지를 설치 명령 프롬프트에서 시도 DB의 어떤 패키지가 설치되어 있지 않은 경우

pear list 

을하지 않았다 같은데, 당신은

pear install DB 

example from documentation

+0

감사로 설치 할 수 있습니다 많이. :). 즉, PHP DB 클래스는 PHP 5와 함께 제공되지 않습니다. 빠른 답장을 보내 주셔서 다시 한번 감사드립니다. – Searock

+0

@Searock - http://pear.php.net/package/DB - 가능성은 희박합니다. 이 패키지 사이에 ** 대체 ** – ajreal

+0

그래서 Pear DB 클래스 사용을 중단하고 MDB2로 전환하는 것이 좋습니다? – Searock

관련 문제