Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 找不到Pear DB类_Php_Mysql_Ubuntu_Pear_Database Abstraction - Fatal编程技术网

Php 找不到Pear DB类

Php 找不到Pear DB类,php,mysql,ubuntu,pear,database-abstraction,Php,Mysql,Ubuntu,Pear,Database Abstraction,我创建了一个名为Database.php的类,用于使用PEARDB类与MySql数据库交互 Database.php <?php require_once('DB.php'); require_once('cException.php'); class DataBase { private $dsn = 'mysql://root:xxxxxx@localhost/avatar'; private $conn; //Constructor func

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

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;
    }
?>
<?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调用这个类

test.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;
    }
?>
<?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时,我得到以下错误

警告: 需要一次(/usr/share/pear/DB.php): 无法打开流:没有此类文件或 目录在 /var/www/Avatar/Database.php,第2行 致命错误:require_once():失败 需要打开 “/usr/share/pear/DB.php” (include_path=':/usr/share/php:/usr/share/pear') 在上的/var/www/Avatar/Database.php中 第2行

我不知道为什么会出现这个错误。在phpinfo()中,它显示
包含路径。:/usr/share/php:/usr/share/pear.:/usr/share/php:/usr/share/pear

我使用的是
php5
,我甚至尝试安装
phpear
软件包,但还是遇到了同样的错误。 我不明白这里怎么了。谁能给我指个正确的方向吗


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

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

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

pear install DB

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

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

pear install DB

非常感谢。:)。这意味着PEARDB类不是PHP5附带的?再次感谢您的快速回复。@Searock--不太可能。在这个包被取代之间,是否建议我停止使用Pear DB类并切换到MDB2?这是我的解决方案。谢谢!;)非常感谢。这意味着PEARDB类不是PHP5附带的?再次感谢您的快速回复。@Searock--不太可能。在这个包被取代之间,是否建议我停止使用Pear DB类并切换到MDB2?这是我的解决方案。谢谢!;)