Груша DB класс не найден - PullRequest
       17

Груша DB класс не найден

0 голосов
/ 19 декабря 2010

Я создал класс Database.php для взаимодействия с базой данных MySql с использованием класса Pear Db.

database.php

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

class DataBase
{

    private $dsn = 'mysql://root:xxxxxx@localhost/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();
    }
?>

Когда я запускаю test.php, я получаю следующую ошибку

Внимание: require_once (/usr/share/pear/DB.php): не удалось открыть поток: нет такого файла или каталог в /var/www/Avatar/Database.php в строке 2 Неустранимая ошибка: require_once (): ошибка требуется открытие '/Usr/share/pear/DB.php' (Include_path = ': / USR / доли / PHP: / USR / доли / груша') в /var/www/Avatar/Database.php на строка 2

Я не знаю, почему я получаю эту ошибку. В phpinfo () он показывает include_path .:/usr/share/php:/usr/share/pear .:/usr/share/php:/usr/share/pear

Я использую php5, и я даже пытался установить пакет php-pear, но я получаю ту же ошибку. Я не понимаю, что здесь не так. Может кто-нибудь, пожалуйста, укажите мне в правильном направлении.

Примечание: Я не установил php5 с помощью sudo apt-get install php5. Я скачал пакеты php5 с помощью приложения Keryx .

1 Ответ

4 голосов
/ 19 декабря 2010

Похоже, вы не установили пакет БД, попробуйте в командной строке, выполните

pear list

Если пакет DB не установлен, вы можете установить его с помощью

pear install DB

пример из документации

...