Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/03/2009, 04:45
xayide
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 18 años, 2 meses
Puntos: 0
Error al llamar a GestorBD desde otra carpeta

Hola a todos!

Tengo una base de datos postgres a la que llamo desde un programa php. (Todo en Ubuntu). Para la gestión de esta BD tengo una clase que se llama GestorBD. Utiliza el patrón singleton y crea una instancia de conexión. Cuando llamo a GestorBD desde algún otro fichero php que se encuentra en la misma carpeta, no me da ningún problema. Pero si le llamo desde otra ubicación me da el siguiente error:

Warning: include_once(./adodb/adodb.inc.php) [function.include-once]: failed to open stream: No such file or directory in /var/www/appcorrector/GestorBD.php on line 2

Warning: include_once() [function.include]: Failed opening './adodb/adodb.inc.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/appcorrector/GestorBD.php on line 2

Fatal error: Call to undefined function ADONewConnection() in /var/www/appcorrector/GestorBD.php on line 9

El fichero GestorBD es este:
Código PHP:
<?php
include_once('./adodb/adodb.inc.php');

class 
GestorBD {
    private 
$conexion;   
    private static 
$instancia=NULL

    private function 
__construct() {
        
$this -> conexion = &ADONewConnection('postgres'); 
        
$this -> conexion->Connect('localhost:5432''miusu''mipassw''miBD');
    }

    static public function 
getInstance(){ 
        if (
self::$instancia == NULL) {
                    
self::$instancia = new GestorBD();
            }
               return 
self::$instancia
    }    

    public function 
ejecuta($consulta){
        
$rs $this -> conexion->Execute($consulta);
        return (
$rs);
    }
    public function 
ejecutaTrans($vectorconsultas){
        
$salir=false;
        
$this->conexion->StartTrans();
        for(
$i=0; ($i<count($vectorconsultas) && !$salir); $i += 1){
            
$rs=$this->conexion->Execute($vectorconsultas[$i]);
        }
        
$this->conexion->CompleteTrans();
        
    }    
    
}     
?>
Y llamo a GestorBD desde el fichero GestorUsuarios que está dentro de la carpeta "Usuarios":

Código PHP:
<?php
require('../GestorBD.php');

class 
GestorUsuarios{
    private 
$gbd;

    function 
__construct() {
        
$this-> gbd GestorBD::getInstance();
    }
...

?>
Alguien sabe por qué no se le puede llamar a GestorBD desde otra carpeta? Por qué no da ningún error con el adodb.inc.php si están en la misma ubicación?

Muchas gracias y un saludo!