Php 找不到Pear DB类
我创建了一个名为Database.php的类,用于使用PEARDB类与MySql数据库交互 Database.phpPhp 找不到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
<?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?这是我的解决方案。谢谢!;)