Question

J'ai créé une classe appelée database.php pour interagir avec la base de données MySql en utilisant la classe poire 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;
    }
?>

Et j'appelle cette classe à partir d'un exemple de fichier 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();
    }
?>

Quand je lance test.php je reçois l'erreur suivante

  

Attention:   require_once (/usr/share/pear/DB.php):   pas flux ouvert: Aucun fichier ou   répertoire   /var/www/Avatar/Database.php sur la ligne 2   Fatal error: require_once (): Echec   ouverture requise   '/Usr/share/pear/DB.php'   (Include_path = ': / usr / share / php: / usr / share / pear')   en /var/www/Avatar/Database.php sur   ligne 2

Je ne sais pas pourquoi je reçois cette erreur. Dans phpinfo () il montre include_path .:/usr/share/php:/usr/share/pear .:/usr/share/php:/usr/share/pear

J'utilise php5 et j'ai même essayé d'installer package php-pear, je reçois toujours la même erreur. Je ne comprends pas ce qui ne va pas ici. Quelqu'un peut-il s'il vous plaît me diriger dans une direction.

Remarque: Je n'ai pas installé php5 en utilisant sudo apt-get install php5. J'ai téléchargé des paquets php5 en utilisant l'application Keryx .

Était-ce utile?

La solution

Looks vous n'avez pas installé package DB, essayez de commande rapide, faire

pear list

Si aucun paquet de DB est installé, vous pouvez installer avec

pear install DB

exemple de la documentation

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top