我创建了一个名为Database.php的类,用于使用Pear Db类与MySql数据库进行交互。

数据库.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):
  无法打开流:没有此类文件或
  目录在
  第2行上的/var/www/Avatar/Database.php
  致命错误:require_once():失败
  需要开放
  '/usr/share/pear/DB.php'
  (include_path ='。:/ usr / share / php:/ usr / share / pear')
  在/var/www/Avatar/Database.php中
  2号线


我不知道为什么会收到此错误。在phpinfo()中,它显示include_path .:/usr/share/php:/usr/share/pear .:/usr/share/php:/usr/share/pear

我正在使用php5,甚至尝试安装php-pear软件包,但仍然遇到相同的错误。
我不明白这里出了什么问题。有人能指出我正确的方向吗?

注意:我尚未使用sudo apt-get install php5安装php5。我已经使用Keryx应用程序下载了php5软件包。

最佳答案

看起来您没有安装DB软件包,请在命令提示符下尝试,执行

pear list


如果未安装DB软件包,则可以使用

pear install DB


example from documentation

关于php - 找不到 pear DB类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4483546/

10-09 00:44
查看更多