Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Error al llamar a GestorBD desde otra carpeta

Estas en el tema de Error al llamar a GestorBD desde otra carpeta en el foro de Frameworks y PHP orientado a objetos en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/03/2009, 04:45
 
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!
  #2 (permalink)  
Antiguo 06/03/2009, 10:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Error al llamar a GestorBD desde otra carpeta

Hola xayide,

El problema es el path a tu libreria ADODB, si tu mueves de folder vas a tener que especificar la nueva ruta al ADODB.

Saludos
  #3 (permalink)  
Antiguo 08/03/2009, 21:41
 
Fecha de Ingreso: diciembre-2006
Mensajes: 60
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Error al llamar a GestorBD desde otra carpeta

el archivo que incluye al otro hace que teoricamente se fucionen en linea, lo que hace que el archivo incluido esté ubicado virtualmente en la carpeta del archivo que lo incluyó, por ejemplo si creas un archivo
/www/index.php
que incluya:
/www/clases/clase.php
el cual incluira un
/www/clases/clase2.php
el archivo clase.php no encontrara clase2.php almenos que des la carpeta completa del archivo =)

no se si me explico :P

saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:51.